写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!
第一章 《认识与环境搭建》
第二章 《数据类型》
第三章 《数据定义语言DDL》
DDL(Data Definition Language,数据定义语言) 是用于定义和管理数据库对象(如表、视图、索引等)的语言。它是一种结构化查询语言(SQL)的子集。该语言部分包括以下内容:
以下是DDL对数据库的常用操作。
功能 | SQL语句 |
---|---|
查看所有数据库 | SHOW DATABASES; |
创建数据库 | CREATE DATABASE [IF NOT EXISTS] 数据库 [CHARSET=utf8]; |
切换据库 | USE 数据库; |
删除数据库 | DROP DATABASE [IF EXISTS] 数据库; |
修改数据库编码 | ALTER DATABASE 数据库 CHARACTER SET 编码样式; |
需要指出的是,由于SQL语言大小写不敏感,所以为了可读性一般会将标识符大写,但使用小写也不影响程序运行。另外,使用[]
内的语句代表着可选。
下面是代码实验。进入Navicat后,点击左侧连接好的MySQL,会发现有一些默认数据库,点击“新建查询”,即可输入SQL语言代码进行操作。
-- 查看数据库
SHOW DATABASES;
此时在弹出的结果栏可以查看目前MySQL存在的数据库。
-- 创建数据库
CREATE DATABASE mydb1;
运行后可以看到结果栏中出现mydb1
这个新创建的数据库。同时,在左侧的库显示栏右键刷新后也可以看到新创建的库。
但当重复运行创建数据库的语句时,会报错“> 1007 - Can’t create database ‘mydb1’; database exists”,即数据库已存在,不可创建。所以会加上IF NOT EXISTS
的判断语句,这样就不会报错。
CREATE DATABASE IF NOT EXISTS mydb1;
当选择使用哪一个数据库进行编辑时,使用如下语句。
-- 选择使用数据库
USE mydb1;
而当要删除此处已经创建的mydb1
数据库时,则使用以下语句。
-- 删除数据库
DROP DATABASE mydb1;
刷新即可发现创建的数据库mydb1
已经被删除。
然而当重复运行删除数据库的语句时,会报错“> 1008 - Can’t drop database ‘mydb1’; database doesn’t exist”,即数据库不存在,不可删除。所以加上IF EXISTS
的判断语句就可以不报错。
至于转换编码则一般不需要,因为在初始化的时候已经默认将MySQL设置为utf8编码了,但如果进行操作时,语句也一般如下。
-- 修改数据库的编码
ALTER DATABASE mydb1 CHARACTER SET utf8;
以下是DDL对表结构的常用操作。
功能 | SQL语句 |
---|---|
创建表 | CREATE TABLE 表名(); |
查看当前数据库所有表 | SHOW TABLES; |
查看指定表的创建语句 | SHOW CREATE TABLE 表名; |
查看表结构 | DESC 表名; |
删除表 | DROP TABLE 表名; |
创建表是在数据库中构建一张空表,制定这个表的名字,这个表的列数和列名,以及每一列储存的数据类型。具体语法如下。
CREATE TABLE [IF NOT EXISTS]表名(
字段名1 类型[(宽度)] [约束条件] [COMMENT '字段说明'],
字段名2 类型[(宽度)] [约束条件] [COMMENT '字段说明'],
字段名3 类型[(宽度)] [约束条件] [COMMENT '字段说明'],
)[其他表设置];
其中,字段名实际上就是列名,类型则是需要选择的数据类型。
-- 创建表
CREATE DATABASE IF NOT EXISTS mydb1;
USE mydb1;
CREATE TABLE IF NOT EXISTS student(
sid INT,
name VARCHAR(20),
gender VARCHAR(10),
age INT,
birth DATE,
address VARCHAR(20),
score DOUBLE
);
以上代码重新创建了数据库mydb1
,并确定使用此数据库进行编辑。随后,创建了一个表student
,表中有7个列,分别是学生号sid
、名字name
、性别gender
、年龄age
、出生日期birth
、地址address
和成绩score
。
在Navicat中点击mydb1库进入表即可看到student表的空表如下。
-- 查看所有表
SHOW TABLES;
输入以上命令,结果栏即可查看当前数据库的所有表。当然,作为图形化界面,在Navicat的左侧依然可以查看到所有的库和表。
-- 查看表创建语句
SHOW CREATE TABLE student;
承接之前创建的表student
,输入以上命令就能在结果栏返回当时创建表student
的语句。返回结果如下。
CREATE TABLE `student` (
`sid` int DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`age` int DEFAULT NULL,
`birth` date DEFAULT NULL,
`address` varchar(20) DEFAULT NULL,
`score` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
-- 查看表结构
DESC student;
使用以上语句,就可以查询到表student
的相应表结构。返回结果如下图。
-- 删除表
DROP TABLE student;
使用以上语句即可删除刚刚创建和操作的表student
。
在创建表后,若希望增添或者删除表的某列,修改表名等操作,就需要用到对表结构的修改语句。
ALTER TABLE 表名 ADD 列名 类型(长度) [约束];
使用以上的语法结构再给表student
中添加一个系别(department)字段名dept
,其代码如下。
ALTER TABLE student ADD dept VARCHAR(20);
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) [约束];
使用以上的语法结构给表student
中刚刚添加的系别字段名dept
更改为department
,其代码如下。
ALTER TABLE student CHANGE dept department VARCHAR(30);
ALTER TABLE 表名 DROP 列名;
使用以上的语法结构将表student
的系别列删除,其代码如下。
ALTER TABLE student DROP department;
RENAME TABLE 旧表名 TO 新表名;
使用以上的语法将表student
的更名为stu
,其代码如下。
RENAME TABLE student TO stu;
此时左侧库中的表名就可以发现从student改名为stu。
我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!