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


库的管理

∙ \bullet 创 建 库 c r e a t e \color{Red}创建库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 ]   库 名 ; \color{Violet}create \ database \ [if \ not \ exists] \ 库名; create database [if not exists] ;

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

∙ \bullet 修 改 库 a l t e r \color{Red}修改库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   字 符 集 ; \color{Violet}alter \ database \ 库名 \ charcter \ set \ 字符集; alter database  charcter set ;

∙ \bullet 删 除 库 d r o p \color{Red}删除库drop drop

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

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


表的管理

∙ \bullet 创 建 表 c r e a t e \color{Red}创建表create create

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

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

∙ \bullet 修 改 表 a l t e r t \color{Red}修改表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   列 名 [ 列 类 型   约 束 ] ; {\color{Violet}alter \ 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 \color{Red}删除表drop drop

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

∙ \bullet 复 制 表 \color{Red}复制表

仅仅复制表的结构

语法 c r e a t e   t a b l e   复 制 表   l i k e   原 始 表 ; \color{Violet}create \ 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   旧 表 名 ; \color{Violet}create \ 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   约 束   约 束 名 \color{Violet}alter \ table \ 表名 \ drop \ 约束 \ 约束名 alter table  drop  

注意

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

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

外键特点

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡咻飞兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值