创建数据库
CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET utf0 COLLATE utf8_icelandic_ci;
查看数据库定义(数据库目录)
SHOW CREATE DATABASE db_name\G;
删除数据库
DROP DATABASE db_name;
一个数据库就是MySQL数据目录里的一个目录,这个目录主要用于存放对象,如表,视图和触发器。
更改数据库全局属性(全局属性只包括默认字符集和排序规则)
ALTER DATABASE [db_name] [CHARACTER SET charset] [COLLATE cpllation]
存储引擎:(InnoDB和MyISAM)
InnoDB:具备外键支持功能的事务处理引擎
MyISAM:主要的非事务处理存储引擎
数据回归:确认MySQL server开启了binlog,之后登录mysql查看binlog,生成sql,确认生成的sql语句是删除的,则生成回滚。
为表指定要用的存储引擎(内建的默认引擎是InnoDB)
Create TABLE mytable(
name CHAR(20),
sex ENUM('F','M')
) ENGINE = MEMORY;
查看表用的哪种引擎
show create table t\G;
Alert table db_name ENGINE = InnoDB;
根据其他表或查询结果创建表
CREATE TABLE new_tb1_name LIKE tb1_name;
INSERT INTO new_tb1_name SELECT * FROM tb1_name [WHERE sss=ss];
AS 命名别名
创建索引
ALTER TABLE tb1_name ADD INDEX index_name(index_columns);
其中,tb1_name是要添加索引的那个表的名字,index_columns是要进行索引的列(如果索引要索引多个列,需要使用逗号隔开)。索引名index_name是可以选的。如果没有指定它,那么MySQL会根据地一个索引列的名字选取一个名字。
Memory表的索引默认索引类型是HASH,散列索引对于精确值的查询速度非常快,如果用于范围比较,散列索引效果没那么理想,最好创建一个BTREE索引来代替,索引定义里添加USING BTREE子句:
CREATE TABLE namelist
{
id INT NOT NULL,
name CHAR(100),
INDEX(id) USING BTREE,
ENGINE = MEMORY;
}
删除索引
DROP INDEX index_name ON tb1_name;
DROP INDEX 'PRIMARY' ON tb1_name;
等效于下面:
ALTER TABLE tb1_name DROP INDEX index_name;
ALTER TABLE tb1_name DROP PRIMARY KEY;
ALTER TABLEW万能型语句
能更改存储引擎,创建和删除索引等。
MyISAM表不具备事务安全性,但是你有一个应用程序需要事务处理功能,可以改用InnoDB。
ALTER TABLE 例子:
更改列的数据类型
- ALTER TABLE mytb1 MODIFY i MEDUMINT UNSIGNED;
- ALTET TABLE mytb1 CHANGE old_name new_name MEDIUMINT UNSIGNED;//更改名字和更改结构,名字若不改,写成原来的就可以。
- 注!!!:
- 更改数据类型,可以提高多表连接(它对两个表的列进行比较)的查询效率。
- 索引经常可用于两个相似列类型之间的连接比较,但如果这两个列的类型完全相同的话,比较速度会更快。
- 如CHAR(10)和CHAR(15),不如都是CHAR(15)快
让表改用另一种存储引擎
- ALTER TABLE tb1_name ENGINE = engine_name;//名字不区分大小写
- 注!!!:
- 引擎里面只有InnoDB支持外键,其他引擎不支持,所以在将表的引擎从InnoDB更改为其他引擎时,外键不再存在。
- MEMORY表存储在内存中,在服务器退出时会消失。
重新命名表
- ALTER TABLE tb1_name RENAME TO new_tb1_name;
- RENAME TABLE tb1_name TO new_tb1_name;
- 只有RENAME能更改多个表名:
- RENAME TABLE t1 TO tmp,t2 TO t1, tmp TO t2;//更改了两个表名
- 特别注意:(表名前对数据库进行了限定则意味着将表从一个数据库移到另一个数据库)
- ALTER TABLE sampdb.t RENAME TO test.t;
- RENAME TABLE sampdb.t TO test.t;
元数据即有关数据库的信息与它里面的各种对象
各种SHOW语句。
SHOW COLUMNS FROM student LIKE 's%';//把student表里面名字以“s“打头的所有列显示出来。
显示数据库的CREATE DATABASE语句:
SHOW CREATE DATABASE db_name;
列出默认数据库或给定数据库里的表:
SHOW TABLES FROM DB_NAME;
显示表里的列或索引信息。
SHOW COLUMNS FROM tb1_name;
SHOW INDEX FROM tb1_name;