1、DDL的基本概念
DDL(Data Definition Language,操作数据库和表结构):DDL是用来操作数据库和表的,也就是创建数据库和表、删除数据库和表、修改表结构这些操作。通常,DDL由数据库管理员执行。
2、DDL操作数据库(选择和增删改查)
2.1、创建数据库(Create)
可以通过 create 语句来创建一个数据库
CREATE DATABASE 数据库名; -- 创建数据库
create database 数据库名 character set utf-8; -- 在创建数据库时可以指定数据库的字符集
如果同名数据库已经存在,再创建一个会报错,提示该数据库已存在。我们可以通过判断该数据库是否已存在来避免报错:
create database if not exists basename; -- 如果已存在则不会创建,否则新建一个数据库
create database if not exists basename character set gbk; -- 判断同时指定字符集
2.2、查询所有的数据库(show)
可以使用 show database; 语句来查询 MySQL 中所有的数据库。
如下:MySQL在安装后默认建立了四个数据库。前三个数据库都是保存着MySQL的一些信息,最好不要乱改。如果需要,我们可以在 test 数据库上做一些修改测试。
(其中 information_schema 并没有真正对应的实体文件夹,该数据库是一个信息数据库,其保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。也就是说当你建立一个新的数据库,或者在已有的数据库中增删改表的话,都会记录在information_schema库中)
我们也可以通过 show create database 数据库名; 语句来查看创建某个数据的语法。如下所示,我们还可以知道该数据库使用的字符集是 utf-8。
2.3、修改数据库(alter)
修改数据库的字符集:
alter database 数据库名称 character set 字符集名称;
# 示例:
alter database testdb character set utf8;
2.4、删除数据库(drop)
drop database 数据库名称;
drop database if exists 数据库名称; # 如果该数据库不存在,直接删除会报错,我们可以先判断是否存在
2.5、选择数据库(use)
在连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以我们需要选择要进行操作的数据库。
use 数据库名称;
执行以上命令后,就会选择某个数据库,后续的操作都会在该数据库中执行,比如对数据表的操作等等。
查询目前正在使用的数据库:
select database(); # 当没有选择数据库时,会提示 null
3、DDL操作数据表(增删改查)
3.1、创建数据表(create)
创建MySQL数据表需要以下信息:表名、表字段名、定义每个表字段。
以下为创建MySQL数据表的SQL通用语法:
CREATE TABLE table_name (column_name column_type);
# 示例创建数据表runoob_tbl:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT, # AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
`runoob_title` VARCHAR(100) NOT NULL, # 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` ) # PRIMARY KEY关键字用于定义列为主键,可以使用多列来定义主键,列间以逗号分隔。建表语句的最后一列不要加逗号,否则报错
)ENGINE=InnoDB DEFAULT CHARSET=utf8; # ENGINE 设置存储引擎,CHARSET 设置编码
对于一个关系表,除了定义每一列的名称外,还需要定义每一列的数据类型。关系数据库支持的标准数据类型包括数值、字符串、时间等:
上面的表中列举了最常用的数据类型。很多数据类型还有别名,例如,浮点型REAL
又可以写成FLOAT(24)
。还有一些不常用的数据类型,例如,TINYINT
(范围在0~255)。各数据库厂商还会支持特定的数据类型,例如JSON
。
选择数据类型的时候,要根据业务规则选择合适的类型。通常来说,长整型BIGINT
能满足整数存储的需求,变长字符串VARCHAR(N)
能满足字符串存储的需求,这两种类型是使用最广泛的。
3.2、删除数据表(drop)
在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。
以下为删除MySQL数据表的通用语法:
DROP TABLE table_name;
DROP TABLE if exists table_name; # 判断是否存在,存在再删除
3.3、修改表
3.3.1、对表的整体进行修改
修改表名:
alter table 表名 rename to 新表名;
修改表的字符集:
alter table 表名 character set 字符集名称;
# 示例:
alter table testtable character set utf8; # utf-8字符集写成utf8,否则报错
3.3.2、修改表结构
添加一列:
alter table 表名 add 列名 数据类型;
# 示例:
alter table testtable add name varchar(10); # varchar(10)表示最多有10个字符
修改列名、数据类型:
alter table 表名 modify 列名 新数据类型; # 修改列的数据类型 alter table 表名 change 列名 新列名 新数据类型; # 同时修改列名和数据类型
删除列:
alter table 表名 drop 列名;
3.4、查询
3.4.1、查询数据库中的所有表
查询某个数据库中的所有表:
show tables;
3.4.2、查询表结构
查询表结构:
desc 表名;