尚硅谷李玉婷老师MySQL课程--DDL语言

DDL(Data Definition Language):数据定义语言
库和表的管理(创建、修改、删除)
创建:create
修改:alter
删除:drop

一、库的管理

1.库的创建

语法

CREATE DATABASE 库名;
//加判断,增加容错性
CREATE DATABASE IF NOT EXISTS 库名;

2.库的修改

更改库的字符集
语法

ALTER DATABASE 库名;
CHARACTER SET 字符集名

3.库的删除

语法

DROP DATABASE 库名;
//加判断,增加容错性
DROP DATABASE IF EXISTS 库名;

二、表的管理

1.表的创建

语法

CREATE TABLE 【IF NOT EXISTS】 表名(
	字段名 字段类型【(长度) 约束】,
	字段名 字段类型【(长度) 约束】,
	...
	字段名 字段类型【(长度) 约束】
);
例:创建表book

CREATE TABLE book(
	id INT,					#编号
	bName VARCHAR(20) , 	#书名
	price DOUBLE,			#价格
	authorID INT,			#作者编号
	publishedDate DATETIME	#出版日期 
);

2.表的修改

ALTER TABLE 表名 add|drop|modify|change COLLUM 列名 【类型,约束】

(1)修改字段名

ALTER TABLE 表名
CHANGE 【COLLUM】 原字段名 新字段名 类型;
例:
ALTER TABLE book CHANGE COLLUM publishedDATE pubDate DATETIME;

(2)修改字段类型或约束

ALTER TABLE 表名 MODIFY COLLUM 字段名 新类型/约束;

(3)添加新的字段

ALTER TABLE 表名 ADD COLLUM 字段名 类型;

(4)删除字段

ALTER TABLE 表名 DROP COLLUM 字段名;

(5)修改表名

ALTER TABLE 表名 RENAME TO 新表名;

3.表的删除

DROP TABLE 表名;
//加判断,增加容错性
DROP TABLE IF EXISTS 表名;

4.表的复制

(1)仅复制表的结构

CREATE TABLE 复制表名 LIKE 原表名;

(2)复制表的结构+数据

CREATE TABLE 复制表名
SELECT 字段名
FROM 原表名 【筛选】;

(3)仅复制表的部分结构

CREATE TABLE 复制表名
SELECT 字段名
FROM 原表
WHERE 0;

三、常见约束

含义
一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
分类:六大约束

  1. NOT NULL 非空:保证该字段的值不能为空
  2. DEFAULT 默认:用于保证该字段有默认值
  3. PRIMARY KEY 主键:用于保证该字段具有唯一性并且非空
  4. UNIQUE 唯一:用于保证该字段具有唯一性可以为空
  5. CHECK 检查(MySQL不支持)
  6. FOREIGN KEY 外键:用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加,用于引用主中某列的值。

添加约束的时机:在添加数据之前

  • 创建表时
  • 修改表时

约束的添加分类
列级约束:六大约束都可以,但外键无效
表级约束:除非空、默认

主键和唯一对比

保证唯一性是否允许为空表中可以有多少个
主键 primary key至多一个
唯一 unique可以有多个

外键

  1. 在从表设置外键关系
  2. 从表的外键列的类型和主表的关联列的类型要求一致或兼容
  3. 主表的关联列必须是一个key(一般为主键或唯一)
  4. 插入数据时,先插入主表,再插入从表;
    删除数据时,先删除从表,在删除主表。

一、创建表时添加约束

1.添加列级约束

语法 直接在各个字段名和类型后面追加约束类型即可
只支持:默认、非空、主键、唯一

字段名 字段类型 约束类型

例:

CREATE TABLE stuinfo(
	id INT PRIMARY KEY,
	stuName VARCHAR(20) NOT NULL,
	gender CHAR(1) CHECK (gender='男' OR gender='女'),
	seat INT UNIQUE,
	age INT DEFAULT 18,
	majorId INT REFERENCES major(id)
);

CREATE TABLE major(
	id INT PRIMARY KEY,
	majorName VARCHAR(20)
);

2.添加表级约束

语法在各个字段的最下面添加

【constraint 约束名】约束类型(字段名)

例:

CREATE TABLE stuinfo(
	id INT,
	stuName VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorId INT,
	
	CONSTRAINT pk PRIMARY KEY(id),
	CONSTRAINT uq UNIQUE(seat),
	CONSTRAINT ck CHECK(gender='男' OR gender='女'),
	CONSTRAINT fk_stu_info FOREIGN KEY(majorid) REFERENCES major(id)
);

二、修改表时添加约束

//列级约束
ALTER TABLE 表名 MODIFY COLUMN 字段名 类型 约束(非空、默认、主键、唯一)
//表级约束
ALTER TABLE 表名 ADD 约束(字段名)  (主键、唯一)
//添加外键
ALTER TABLE 表名 ADD FOREIGN KEY(字段名) REFERENCES 从表名(字段)

三、修改表时删除约束

  1. 删除非空约束

     ALTER TABLE 表名 MODIFY COLUMN 字段名 类型 NULL
    
  2. 删除默认约束

     ALTER TABLE 表名 MODIFY COLUMN 字段名 类型
    
  3. 删除主键

     ALTER TABLE 表名 DROP PRIMARY KEY
    
  4. 删除唯一

     ALTER TABLE 表名 DROP INDEX 字段名
    
  5. 删除外键

     ALTER TABLE 表名 DROP PRIMARY KEY 字段名
    

四、标识列(auto_increment)

又称为自增长列
含义
可以不用手动的插入值,系统提供默认的序列值
特点

  1. 需要与key(主键/唯一)搭配
  2. 只能最多有一个标识列
  3. 标识列从类型只能是数值型

1.创建表时设置标识列

语法

字段名 类型 约束 auto_increment;

2.修改表时设置标识列

ALTER TABLE 表名 MODIFY COLUMN 字段名 类型 约束 auto_increment;

3.修改表时删除标识列

ALTER TABLE 表名 MODIFY COLUMN 字段名 类型;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值