一、SQL的四个分类
我们通常可以将 SQL 分为四类,分别是:
DDL(数据定义语言)、DML(数据操作语言)、 DCL(数据控制语言)和 TCL(事务控制语言)。
DDL 用于创建、删除、修改数据库结构(如表、索引、视图等),核心语句create
、drop
、alter、truncate;
DML 负责数据的插入、删除、更新和查询,核心语句insert
、delete
、update
;
DQL 负责从数据库中检索数据,是使用频率最高的SQL类型,核心语句select;
DCL 用于管理数据库访问权限和数据安全,核心语句grant
、revoke
;
二、什么是 DDL?
DDL 是 SQL 的一部分,用于定义和管理数据库的结构(模式)。主要命令包括:
CREATE
:创建数据库、表、视图等对象ALTER
:修改现有数据库对象DROP
:删除数据库对象TRUNCATE
:删除表中的数据但保留结构
其中DROP是删除数据库,可以参考之前的文章。
三、创建数据库
语句:CREATE DATABASE 数据库名;
我们使用root登录mysql,输入CREATE DATABASE school_db;
一般来说,我们采用root创建数据库,然后可以将其赋予别的用户进行管理,我们把该数据库赋给leo用户权限
GRANT ALL PRIVILEGES ON school_db.* TO 'leo'@'localhost';
四、创建表
我们采用navicat对SQL语句进行演示,使用navicat登录leo用户,会看到有个school_db的数据库
创建 MySQL 数据表的 SQL 通用语法:
CREATE TABLE table_name (column1 datatype,column2 datatype,...
);
参数说明:
table_name
是你要创建的表的名称。column1
,column2
, ... 是表中的列名。datatype
是每个列的数据类型。
下面是示例:
4.1 创建学生表
CREATE TABLE students (student_id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增student_name VARCHAR(50) NOT NULL, -- 非空字段age INT CHECK (age > 0), -- 年龄必须大于0gender ENUM('M', 'F', 'Other') DEFAULT 'Other', -- 枚举类型birth DATE NOT NULL -- 生日
);
在学习这个链接上右键刷新,然后我们就可以看到建立的数据表了。
4.2 创建老师表
在上个示例中,我们采用的是SQL语句创建的,我们还可以使用navicat通过界面进行创建
第一步:在表上右键,新建表
第二步:添加主键
第三步:保存表,右上角,保存:
输入表名:Teachers,然后点保存
第四步:添加字段
通过添加字段按钮,依次添加如下字段 ,其中工作年限设置为0
第五步:添加外键
外键用于在两个表之间建立一对一、一对多或多对多的关系。例如,在老师表和学生表之间,老师表中的mentor_student_id字段可以作为外键,关联到学生表中的student_id字段,从而实现老师和学生之间的关联,老师表也称为父表,学生表也成为子表。
五、修改表结构(ALTER)
添加一个新列到 students
表:
ALTER TABLE students ADD COLUMN email VARCHAR(100) UNIQUE;
修改 teachers
表的 subject
列:
ALTER TABLE teachers MODIFY subject VARCHAR(60) NOT NULL;
六、删除表
6.1 删除表(保留结构):
TRUNCATE TABLE students; -- 清空数据但保留表结构
注意:因为在Teachers表中包含有students的外键,删除是会出错的,所以需要先去删除Teachers的外键。
6.2 删除表(结构和数据):
DROP TABLE teachers;
七、查看表结构
使用 DESCRIBE
或 SHOW CREATE TABLE
查看表定义:
DESCRIBE students;
SHOW CREATE TABLE students;
八、navicat导出表结构
可以通过在表上右键->转储SQL文件,导出数据表的结构和数据
比如到处的数据表结构文件内容如下:里面清晰的定义了表的字段等详细内容