-
3-4mysql表级约束与列级约束:
1、对一个数据列建立的约束,称为列级约束;
2、对多个数据列建立的约束,称为表级约束;
3、列级约束既可以在列定义时声明,也可以在列定义后声明;
4、表级约束只能在列定义后声明
5、并不是所有约束都存在表级约束。如NOT NULL 和DEFAULT约束是不存在表级约束的。
查看全部 -
MySQL外键约束
语法:FOREIGN KEY (外键列名称) REFERENCES 父表名称 (参照列名称)。
150错误:子表中的外键列和父表中的参照列数据类型不一致。
约束概念:
1.约束保证数据的完整性和一致性。
2.约束分为表级约束和列级约束(针对字段数目的多少决定的,针对一个字段约束,称为列级约束。针对两个或者两个以上的约束,称为表级约束)
3.约束按功能划分:
NOT NULL(非空约束)
PRIMARY KEY (主键约束)
UNIQUE KEY (唯一约束)
DEFAULT (默认约束)
FOREIGN KEY (外键约束)
外键约束:保持数据一致性、完整性、实现一对一或者一对多关系。(这也是为什么称为MySQL关系型数据库的原因)
外键约束的要求
1.父表(子表所参照的表)和子表(具有外键列的表)必须使用使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能为InnoDB。
3.外键列(加FOREIGN KEY关键词的一列)和参照列(外键列参照的一列)必须具有相似的数据类型,如果是数字数据类型,则数字长度或者是否有符号位必须相同;如果为字符数据类型长度可以不同。
4.外键列和参照列(主键在创建的同时,会自动创建索引seq_in_index)必须创建索引。如果外键列不存在索引的话,MySQL将自动创建。
编辑数据库的默认存储引擎(实现1和2的要求,修改完需要重启MySQL服务)
MySQL配置文件(my.ini):default-storage-engine=INNODB。
查看数据表的存储引擎和字符集:SHOW CREATE TABLE 表名。
查看数据库是否创建索引:SHOW INDEXES FROM 表名。(SHOW INDEXES FROM 表名\G以网格显示索引)如果seq_in_index:后有值,说明创建了索引。
查看全部 -
参照操作的含义是;在创建了外键约束后,继续添加的一些操作。
创建了外键约束后,必须先在主表中插入记录
若有一条记录没有写入成功,若存在自动编号的话,编号会往后调跳移位eg。1,3,4
删除命令DELETE FROM 表名 WHERE 序号名 =几;
在实际开发中很少使用物理的外键约束(只有innDB引擎支持),一般使用逻辑的外键约束(MyISAM)
查看全部 -
删除主键约束:ALTER TABLE 列名 DROP PRIMARY KEY(不需要加主键名,因为主键是唯一的)
SHOW INDEXES FROM 列名;KEY .... 指的是索引
删除唯一约束:ALTER TABLE 表名 DROP 约束名;
删除索引;ALTER TABLE 表名 DROP 索引;
删除外键约束ALTER TABLE 表名 DROP FOREIGN KEY 外键名
查看外键名(系统赋予);SHOW CREATE TABLE 表名;
查看全部 -
NOT NULL和DEFAULT只存在列级约束不存在表级约束
列级约束既可以在列定义时声明,也可以在列定义以后加“,”另起一行再进行声明
查看全部 -
想让表出现默认值,则需在制表时添加default字符
查看全部 -
参照操作的含义是;在创建了外键约束后,继续添加的一些操作。
创建了外键约束后,必须先在主表中插入记录
若有一条记录没有写入成功,若存在自动编号的话,编号会往后调跳移位eg。1,3,4
删除命令DELETE FROM 表名 WHERE 序号名 =几;
在实际开发中很少使用物理的外键约束(只有innDB引擎支持),一般使用逻辑的外键约束(MyISAM)
查看全部 -
MySQL的唯一约束
UNIQUE KEY:保证记录的唯一性。
特点1:字段可以存在空值(NULL)。(如果保存了多个NULL,最终只会保留1个)
特点2:一张表可以存在多个唯一约束。
查看全部 -
子表;具有外键列的表;
父表;具有参照列的表;
外键列没有索引系统会自动为其创造索引,系统不会为参照列创造索引(具有主键的参照列,主键为其创建索引)
查看创建命令;SHOW CREATE TABLE 表名;
ENGINE=innoDB
查找是否存在索引
SHOW INDEXES FROM 表名;(+\G以网格的形式呈现)
索引格式 Seq_in_index
查看全部 -
MySQL初涉主键约束
PRIMARY KEY:保证了记录的唯一性,对于整形数据类型如果使用了AUTO_INCREMENT可以不赋值。
特点1:主键自动为NOT NULL。
特点2:主键不一定必须和AUTO_INCREMENT一起使用。即有AUTO_INCREMENT必须为主键,但主键不一定是AUTO_INCREMENT
特点3:一张数据表只可以存在一个主键
查看全部 -
MySQL自动编号(保证了每一条记录的唯一性)
自动编号:为某一字段(必须为数值型,如果为浮点数,小数位数一定要为0)添加AUTO_INCREMENT属性,针对主键这一属性的特性。
特点1:必须与主键组合使用。
特点2:默认情况下,起始值为1,每次增量为1.
查看全部 -
MySQL字段的空值与非空
NULL:字段值可以为空,字段默认为NULL。
NOT NULL:字段值不允许为空,如果为空可能会产生错误。
查看全部 -
插入记录 INSERT [INTO] tbl_name[(col_name,....)] VAULES(val,....) INSERT tb1 VALUES("Tom",25,6857.22);//为所有字段赋值 INSERT tb1(username,salary)VALUES("John",5253.95);//为某部分字段赋值
查看全部 -
查看数据表的结构:show columns from tbl_name;
查看全部 -
MySQL创建数据表
数据表(或称表):数据库最重要的组成部分之一,是其他对象的基础。
使用数据库:USE 数据库名。
显示当前正在打开的数据库:SELECT DATABASE();
创建数据表:CREATE TABLE [IF NOT EXISTS] 表名(
列名 数据类型,
...
)
整形无符号关键字:UNSIGNED。
查看全部
举报