超详细的 SQL 语句 DDL(数据定义语言)讲解
2023-12-04 14:45:25一. DDL 简介
DDL 是数据定义语言的缩写,简单的说,就是对数据库内部的对象进行创建、删除、修改等操作的语言。和 DML 的最大区别,是 DML 只是对数据库里的数据进行操作,而不涉及到表的定义、结构修改。DDL 更多是由数据库的管理员使用,开发者一般很少使用。
MySQL 服务启动之后,在终端上输入 mysql -u root -p,回车后输入密码,就会连接到 MySQL 服务器中。
注释:u 是 -username 简写,表示数据库用户名,当然你的数据库可能不是 root,p 是 password 的简写,即数据库的密码。
二. 创建数据库
语法:
CREATE DATABASE 数据库名称;
例如,创建一个名叫school的数据库:
CREATE DATABASE school;
三. 查看系统中存在哪些数据库
语法:
SHOW DATABASES;
四. 选择数据库
只有进入了数据库中,我们才能创建表。
语法:
USE 数据库名称;
例如,进入了school数据库中:
USE school;
五. 查看数据库中存在哪些数据表
语法:
SHOW TABLES;
六. 删除数据库
语法:
DROP DATABASE 数据库名称;
例如,删除一个名叫school的数据库:
DROP DATABASE school;
七. 创建表
语法:
CREATE TABLE 表名( 字段名1 列类型 约束条件, 字段名2 列类型 约束条件, 字段名3 列类型 约束条件, ... );
注意:MySQL 中的表名是以目录的形式存在于磁盘中的,所以表名的字符可以用任何目录名允许的字符。
例如,创建一个student表,表中包含id(主键、自增)、name(姓名)、age(年龄):
CREATE TABLE student(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(10) NOT NULL,
age int(3)
);
八. 查询表定义
查询表定义,有两种方法:
1. DESC 表名;
2. SHOW CREATE TABLE 表名;
desc 命令可以查看表定义,但是输出信息不全面,想要获取更详细的表定义信息(创建表定义 SQL 语句),可以通过 show create table 表名。
九. 删除表
DROP TABLE 表名;
例如,删除 student 表:
DROP TABLE student;
十. 修改表
对于已创建的表,表结构的修改,大多数使用 alter table 命令。
1. 修改表类型
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 列类型 约束条件 [FIRST | AFTER 字段名];
例如,修改 student 表中的 name 列,将其 varchar(10),改为 varchar(15):
ALTER TABLE student MODIFY name varchar(15) NOT NULL;
2. 增加表字段
ALTER TABLE 表名 ADD [COLUMN] 字段名 列类型 约束条件 [FIRST | AFTER 字段名];
例如,student 表中添加一个 student_no(学号)列,表类型是 varchar(10) NOT NULL:
ALTER TABLE student ADD student_no varchar(10) NOT NULL;
3. 删除表字段
ALTER TABLE 表名 DROP [COLUMN] 字段名;
例如,student 表中删除 student_no(学号)列:
ALTER TABLE student DROP student_no;
4. 表字段改名
ALTER TABLE 表名 CHANGE [COLUMN] 旧字段名 新字段名 列类型 约束条件 [FIRST | AFTER 字段名];
例如,student 表中 student_no(学号)列的名称改为 no:
ALTER TABLE student CHANGE student_no no varchar(10) NOT NULL;
5. 修改字段排列顺序
在 modify/change/add 命令中,都有一个可选项 [FIRST | AFTER 字段名],这个可选项就是进行列顺序。
FIRST:排在表中最前列
AFTER 字段名:排在表中定义字段名的后面
例如:修改 student_no 的类型为 varchar(15) not null,并将 student_no 列放在表中最前列
ALTER TABLE student MODIFY student_no varchar(15) NOT NULL FIRST;
例如,修改 student_no 的类型为 varchar(10) not null,并将 student_no 列的排在 name 列的后面:
ALTER TABLE student MODIFY student_no varchar(10) NOT NULL AFTER name;
十一. 修改表名
ALTER TABLE 表名 RENAME [TO] 新表名;
例如:将 student 表名改为 student1:
ALTER TABLE student RENAME student1;