标签:utf8 翻译 耦合度 where name tables drop port cascade
表的完整性约束
一、创建表的完整语法 #语法: create table 库名.表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); 约束条件:是在数据类型之外对字段附加的额外的限制 #注意: 1、最后一个字段之后不能加逗号 2. 在同一张表中,字段名是不能相同 3. 宽度和约束条件可选,字段名和类型是必须的 二 not null与default 一般连用:不为空,如果为空则用默认值 create table t1( id int primary key auto_increment, name varchar(16) not null, sex enum(‘male‘,‘female‘) not null default ‘male‘ ); insert into t1(name) values(‘egon‘),(‘lxx‘),(‘alex‘); 三 unique key #限制唯一 没限制空 #默认约束名和字段名相同,可以用constraint 指定约束名 #可以两个字段名 联合唯一 create table t2(x int unique); create table t3( x int, y varchar(5), unique key(x) ); create table t4( x int, y varchar(5), constraint uni_x unique key(x) # ); create table service( ip varchar(15), port int, unique key(ip,port) ); insert into service values (‘1.1.1.1‘,3306), (‘1.1.1.1‘,3306); 四 primary key 站在约束角度看primary key=not null unique 以后但凡建表,必须注意: 1、必须有且只有一个主键 2、通常是id字段被设置为主键 3、id int primary key auto_increment 这一段可以当成固定用法 4、如果没有主键,则自动在字段中找一个不为空且唯一的字段做主键,也没有的话,就用隐藏的 5、我们用的存储引擎一般是innodb,它要求必须有主键 6、键=索引 存储引擎以主键作为索引,提升查询速度 7、联合主键,不常用,几个字段做成一个主键 create table t5( id int primary key auto_increment ); 五 foreign key: 外键的耦合度,导致不好扩展,以后尽量不要用 类比对象编程中的鸭子思想 限制关联表某一个字段的值必是来自于被关联表的一个字段的 # foreign key注意: # 1、被关联的字段必须是一个key,通常是id字段 # 2、创建表时:必须先建立被关联的表,才能建立关联表 create table dep( id int primary key auto_increment, dname varchar(20), info varchar(50) ); create table emp( id int primary key auto_increment, name varchar(15), age int, dep_id int, foreign key(dep_id) references dep(id) on update cascade on delete cascade ); # 3、插入记录时:必须先往被关联的表插入记录,才能往关联表中插入记录 insert into dep(dname,info) values (‘IT‘,‘技术能力有限部门xxx‘), (‘Sale‘,‘文化程度不高‘), (‘HR‘,‘招不到人部门‘); insert into emp(name,age,dep_id) values (‘egon‘,18,1), (‘alex‘,28,2), (‘wsj‘,38,2), (‘lxx‘,30,1), (‘xiaohou‘,18,3); ps:删除时:应该先删除关联表emp中的记录,再删除被关联表对应的记录
存储引擎
# 补充存储引擎: create table t12(x int)engine=‘myisam‘; create table t13(x int)engine=‘innodb‘; create table t14(x int)engine=‘memory‘; create table t15(x int)engine=‘blackhole‘; mydql里分不同的表,不同的表组织结构不一样,需要用不同的存储引擎处理 类比关系 实际是一堆不同功能的代码 innodb=文本编辑器:处理文本格式 myisam=MP3播放器:处理MP3格式的 show engines; 查看所有的引擎 innodb:索引组织表 索引+数据 ################参考 http://www.cnblogs.com/linhaifeng/articles/7213670.html 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用excel,处理图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。
表之间的关系
表之间的关系: 外键的延伸: # 找两张表的关系的窍门 emp dep #1、先站在左表的角度:去找左表emp的多条记录能否对应右表dep的一条记录 翻译:多个员工能否属于一个部门 #2、然后站在右表的角度:去找右表dep的多条记录能否对应左表emp的一条记录 翻译:多个部门能否拥有同一名员工 # 多对一:结果的判断 #1、如果只有单向的多对一成立,那么最终的关系就是多对一 #2、在emp表新增一个字段dep_id, 该字段外键关联dep(id) # 多对多:结果的判断 #1、双向的多对一就是多对多 #2、需要建立第三张表,有一个字段值fk左表,一个字段的值fk右表 create table author( id int primary key auto_increment, name varchar(16), age int ); create table book( id int primary key auto_increment, bname varchar(20), price int ); create table author2book( id int primary key auto_increment, author_id int, book_id int, foreign key(author_id) references author(id) on update cascade on delete cascade, foreign key(book_id) references book(id) on update cascade on delete cascade ); # 一对一:无需参考窍门,左表的一条数据唯一对应右表的一条记录 fk+unique
修改、复制、删除表
http://www.cnblogs.com/linhaifeng/articles/7232894.html#_label1
上节课复习
上节课复习: 1、基本sql语句 库 增 create database db1 charset utf8; 删 drop database db1; 改 alter database db1 charset gbk; 查 show create database db1; show databases; 表 use db1; select database(); 增 create table t1(id int,name varchar(15)); 删 drop table t1; 改 alter table t1 add sex enum(‘male‘,‘female‘); alter table t1 modify name varchar(16); alter table t1 change name NAME varchar(16); 查 show tables; show create table t1; 记录 增 insert into t1 values(1,‘egon‘),(2,‘egon2‘),(3,‘egon3‘); 删 delete from t1 where id > 3; 清空表: truncate t1; 改 update db1.t1 set name=‘xxx‘ where id > 3; 查 1 egon1 2 egon2 3 egon3 4 egon4 5 egon5 select id from db1.t1 where id > 3; 2、创建表的数据类型 今日内容: 1、表的完整性约束 表之间的三种关系 多对一 多对多 一对一 修改表 复制表 删除表 预习: 2、单表查询 3、多表查询 作业: http://www.cnblogs.com/linhaifeng/articles/7238814.html#_label7
标签:utf8 翻译 耦合度 where name tables drop port cascade
原文地址:https://www.cnblogs.com/xujinjin18/p/9343392.html