MySQL(三)约束以及修改数据表

这里有重复内容,因为我听了2遍

约束类型与作用域

列级约束的定义为对单一字段起作用,表级约束定义为对多字段起作用

 

设置数据库默认引擎方法
在MySQL配置文件(my.ini)中写入或更改该句,更改完记得重新启动MySQL服务.

查看数据表创建命令

show create table  表名;

第一个表,也是父表

父表的id被设为主键,主键会自动创建索引

第二个表,也就是子表/外键表

 

第一次数据类型不一样

第二次符号位不一样

直到第三次才成功

查看子表的索引

子表有2个索引,一个是主键索引,一个是参照列索引

 

外键约束的具体操作

主要作用为,子表在父表更新的时候是否也自动进行相应的操作

再创建一个自动删除的子表

如果设置了外键约束,需要先给参照列添加数据才能给外键列添加数据

先给父表添加数据,因为id是主键,而且自动编号,所以只需要给pname添加数据就可以

然后给子表的添加数据

成功给子表外键列(pid)添加一个3,是因为参照列(id)有3,

7添加失败是因为参照列(id)没有7

同上

了解一般计算机语言中的枚举是怎么回事基本都能理解其中原理

查看users1表中的数据id之所以是1   3  是因为第二次的7添加失败,但自动编号还是会加1(个人猜测为添加之后检查不符合规则然后又将其删除)

现在将参照列(id)中的3 字段删除,再看看users1表的数据

在添加delete on cascade条件下子表的外键列(pid)的对应记录确实消失了

set null 即为,当父表参照列字段删除时,子表外键列对应的字段设置为空值

 

外键约束分为逻辑外键约束与物理外键约束

物理外键约束即为基于innodb引擎在表之间使用外键关键词建立的约束

逻辑外键约束为:我们在定义两张表的结构的时候,我们是按照两张表存在着某种结构的方式去定义,但是不去使用外键约束关键词来定义

 

数据表的修改包括,列的增删,约束的增删

在表建立完之后再添加一个列


ALTER 意为修改    TABLE 意为表     ADD意为添加     FIRST 置顶   AFTER 某列后面

ALTER TABLE 表名 ADD 列名 数据类型 符号位 空值约束 默认值约束  列位置   

//如果没添加列的位置关键词,则默认在最后一列

添加多列的时候无法修改列的位置,只能在列的最后

ALTER TABLE 表名 ADD [列] (列名1 各种列定义,列名2 各种列的定义,列名3...);

删除列

删除多列只需要用逗号隔开,每个列名前面加一个DROP就行,例子如下:

也可以删除的同时增加 一个,例子如下

增添约束

添加主键约束

语句为:ALTER TABLE 表名 ADD CONSTRAINT 自定义约束名 索引类型(列名);

先创建一个无主键的表 

再添加了一个id列

图中CONSTRAINT为约束关键词

PK_user2_id 为约束自定义名称

id 确实变成了主键.

 

其中还有索引的类型,索引的类型有2种:B树索引和哈希索引,后面讲.

添加唯一约束

 

和上面的主键约束语句差不多,不同之处在于约束类型和列名不同

添加约束时可以不写constraint,直接写约束类型,可以被MySQL自动识别.

自定义约束名也可以省略掉,可以简化为下面这样:

ALTER TABLE 表名 ADD   索引类型(列名);

成功了,将id变成主键,username增加了唯一约束.

添加外键约束

可以简化为:ALTER TABLE 表名 ADD FOREIGN KEY  (外键列) REFERENCES 父表名 (参照列);

REFERENCES意为:参照值

添加删除默认约束

先添加一个普通的列

然后给age添加默认值约束,其实说是修改默认值比较合适,因为每个列都自带默认值为null

所以可以简化为:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认的值;

原以为将默认值修改回null 相当于删除了默认值,

结果没法将null当做默认值,想将默认值变回null,只能使用删除命令.

也就是这条命令 ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

主键约束的删除:ALTER TABLE 表名  DROP PRIMARY KEY;    /因为主键只有一个,所以不需要指定列名

唯一约束的删除:ALTER TABLE 表名 DROP INDEX 索引名 ;

索引名查看命令: SHOW INDEXES FROM 表名;

图中的key_name就是索引名,其实翻译过来是键名,也就是约束名

成功了,删除了约束,列依旧存在.

删除外键约束

 

命令简化为:ALTER TABLE 表名 DROP FOREIGN KEY 约束名称

约束名称查询可用命令:SHOW CREATE TABLE 表名;

删除成功了

删除外键约束的时候不会自动删除索引,需要手动删除,用上面的删除索引命令就可以彻底删除.

先查询索引名,再删除索引.

修改列定义

修改列定义所包含的是列的各种设定,比如数据类型,列名,列的位置等等..

命令: ALTER TABLE 表名  MODIFY   [COLUMN] 列名 列的各种设定(如果不修改也要写原本的设定(列名也是列属性之一)) [FIRST | AFTER 放置于某列后面]

意译: 要修改某表 表名   要修改某列的列名 列的某些属性  列的位置

该命令用于列创建完之后修改列而使用

比如现在要修改id列的位置

具体例子:

结果

修改数据类型时,将长类型修改为短类型会容易导致数据丢失,原因是数据截取,学过机器语言的应该了解什么情况的,不解释了.

修改数据类型例子:

修改列名称

修改列名例子:

注意关键词,使用的是CHANGE,而且也能修改列的其他设定,确实比MODIFY多一个功能.

修改表名称

第一种方法例子:

语句:ALTER TABLE 表名 RENAME [TO | AS ] 新表名;

第二种方法例子:

第二种方法支持同时修改多个表名,用逗号隔开

少使用表或者列的更名,原因和修改原文件名会导致快捷方式失效一样

本章知识点总结

NOT NULL 非空约束

PRIMARY KEY   主键约束 

UNIQUE KEY  唯一约束

DEFAULT   默认约束  

FOREIGN KEY   外键约束

 

 

注意,是对表的操作

创建新表:

删除与查看表:

表的约束:

这里约束是指列约束,一般是对一条记录内的不同字段起限制

表中一般都要有一个主键,但也可以有两个

实际开发中,主键列一般没有实际作用.

新约束对旧记录无效,

添加单条记录

INSERT 表名 VALUES(字段1,字段2,...);

字段可以是直接值或表达式,或者是MySQL提供的api算法

 

添加多条记录

将每一条记录用逗号隔开,例子如下:

 

添加查询结果记录

后面讲,这个添加记录的方法类似于自动复制黏贴,将指定的记录从表a导入表b

 

讲师:任小龙  

文中所有图片中的信息皆为讲师所写,本人仅仅将其截图作为笔记.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值