表的完整性约束

约束条件与数据类型的宽度一样,都是可选参数

作用:用于保证数据的完整性和一致性

主要分为:

not null  标识该字段不能为空

default   为该字段设置默认值

unsigned  无符号

zerofill   使用0填充

auto_increment  标识该字段的自动增长(整数类型,而且为主键)

primary key   标识该字段为该表的主键,可以唯一的标识记录

foreign key   标识该字段为该表的外键

unique key    标识该字段的值是唯一的

一、not null与default

create table t1(

id int primary key auto_increment,

name varchar(16) not null,

sex enum(‘nale’,’female’) not null default ‘male’

);

Insert into t1(name) values(‘egon’),(‘lxx’),(‘alex’);

二、unique key

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)

);  # 联合唯一

三、primary key

站在约束角度看primary key = not null unique

以后但凡建表,必须注意:

1、必须有且只有一个主键

2、通常是id字段被设置为主键

create table t5(

id int primary key auto_increment

);

# 补充存储引擎:

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';   #不会有任何数据信息

四、foreign key:限制关联表某一个字段的值必是来自于被关联表的一个字段的

注意:

1.被关联的字段必须是一个key,通常是id字段

2.创建表时:必须先建立被关联的表,才能建立关联表

3.插入记录时:必须先往被关联的表中插入记录,才能往关联表中插入记录

4.删除时:应该先删除关联表emp中的记录,再删除被关联表对应的记录

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

);

insert into dep(dname,info) values

(‘IT’,’技术能力有限部门’),

(‘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);

# 找两张表的关系的窍门

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

mysql表相关操作的更多相关文章

  1. mysql 表相关操作(1)

    查询语句 select * from t_deptselect empno,ename,sal from t_emp select    empno,   sal * 12 as "inco ...

  2. MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)

    知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...

  3. MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型

    一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...

  4. MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表

    表相关操作(二)之约束条件.关联关系.复制表 一.约束条件  1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # ...

  5. MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型

    库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...

  6. MySQL之表相关操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/linhaifeng/articles/7213670.html ...

  7. MySQL数据库(三)--表相关操作(二)之约束条件、关联关系、复制表

    一.约束条件  1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # 标识该字段不能为空,默认NULL,可设置NOT ...

  8. 安装Mysql的一些问题,比如Net Connect 卸载不掉,注册表相关操作

    我安装mysql用了一段时间后卸载了,在安装就发现安装不了了,原因就是卸载的时候Net Connetc无法卸载,我试了一个月也没有解决后来百度各种还是没有办法解决.于是就尝试自己手动卸载注册表.在“开 ...

  9. MySql学习笔记【三、表相关操作】

    创建表 CREATE TABLE [IF NOT EXISTS] table_name( column_name data_type, ... ) 如: CREATE TABLE test_table ...

随机推荐

  1. Python 下调用C动态链接库 -- (转)

    在linux开发的动态链接库需要被python调用,首先需要生成.so文件. 生成动态链接库的方法网上有很多,主要就是首先根据源文件编译生成.o,然后链接这些.o文件-shared生成.so.需要注意 ...

  2. Android控件——TextView,EditText

    TextView: 显示文本控件 EditText 输入文本框 1.TextView常用属性:

  3. linux编程之共享内存

    linux 进程间通信(IPC)包括3种机制:消息队列.信号量.共享内存.消息队列和信号量均是内核空间的系统对象,经由它们 的数据需要在内核和用户空间进行额外的数据拷贝:而共享内存和访问它的所有应用程 ...

  4. MongoDB的win安装教程

    写在前面的 Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mo ...

  5. NFS+inotify实时同步

    Inotify简介 Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问.修改.删除等各种变化情况并将其作为事件通告给用户态应用程序.Linux内核从2.6.13版本后已经集成了 ...

  6. C# 笔记——委托

    委托是一个类型安全的对象,它指向程序中另一个以后会被调用的方法(或多个方法).通俗的说,委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用 ...

  7. linux磁盘占用跟每个文件夹大小总和不符

    1.一种情况是删除了大文件但是没有释放出来,因为有进程还在调用使用 最简单的方法是reboot下服务器再对比下: 2.查看服务器空间使用情况 df -h cd / du -sh *

  8. linux命令(2):grep命令

    实例一: a.log文件内容如下: 从 a.log 文件中提取包含“WARNING”或”FATAL”,同时不包含“IGNOR”的行 grep -E 'WARNING|FATAL' a.log | gr ...

  9. mybatis spring sqlsession

    sqlsession是什么? 从 http://blog.csdn.net/hupanfeng/article/details/9238127 知道 sqlsession创建 可以看出,创建sqlse ...

  10. [BZOJ4566][Haoi2016]找相同字符 后缀自动机+dp

    4566: [Haoi2016]找相同字符 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1212  Solved: 694[Submit][Stat ...