mysql基础操作

Mysql 基础操作

查看Mysql版本

1
SELECT @@version;

查看mysql支持的存储引擎

1
SHOW ENGINES;

查看数据库的默认编码

1
SHOW VARIABLES LIKE 'character_set_database';

数据库的基本操作

查看当前所有存在的数据库

1
SHOW DATABASES;

创建数据库

1
2
CREATE DATABASE <database_name>;
# 例如: CREATE DATABASE test_db;

查看创建好的数据库的定义

1
SHOW CREATE DATABASE test_db\G

删除数据库

1
2
DROP DATABASE <database_name>;
# 例如: DROP DATABASE test_db;

使用数据库

1
2
use <database_name>;
# 例如:use test_db;

数据表的基本操作

创建数据表

表的名称,不区分大小写,不能使用 SQL 语言中的关键字,如 DROPALTERINSERT

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
);

查看数据表

1
SHOW TABLES;

查看数据表结构

查看表基本结构语句 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;

删除被关联的主表

先删除字表的外键关联,再删除主表