mysql定义data类型语句_MySQL数据库精讲之三:DDL数据定义语句 MySQL数据库使用教程...

41626707c6bcc2910630f7a9799ad298.png

免费学习推荐:

文章目录

二、数据类型

2.1 整型

2.2 小数

2.3 字符型

2.4 日期类型

二、六大约束

四、标识列

五、级联删除与置空

一、DDL数据定义语句

库的管理

创建:create database [if not exists] 库名;

修改:若需要修改库名,直接修改文件夹

删除:DROP DATABASE IF EXISTS 库名;

表的管理

创建

create table IF NOT EXISTS 表名(

列名 列的类型[长度、约束],

列名 列的类型[长度、约束],

列名 列的类型[长度、约束],

...

)

修改

alter table 表名 add|drop|modify|change column 列名 [列类型 约束];

删除

drop table 表名;

二、数据类型

2.1 整型

整数类型

别名

字节

无符号范围

有符号范围

Tinint

微整型

1

0~255

-128~127

Smallin

小整型

2

0~65535

-32768~32767

Mediumint

中整型

3

0~1677215

-8388608~8388607

Int或Integer

整型

4

0~4294967295

-2147483648~2147483647

Bigint

大整型

8

0~9223372036854775807*2+1

-9223372036854775808~9223372036854775807

2.2 小数

浮点数类型

字节

范围

float(M,D)

4

-2^128 ~ +2^128

double(M,D)

8

-2^1024 ~ +2^1024

定点数类型

\

\

DEC(M,D)

M+2

最大取值范围与double相同,给定decimal的有效范围由M和D决定

注意:

M:整数部位+小数部位的总长度

D:小数部位

D和M都省略时:

1、如果是decimal类型,则M默认为10,D默认为0;

2、如果是floact和double,会根据插入的数值的精确度来决定精度。

3、定点型的精确度较高,如果要求插入数值的精确度较高如货币运算则考虑使用。

2.3 字符型

字符串类型

M是否可以省略

特点

空间耗费

效率

范围

char(M)

M可以省略,默认为1

定长

比较耗费

M为0~255之间的整数

varchar(M)

M不可以省略

可变长

比较节省

M为0~65535之间的整数

binary和varbinary类型,类似于char和varchar,不同的是它们包含二进制字符而不包含非二进制字符,即保存较短的二进制。

Bit(M)类型,字节为1~8,范围为Bit(1)~Bit(8)。

Enum类型,即枚举类型,要求插入的值必须属于列表中指定的值之一,如果列成员为1~255,则需要1个字节存储;如果列成员为255~65535,则需要2个字节存储,最多需要65535个成员。

Set类型,和Enum类似,可以保存0~64个成员。和Enum最大的区别是:Set类型一次可以选取多个成员,而Enum只能选一个,根据成员个数不同,存储所占的字节也不同。

成员数

字节数

1~8

1

9~16

2

17~24

3

25~32

4

33~64

8

2.4 日期类型

日期和时间类型

特点

字节

最小值

最大值

date

只保存日期

4

1000-01-01

9999-12-31

datetime

保存日期+时间

8

1000-01-01 00:00:00

9999-12-31 23:59:59

timestamp(使用较多)

保存日期+时间

4

187001080001

2038年的某个时刻

time

只保存时间

3

-838:59:59

838:59:59

year

只保存年

1

1901

2155

timestamp和实际时区有关,更能反映实际的日期;datetime则只能反映出插入时的当地时区。

timestamp的属性受Mysql版本和SQLMode的影响很大。

二、六大约束

含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。

NOT NULL

非空约束,规定某个字段不能为空

UNIQUE

唯一约束,规定某个字段在整个表汇中是唯一的

PRIMARY KEY

主键(唯一且非空)

FOREIGN KEY

外键

CHECK

检查约束(mysql中不支持)

DEFAULT

默认值,保证该字段有默认值

列级约束:六大约束语法上都支持,但外键约束没有效果。

表级约束:除了非空、默认,其他都支持。

常用的做法是:其他约束都写在列级,外键约束写在表级。

主键和唯一对比

是否保证唯一性

是否允许为空

允许有几个

是否允许组合(不推荐)

主键

×

至多一个主键

允许组合主键

唯一

√(允许有一个null)

可以有多个唯一

允许组合唯一

外键的特点:

要求在从表设置外键关系。

从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。

主表的关联列必须是一个key(一般是主键或唯一)

插入数据时,先插入主表再插入从表;删除数据时,先删除从表再删除主表。

列级约束和表级约束比较

位置

支持的约束类型

是否可以起别名

列级约束

列的后面

语法都支持,但外键没有效果

不可以

表级约束

所有列的下面

默认和非空不支持,其他支持

可以(主键没有效果)

学习了约束,尝试完成籼米的测试题f1b09c81e03bf147804bcc8c934155f9.png

1、列级约束:

ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;# 列约束不支持起名字

表级约束:

ALTER TABLE emp2 ADD CONSTRAINT my_emp_id_pk PRIMARY KEY(id);# 实际上主键起了名字也没效果

2、与1类似

3、

ALTER TABLE emp2 ADD COLUMN dept_id INT;

ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_dept2 FOREIGN KEY(dept_id) REFERENCES dept2(id);

四、标识列

标识列又称为自增长列,其实也可以将标识列纳入约束的范围。

含义:可以不用手动的插入值,系统提供默认的序列值。

特点:

1.标识列不一定非要和主键搭配,但要求是一个key。

2.一个表至多可以有一个表示列。

3.表示列的类型只能为数值型。

4.标识列可以通过SET auto_increment_increment=3;设置步长,也可以通过手动插入值来设置起始值。

五、级联删除与置空

级联删除:

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;

级联置空:

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;

更多相关免费学习推荐:mysql教程(视频)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值