SQL语言之DDL(操作数据库和表结构)

1、DDL的基本概念

DDL(Data Definition Language,操作数据库和表结构):DDL是用来操作数据库和表的,也就是创建数据库和表、删除数据库和表、修改表结构这些操作。通常,DDL由数据库管理员执行。

 

2、DDL操作数据库(选择和增删改查)

 

2.1、创建数据库(Create)

可以通过 create 语句来创建一个数据库

CREATE DATABASE 数据库名;  -- 创建数据库
create database 数据库名 character set utf-8;  -- 在创建数据库时可以指定数据库的字符集

SQL语言之DDL(操作数据库和表结构)

如果同名数据库已经存在,再创建一个会报错,提示该数据库已存在。我们可以通过判断该数据库是否已存在来避免报错:

create database if not exists basename;  -- 如果已存在则不会创建,否则新建一个数据库
create database if not exists basename character set gbk;  -- 判断同时指定字符集

SQL语言之DDL(操作数据库和表结构)

 

2.2、查询所有的数据库(show)

可以使用 show database; 语句来查询 MySQL 中所有的数据库。

如下:MySQL在安装后默认建立了四个数据库。前三个数据库都是保存着MySQL的一些信息,最好不要乱改。如果需要,我们可以在 test 数据库上做一些修改测试。

SQL语言之DDL(操作数据库和表结构)

(其中 information_schema 并没有真正对应的实体文件夹,该数据库是一个信息数据库,其保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。也就是说当你建立一个新的数据库,或者在已有的数据库中增删改表的话,都会记录在information_schema库中)

 

我们也可以通过 show create database 数据库名;  语句来查看创建某个数据的语法。如下所示,我们还可以知道该数据库使用的字符集是 utf-8。

SQL语言之DDL(操作数据库和表结构)

 

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 设置编码

对于一个关系表,除了定义每一列的名称外,还需要定义每一列的数据类型。关系数据库支持的标准数据类型包括数值、字符串、时间等:

SQL语言之DDL(操作数据库和表结构)

 

上面的表中列举了最常用的数据类型。很多数据类型还有别名,例如,浮点型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 表名;

 

SQL语言之DDL(操作数据库和表结构)

上一篇:MongoDB学习4:MongoDB复制集机制和原理,搭建复制集


下一篇:MySQL 创建表 复制表结构的两种方法 插入相同数据 重命名表 排查并修改字符集