Mysql 基础操作
查看Mysql版本
查看mysql支持的存储引擎
查看数据库的默认编码
1
| SHOW VARIABLES LIKE 'character_set_database';
|
数据库的基本操作
查看当前所有存在的数据库
创建数据库
1 2
| CREATE DATABASE <database_name>;
|
查看创建好的数据库的定义
1
| SHOW CREATE DATABASE test_db\G
|
删除数据库
1 2
| DROP DATABASE <database_name>;
|
使用数据库
数据表的基本操作
创建数据表
表的名称,不区分大小写,不能使用 SQL
语言中的关键字,如 DROP
、ALTER
、INSERT
等
1 2 3 4 5 6 7
| CREATE TABLE tb_emp1 ( id INT(11), name VARCHAR(25), deptId INT(11), salary FLOAT );
|
使用主键约束
单字段主键
在定义列的时候指定主键
1 2 3 4 5
| 字段名 数据类型 PRIMARY KEY [默认值] # 例如:CREATE TABLE tb_tmp1 ( id INT(11) PRIMARY KEY );
|
在定义完所有列之后指定主键
1 2 3 4 5
| CREATE TABLE tb_emp1 ( id INT(11), PRIMARY KEY(id) );
|
多字段联合主键
主键由多个字段联合组成
1 2 3 4 5 6 7 8
| PRIMARY KEY [字段1, 字段2, ..., 字段n] # 例如: CREATE TABLE tb_emp1 ( id INT(11), deptId INT(11), PRIMARY KEY(id,deptId) );
|
使用外键约束
外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性、完整性。
字表的外键必须关联主表的主键
1 2 3 4 5 6 7 8
| [CONSTRAINT <外键名>] FoREING KEY 字段1 [, 字段2,...,字段n] REFERENCES <主表名> 主键列1 [, 主键列2,...,主键列n] # 例如: CREATE TABLE tb_emp5 ( id INT(11) PRIMARY KEY, deptId INT(11), CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_emp1(id) );
|
使用非空约束
1 2 3 4 5 6 7
| 字段名 数据类型 not null # 例如: CREATE TABLE tb_emp2 ( id INT(11) PRIMARY KEY, name VARCHAR(255) NOT NULL );
|
使用唯一性约束
1 2 3 4 5 6 7
| 字段名 数据类型 UNIQUE # 例如: CREATE TABLE tb_emp2 ( id INT(11) PRIMARY KEY, name VARCHAR(255) UNIQUE );
|
1 2 3 4 5 6 7 8
| [CONSTRAINT <约束名>] UNIQUE(<字段名>) # 例如: CREATE TABLE tb_emp1 ( id INT(11) PRIMATY KEY, name VARCHAR(22), CONSTRAINT STH UNIQUE(name) );
|
使用默认约束
1 2 3 4 5 6 7
| 字段名 数据类型 DEFAULT 默认值 # 例如: CREATE TABLE tb_emp1 ( id INT(11) PRIMARY KEY, sex INT(11) DEFAULT 1 );
|
设置表的属性值自动增加
mysql 中 AUTO_INCREMENT
的初始值是1,一个表只能有一个字段使用 AUTO_INCREMENT
约束,且该字段必须为主键的一部分。
1 2 3 4 5 6
| 字段名 数据类型 AUTO_INCREMENT # 例如: CREATE TABLE tb_emp2 ( id INT(11) PRIMARY KEY AUTO_INCREMENT );
|
查看数据表
查看数据表结构
查看表基本结构语句 DESCRIBE
1 2 3 4
| DESCRIBE <表名>; # 简写 DESC <表名>; # 例如: DESCRIBE tb_emp1;
|
查看表详细结构语句 SHOW CREATE TABLE
SHOW CREATE TABLE
不仅可以查看表创建时候的详细语句,还可以查看存储引擎和字符编码
加个 \G 可以格式化输出
1 2
| SHOW CREATE TABLE <表名\G>; # 例如:SHOW CREATE TABLE tb_emp1\G;
|
修改数据表
mysql
修改数据表使用 ALTER TABLE
语句
修改表名
1 2
| ALTER TABLE <旧表名> RENAME [TO] <新表名>; # 例如:ALTER TABLE tb_emp2 RENAME tb_emp1;
|
TO
是可选字段,加不加都不影响执行结果
修改字段的数据类型
1 2
| ALTER TABLE <表名> MODIFY <字段名> <数据类型>; # 例如:ALTER TABLE tb_emp2 MODIFY name VARCHAR(30);
|
修改字段名
1 2
| ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>; # 例如:ALTER TABLE tb_emp1 CHANGE deptId dept_id INT(11);
|
添加字段
1 2
| ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在的字段名] # 例如: ALTER TABLE tb_emp1 ADD dept VARCHAR(255);
|
删除字段
1 2
| ALTER TABLE <表名> DROP <字段名>; # 例如:ALTER TABLE tb_emp1 DROP dept;
|
修改字段的排列位置
1 2
| ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST | AFTER <字段2>; # 例如:ALTER TABLE tb_emp1 MODIFY name VARCHAR(30) FIRST;
|
修改表的存储引擎
1 2
| ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>; # 例如:ALTER TABLE db_emp1 ENGINE=MEMORY;
|
删除表的外键约束
1 2
| ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>; # 例如:ALTER TABLE tb_emp6 DROP FOREIGN KEY fk_emp_dept1;
|
删除数据表
删除没有被关联的表
1 2
| DROP TABLE [IF EXISTS] 表1, 表2, ..., 表n; # 例如:DROP TABLE IF EXISTS tb_emp1;
|
删除被关联的主表
先删除字表的外键关联,再删除主表