创建和管理数据库

创建数据库

1
2
3
4
5
6
7
8
-- 创建数据库
CREATE DATABASE 数据库名;

-- 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;

-- 判断数据库是否存在,不存在则建库
CREATE DATABASE IF NOT EXISTS 数据库名;

使用数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 查看当前所有的数据库
SHOW DATABASES;

-- 查看当前正在使用的数据库
SELECT DATABASE();

-- 查看指定库下的所有表
SHOW TABLES FROM 数据库名;

-- 查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
-- 或者
SHOW CREATE DATABASE 数据库名\G

-- 使用数据库
USE 数据库名;

修改数据库

1
2
3
4
5
6
7
8
-- 更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集;

-- 删除指定数据库
DROP DATABASE 数据库名;

-- 删除指定数据库
DROP DATABSE IF EXISTS 数据库名;

创建表

语法格式

1
2
3
4
5
6
7
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……
[表约束条件]
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE IF NOT EXISTS emp (
-- int类型
emp_id INT,
-- 最多保存20个中英文字符
emp_name VARCHAR(20),
-- 总位数不超过15位
salary DOUBLE,
-- 日期类型
birthday DATE
);

CREATE TABLE dept(
-- int类型,自增
dept_no INT(2) AUTO_INCREMENT,
d_name VARCHAR(14),
loc VARCHAR(13),
-- 主键
PRIMARY KEY (dept_no)
);

使用 AS subquery 选项,将创建表和插入数据结合起来

1
2
3
CREATE TABLE table 
[(column, cloumn...)]
AS subquery;
1
CREATE TABLE emp1 AS SELECT * FROM employees;

查看数据表结构

1
SHOW CREATE TABLE 表名;

修改表

修改表指的是修改数据库中已经存在的数据表的结构。

  • 向已有的表中添加列
  • 修改现有表中的列
  • 删除现有表中的列
  • 重命名现有表中的列

追加列

1
ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 [FIRST|AFTER 字段名];
1
2
ALTER TABLE dept 
ADD job_id varchar(15);

修改列

可以修改列的数据类型,长度、默认值和位置

1
ALTER TABLE 表名 MODIFY [COLUMN] 字段名1 字段类型 [DEFAULT 默认值][FIRST|AFTER 字段名2];
1
2
3
4
5
ALTER TABLE dept
MODIFY last_name VARCHAR(30);

ALTER TABLE dept
MODIFY salary double(9,2) default 1000;

重命名列

1
ALTER TABLE 表名 CHANGE [column] 列名 新列名 新数据类型;
1
2
ALTER TABLE dept80
CHANGE department_name dept_name varchar(15);

删除列

1
ALTER TABLE 表名 DROP [COLUMN] 字段名

删除表

  • 在 MySQL 中,当一张数据表没有与其他任何数据表形成关联关系时,可以将当前数据表直接删除
  • 数据和结构都被删除
  • 所有正在运行的相关事务被提交
  • 所有相关索引被删除
1
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];

DROP TABLE 语句 不能回滚

清空表

  • 删除表中所有的数据
  • 释放表的存储空间
1
TRUNCATE TABLE detail_dept;

TRUNCATE 语句 不能回滚,而使用 DELETE 语句删除数据,可以回滚