11—— DDL(数据定义)语言:数据类型、常见约束、标识符

MySQL中的常见类型

1、整数型:

  • 整型
  • 浮点型

2、字符型:

  • 较短的文本:char 、varchar
  • 较长的文本:text 、blob(较长的二进制数据)

3、日期型

一、整数型

1、常用的整型类型:

    

2、浮点型:

  • float(M,D):M代表数据的长度(整数部分+小数部分),D代表保留的小数位数。如:12.6数中,M=3,D=1
  • M和D都可以省略

    

3、定点数类型(常用来保存精度较高的数值):

  • decimal(M,D) 中,省略时M默认为10,D默认为0
  • 定点型精度相对较高

    

二、字符型

1、较短的文本:

  • M 表示字符数,即有几个字符
  • char 代表固定长度的字符,比较耗费长度,但效率较高,其M可以省略,默认为1
  • varchar 代表可变长度的字符,比较节省空间,但效率低,其M不可以省略

   

2、Enum 枚举

3、set 集合

三、日期类型

  • 使用日期类型时,插入日期数据时要加引号

  

1、应用实例:

# 创建表 thetime
CREATE TABLE thetime(t01 DATETIME,
	t02 TIMESTAMP);
# 向所创建的表中插入数据
INSERT INTO thetime 
VALUES(NOW(),NOW());
# 显示该表的内容
SELECT * FROM thetime;

SHOW VARIABLES LIKE 'time_zone';  # 显示时区
SET time_zone='+9:00';  # 设置时区为+9:00

  ************************************************************

四、常见约束

  • 用于限制表中的数据,为确保表中的数据准确和可靠
  • 创建表时或修改表时添加约束(必须是在添加数据之前)

1、MySQL 中的约束分为六类:

  • not null :非空,用于保证该字段的值不能为空
  • default :默认,用于保证该字段有默认值
  • primary key :主键,用于保证该字段的值具有唯一性,且非空。能代表该行,如学号或编号
  • unique:唯一,用于保证该字段的值具有唯一性,可以为空。
  • check:检查约束 [ MySQL中不支持 ]
  • foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加外键的约束,用于引用主表中某列的值。

2、创建表时添加约束实例:列级约束

# 创建一个新的库为students
CREATE DATABASE students;
# 在该库中创建表 major,并对各列添加限制
CREATE TABLE major(
	id INT PRIMARY KEY,	# 设为主键
	majorName VARCHAR(20)
	);
# 在该库中创建表stuinfo 并对各列添加限制
CREATE TABLE stuinfo(
	id INT PRIMARY KEY, # 设为主键
	stuName VARCHAR(20) NOT NULL,  # 非空约束
	gender CHAR(1) CHECK(gender='male' OR gender='female'), # 检查[MySQL不支持]
	seat INT UNIQUE,  # 设置唯一
	age INT DEFAULT 18,  # 默认约束
	majorId INT REFERENCES major(id)  # 外键[MySQL不支持]
	);

SHOW INDEX FROM stuinfo; # 可以查看表的索引

3、创建表时添加约束:表级约束

# 语法:约束名自定,但primary key 的约束名无法修改
[CONSTRAINT 约束名] 约束类型
# 应用实例
CREATE TABLE stuinfo(
	id INT, 
	seat INT,    
	
	CONSTRAINT cst01 PRIMARY KEY(id),
	CONSTRAINT cst02 UNIQUE(seat),
	);

4、修改表时,添加或删除约束:将表 stuinfo 的一些列添加约束

# 列 stuname 添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
# 列 stuname 删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20);

# 列 age 添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
# 列 age 删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT;

# 添加主键
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
# 删除主键
ALTER TABLE stuinfo DROP PRIMARY KEY;

五、标识列:AUTO_INCREMENT

  • 标识列又称为自增长列:可以不用手动的插入值,系统提供默认的序列值
  • 一个表中至多有一个标识列 
  • 标识列的类型只能是数值型,一般为 int
  • 标识列可以设置步长

1、创建表时添加标识列

CREATE TABLE tbIndex(
	id INT PRIMARY KEY AUTO_INCREMENT, # 设置主键,设置标识
	tname VARCHAR(20)
	);

# 如果上面列没有设置标识,则下面的语句只能执行一次,而有标识列之后,可以多次执行,id值会自动增加
INSERT INTO tbIndex VALUES(NULL,'Tony');

2、修改表时添加标识列

ALTER TABLE tbindex MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;

3、修改表时删除标识列

ALTER TABLE tbindex MODIFY COLUMN id INT;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值