接上篇文章 MySQL基础——数据库和SQL概述\MySQL基本使用\DQL语言学习

DDL语言学习

  • Data Definition Language 数据定义语言
  • 主要用于数据库和数据表的管理和操作

1. 创建数据库

CREATE DATABASE 库名;

如果所创建的库已存在,再次执行会报错, 可以使用如下方式

CREATE DATABASE IF NOT EXISTS 库名;

数据库创建好之后,可以使用SHOW CREATE DATABASE语句查看数据库的定义

SHOW CREATE DATABASE studb

在这里插入图片描述

2. 删除数据库

DROP DATABASE 库名;

同理,如果重复删除会报错,可以使用如下方式

DROP DATABASE IF EXISTS 库名;

3. 创建表

CREATE TABLE [IF NOT EXISTS]表名 (
		字段名 字段类型 [字段约束],
		字段名 字段类型 [字段约束],
		...
		字段名 字段类型 [字段约束]
);

案例 1:创建stuinfo表,没有添加约束

CREATE TABLE stuinfo (
		stuid 		INT,
		stuname 	VARCHAR(20),
		stugender 	CHAR,
		email 		VARCHAR(20),
		borndate 	DATETIME
);

# DESC stuinfo	# 查看表的结构

所构建的数据库和表格信息如下
在这里插入图片描述
在这里插入图片描述


4. 数据类型

数据分类类型名称
整数INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT
浮点小数FLOAT、DOUBLE
定点小数DECIMAL
字符串CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET
日期/时间YEAR、TIME、DATE、DATETIME、TIMESTAMP

其中不同数值类型(整数、浮点数)提供不同的取值范围,存储值范围越大,所需空间也越大。具体范围和存储不逐一介绍,这里只说明常见的几种数据类型。

整型

  • 可以是INT(M),M表示指定显示的数值种数字的个数

浮点型

  • 浮点类型和定点类型都可以使用(M, N)来表示,可省略。M 称为精度,表示总共的位数;N 称为标度,表示小数的位数。如DOUBLE(5,2)表示最多五位,其中必须有两位小数,最大为999.99。
  • 对精度要求比较高的时候(如货币、科学数据等),使用DECIMAL的类型比较好。

字符型

  • CHAR(M):固定长度字符串类型,在定义时指定字符串列长,默认为 1。不足时,右侧填充空格。M范围为0-255。

  • VARCHAR(M):是长度可变的字符串,M表示最大列长度,M范围为0-65535。
    在这里插入图片描述

  • TEXT 字符串类型,表示存储较长的文本,如文章内容、评论等。

日期/时间类型
在这里插入图片描述
二进制型
在这里插入图片描述


5. 常见约束

用于限制表中字段的数据,从而进一步保证数据表的准确可靠。具体约束类型如下表:

约束类型关键字作用
主键约束PRIMARY KEY唯一标识一条记录,不可重复、非空
外键约束FOREIGN KEY用于两表数据之间建立连接
非空约束NOT NULL字段的值不能为空
默认约束DEFAULT指定某列的默认值
唯一性约束UNIQUE要求该列值唯一(空值也唯一)
5.1 主键约束

主键又称主码,是表中一列或多列的组合。主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的记录,可以结合外键来定义不同数据表之间的关系。

  • 主键分为两种:单字段主键和多字段联合主键

1、单字段主键

方式一:在定义列的同时指定主键

  • 语法:
字段名 数据类型 PRIMARY KEY [默认值]
  • 案例:
CREATE TABLE stuinfo (
		stuid 			INT PRIMARY KEY,	# 指定主键约束
		stuname 		VARCHAR(20),
		stugender 		CHAR,
		email 			VARCHAR(20),
		age         	INT
);

方式二:在定义完所有列之后指定主键

  • 语法:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
  • 案例:
CREATE TABLE stuinfo (
		stuid 			INT,
		stuname 		VARCHAR(20),
		stugender 		CHAR,
		email 			VARCHAR(20),
		age         	INT,
		PRIMARY KEY (stuid)  		# 指定主键约束 
);

效果:
在这里插入图片描述

2、多字段联合主键

  • 语法:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名1, 字段名2, ... ]
  • 案例:
CREATE TABLE stuinfo (
		stuid 			INT,
		stuname 		VARCHAR(20),
		stugender 		CHAR,
		email 			VARCHAR(20),
		age         	INT,
		PRIMARY KEY (stuid, stuname)
);

效果:
在这里插入图片描述

5.2 外键约束

外键用于在两个表的数据之间建立连接,主要作用是保证数据引用的完整性,定义外键以后,不允许删除其在另一个表中具有关联关系的行,进而保证数据的完整性。

  • 语法:
[CONSTRAINT <外键名>] FOREIGN KEY(外键字段) REFERENCES 主表 (主键字段) 

两个概念

  • 主表:对于两个具有关联关系的表而言,相关联字段中主键所在表为主表
  • 从表:反之,外键所在表即为从表

案例

# 创建一个学生信息表
CREATE TABLE stuinfo (
		stuid 		INT PRIMARY KEY,	
		stuname 	VARCHAR(20),
		stugender 	CHAR,
		email 		VARCHAR(20),
		age       	INT
);

# 定义数据表 stumaj,让它的键 majorid 作为外键关联到 stuinfo 表的主键 stuid
CREATE TABLE stumaj (
		majorid 	INT(5),
		CONSTRAINT fk_stumaj_major FOREIGN KEY(majorid) REFERENCES stuinfo(stuid) 
);

在这里插入图片描述
此案例为表 stumaj 添加了名称为 fk_stumaj_major 的外键约束。其中,外键为 majorid,其依赖于表 stuinfo 的主键 stuid。表 stuinfo 为主表,表 stumaj 为从表。

5.3 非空约束

非空约束指定字段的值不能为空。对于使用非空约束的字段,如果用户没有添加指定值,数据库系统会报错。

  • 语法:
字段名 数据类型 NOT NULL
  • 案例:
CREATE TABLE stuinfo (
		stuid 		INT PRIMARY KEY,	
		stuname 	VARCHAR(20) NOT NULL,
);

在这里插入图片描述

5.4 唯一性约束

唯一性约束要求该列唯一,允许为空,但只能出现一个空值

  • 语法:
字段名 数据类型 UNIQUE
  • 案例:
CREATE TABLE stuinfo (
		email 		VARCHAR(20) UNIQUE,
);

在这里插入图片描述

5.5 默认约束

默认约束指定某列的默认值。比如男性同学较多,性别就可以默认为“男”。

  • 语法:
字段名 数据类型 DEFAULT 默认值
  • 案例:
CREATE TABLE stuinfo (
		stugender 	CHAR(1) DEFAULT '男',
);

6. 表的修改

新建book表,以下修改操作都针对此表
在这里插入图片描述
1、修改表名

  • 语法:
ALTER TABLE 旧表名 RENAME [TO] 新表名
  • 案例:将book表的表名修改为bookinfo
ALTER TABLE book RENAME bookinfo;

在这里插入图片描述

2、修改字段数据类型

  • 语法:
ALTER TABLE 表名 MODIFY 字段名 数据类型
  • 案例:
ALTER TABLE bookinfo MODIFY publishDate DATE

3、修改字段名

  • 语法:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
  • 案例:
ALTER TABLE bookinfo CHANGE id new_id BIGINT

在这里插入图片描述

4、添加字段

  • 语法:
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件]
  • 案例:
ALTER TABLE bookinfo ADD page INT(4) UNIQUE

在这里插入图片描述
5、删除字段

  • 语法:
ALTER TABLE 表名 DROP 字段名
  • 案例:
ALTER TABLE bookinfo DROP page

在这里插入图片描述


7. 表的删除

  • 语法:
DROP TABLE 表名
  • 案例:
DROP TABLE bookinfo;
SHOW TABLES;

在这里插入图片描述


8. 表的复制

1、仅复制表的结构,不复制数据

CREATE TABLE 新表名 LIKE;

2、复制表的结构和数据

CREATE TABLE 新表名 
SELECT * FROM 被复制的表名

3、仅复制部分数据

  • 添加WHERE进行筛选即可
CREATE TABLE 新表名 
SELECT * FROM 被复制的表名
WHERE 筛选条件

更多推荐