DDL数据语言|库表管理(MySQL)

Posted 桃陉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDL数据语言|库表管理(MySQL)相关的知识,希望对你有一定的参考价值。

目录


库的管理

∙ \\bullet 创 建 库 c r e a t e \\colorRed创建库create create

语法 c r e a t e   d a t a b a s e   [ i f   n o t   e x i s t s ]   库 名 ; \\colorVioletcreate \\ database \\ [if \\ not \\ exists] \\ 库名; create database [if not exists] ;

其中加上 if not exists 可以有效的避免报错,提高容错性。

∙ \\bullet 修 改 库 a l t e r \\colorRed修改库alter alter

主要就是更改库的字符集操作

语法 a l t e r   d a t a b a s e   库 名   c h a r c t e r   s e t   字 符 集 ; \\colorVioletalter \\ database \\ 库名 \\ charcter \\ set \\ 字符集; alter database  charcter set ;

∙ \\bullet 删 除 库 d r o p \\colorRed删除库drop drop

语法 d r o p   d a t a b a s e   [ i f   e x i s t s ]   库 名 ; \\colorVioletdrop \\ database \\ [if \\ exists ] \\ 库名; drop database [if exists] ;

其中加上 if exists 可以有效的避免报错,提高容错性。


表的管理

∙ \\bullet 创 建 表 c r e a t e \\colorRed创建表create create

语法 c r e a t e   t a b l e   表 名 ( 字 段 名 类 型 [ ( 长 度 ) 约 束 ] , . . . ) ; \\colorVioletcreate \\ table \\ 表名(字段名 类型[(长度) 约束],...); create table ([()],...);

其中文章最后介绍了相关的类型以及约束。表的创建样例如下:

∙ \\bullet 修 改 表 a l t e r t \\colorRed修改表altert altert

核心语法 a l t e r   t a b l e   表 名   a d d ∣ m o d i f y ∣ c h a n g e ∣ d r o p   c o l u m n   列 名 [ 列 类 型   约 束 ] ; \\colorVioletalter \\ table \\ 表名 \\ add|modify|change|drop \\ column \\ 列名[列类型 \\ 约束]; alter table  addmodifychangedrop column [ ];

修改列名:alter table 表名 change column 旧列名 新列名 类型;


修改列的类型或约束:alter table 表名 modify column 列名 新类型;


添加新列:alter table 列名 add column 列名 类型;


删除列:alter table 列名 drop column 列名;


修改表名:alter table 旧表名 rename to 新表名;

示例:增加一列age年龄,并将id列名改为stuID。

∙ \\bullet 删 除 表 d r o p \\colorRed删除表drop drop

语法 d r o p   t a b l e   [ i f   e x i s t s ]   表 名 ; \\colorVioletdrop \\ table \\ [if \\ exists] \\ 表名; drop table [if exists] ;

∙ \\bullet 复 制 表 \\colorRed复制表

仅仅复制表的结构

语法 c r e a t e   t a b l e   复 制 表   l i k e   原 始 表 ; \\colorVioletcreate \\ table \\ 复制表 \\ like \\ 原始表; create table  like ;

复制表的结构+数据

语法 c r e a t e   t a b l e   复 制 表   s e l e c t   ∗   f r o m   旧 表 名 ; \\colorVioletcreate \\ table \\ 复制表 \\ select \\ * \\ from \\ 旧表名; create table  select  from ;


字段类型

我们选择类型的原则为:所选择的类型越简单越好,能保存数值的类型越小越好。

整型

分类:tinyint、smallint、mediumint、int/integer、bigint(分别占1,2,3,4,8字节)

注意事项

∙ \\bullet 我们一般使用 INT,它默认为有符号整型。当需要使用无符号整型时,在INT 后追加 UNSIGNED 关键字。

∙ \\bullet 超出范围后,报out of range异常。

∙ \\bullet 如果不设置长度,会有默认长度,长度代表了显示的最大宽度,使用zerofill关键字可以显示前面补充的0(但是只能对正数使用改关键字)。

示例:

小数型

小数型数据具体还可以再分为浮点型和定点型。

其中浮点型数据类型有float(M,D)(4个字节)、double(M,D)(8个字节)。M表示整数位数+小数位数,D表示小数位数,但是我们一般不去设置参数,我们直接让它自己进行判断。

其中定点型数据类型为decimal(M,D) ,它的范围与double相同,但是更精确。当我们不给它参数时,它会有默认值为(10,0)

示例:

字符型

字符型类型我们主要使用的是char(M)varchar(M),M表示最多的字符数。它们的比较如下:

类型含义是否节省空间是否可以省略M性能
char(M)固定长度字符,每次申请空间都为M个字符可以,默认为1相对较高
varchar(M)可变长度字符,按照情况动态申请空间不可以相对较低

其余还有一些字符型类型比如说:

binaryvarbinary保存较短的二进制字符串


enum用于保存枚举,只能选一个插入


set 用于保存集合,一次可以插入多个

日期型

日期型的类型主要有以下几个:

类型字节含义
data4表示日期
time3表示时间
year1表示年份
datatime8表示时间+日期
timestamp4表示时间+日期

注意:timestamp 比datatime更加精确,它会显示当前时区的时间(随时区的变化而变化)。


约束类型

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

分类

约束的分类

NOT NULL 非空约束,保证该字段的值非空,比如:姓名、学号等;


DEFAULT 默认约束,保证该字段有默认值,比如:性别


PRIMARY KEY 主键约束,用于保证该字段的值具有唯一性并且非空,比如学号


UNIQUE 唯一 约束,用于保证该字段的值具有唯一性,可以为空,比如座位号,但是只能有一个空,否则就算重复了


CHECK 检查约束,mysql不支持,用来检查有无不符合的值


FOREIGN KEY 外键约束,用于限制两个表的关系,用于保证该字段的值必须来自主表关联列的值。在从表添加外键约束用于引用主表中某列的值。比如学生表的专业编号。

添加约束的时机:设计表时、修改表时(在数据添加之前)

约束的添加分类

∙ \\bullet 列极约束:直接在字段名和类型后面追加约束类型,六大约束语法上都支持,但是外键约束没有效果

∙ \\bullet 表极约束:在各个字段的最后添加除了非空、默认,其他的都支持,一般表极约束只添加外键约束。

创建表时添加约束

使用列极约束:

使用表极约束:在各个字段的最后添加 [CONSTRAINT] 约束名 约束类型(字段名)

注意:show index from … 查看表中的所有索引,包括主键、外键、唯一

修改表时添加约束

1.添加列级约束modify column,在列名后面接列类型、约束

2.添加表级约束 add,在列名后面接列类型、约束

修改表时删除约束

语法 a l t e r   t a b l e   表 名   d r o p   约 束   约 束 名 \\colorVioletalter \\ table \\ 表名 \\ drop \\ 约束 \\ 约束名 alter table  drop  

注意

主键约束和唯一约束的对比

类型唯一性是否允许为空一个表中可以有几个是否允许组合
主键保证不允许只能有一个允许(不推荐)
唯一保证允许可以有多个允许(不推荐)

外键特点

1.在从表上设置外键关系

2.从表的外键列的类型与主表的外键列类型一致或兼容,名称无要求

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

4.插入数据时,先插入主表后插入从表;删除数据时,先删除从表,后删除主表

以上是关于DDL数据语言|库表管理(MySQL)的主要内容,如果未能解决你的问题,请参考以下文章

DDL数据语言|库表管理(MySQL)

MySQL基础-15DDL语言(数据定义语言)-2.表的管理

数据库定义语言——DDL语言

数据库定义语言——DDL语言

DDL语言(MySQL表的管理)

MySQL4.DDL语言(库和表的管理+数据类型+常见约束)