-- 建立表的相关约束
主键约束 PRIMARY KEY (主键自带索引 PK 关系数据库领域,要求一个表只有一个主键)
CREATE TABLE t1(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
tname VARCHAR(30)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

-- 复合主键 有一个重复 按另外一个排
CREATE TABLE t1(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
tname VARCHAR(30),
PRIMARY KEY(tid,tname)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
SELECT * FROM t1;
-- 主键名 CONSTRAINT myhpk
CREATE TABLE t1(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
tname VARCHAR(30),
CONSTRAINT myhpk PRIMARY KEY(tid)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

DROP TABLE t1;
存储引擎
MYISAM 速度快
INNODB 事务 外键 (联网售票,银行转账业务,对事物要求高项目)

默认约束 DEFAULT ‘男’ DEFAULT 18
CREATE TABLE t1(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
tname VARCHAR(30) NOT NULL COMMENT '老师姓名',
tage TINYINT UNSIGNED DEFAULT 18,-- 默认年龄
PRIMARY KEY(tid)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO t1(tname) VALUES('李老师');
DROP TABLE t1;
CREATE TABLE t1(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
tname VARCHAR(30) NOT NULL COMMENT '老师姓名',
tdate DATETIME DEFAULT NOW(),-- 当前时间
tage TINYINT UNSIGNED DEFAULT 18,-- 默认年龄
PRIMARY KEY(tid)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
SELECT * FROM t1;
非空约束 NOT NULL
CHECK 约束(没什么卵用)
CREATE TABLE t1
(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
tname VARCHAR(20),
tage TINYINT UNSIGNED,
CHECK (tage>18),
PRIMARY KEY(tid)
);
INSERT INTO t1 VALUES(NULL,'张三',2)
DROP TABLE t1;

外键约束 FOREIGN KEY REFERENCES 要求使用外键的表 必须是 INNODB 存储引擎

-- 根据旧表建立新表 复制结构 不复制内容
CREATE TABLE ttt LIKE student;

DROP TABLE job,s,t,student,ttt;

-- 外键的使用

CREATE TABLE teacher
(
tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
tname VARCHAR(30) NOT NULL,
KEY(tname),-- 建立表的时候,同时在tname列建立索引
PRIMARY KEY(tid)
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO teacher VALUES(NULL,'张老师'),(NULL,'李老师'),(NULL,'赵老师');
SELECT * FROM teacher;
DROP TABLE teacher;

CREATE TABLE student
(
sid INT UNSIGNED NOT NULL AUTO_INCREMENT,
sname VARCHAR(30) NOT NULL,
tid INT UNSIGNED,
PRIMARY KEY(sid),
-- constraint fk foreign key(tid) references teacher(tid) -- 建立外键 关联到teacher表
-- constraint fk foreign key(tid) references teacher(tid) on delete cascade, 删除与之关联项
CONSTRAINT fk FOREIGN KEY(tid) REFERENCES teacher(tid) ON DELETE SET NULL, -- 删除后,空的内容用null补上
)ENGINE=INNODB AUTO_INCREMENT=201601 DEFAULT CHARSET=utf8;
INSERT INTO student VALUES(NULL,'张三',1),(NULL,'赵六三',1),(NULL,'李四',2),(NULL,'王五',1)
SELECT * FROM student;

最新文章

  1. centos6 安装mysql报错Requires: libc.so.6(GLIBC_2.14)
  2. SQL之case when then用法
  3. MVVM框架下,WPF实现Datagrid里的全选和选择
  4. arduino--1s间隔闪烁灯
  5. 【原】js实现复制到剪贴板功能,兼容所有浏览器
  6. JS 获取服务器时间
  7. PNG兼容IE6解决方法
  8. ubuntu安装配置搜狗拼音输入法
  9. 1104解决ecos挂件中数组传递的相关问题。
  10. JDBC中PreparedStatement和Statement的区别
  11. 在controller间分享数据(第一种办法)
  12. C#反射动态赋值
  13. Linux自动修改IP脚本(手动编写)
  14. [1] C# IS & AS讲解
  15. Spring定时任务quartz表达式
  16. [Haskell] 为什么列表操作++很昂贵?
  17. Python 制作Android开发 所需的适配不同分辨率的套图
  18. MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用
  19. js 上下滚动加停顿效果,js 跑马灯加停顿效果
  20. js的事件流事件机制

热门文章

  1. How to export a template in Visual Studio?
  2. csuoj 1113: Updating a Dictionary
  3. RubyMine(基于IntelliJ IDEA的Ruby集成开发环境)快捷键
  4. AMAB interconnector PL301(二)
  5. mysql 管理工具
  6. 开启xp_cmdshell
  7. struct2 学习总结
  8. java 网络编程(四)----UDP进阶篇聊天小程序
  9. Ceph的状态错误
  10. android 学习随笔三(测试与单元测试框架)