-- 建立表的相关约束
主键约束 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;

Mysql-学习笔记(==》约束 六)的更多相关文章

  1. MySQL学习笔记——约束

    1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性. 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除. 3.大部分数据库支持下面五类完整性约束: - NOT NULL非空 ...

  2. Mysql学习笔记(六)增删改查

    PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...

  3. MySQL学习笔记(六)—— MySQL自连接

    有的时候我们需要对同一表中的数据进行多次检索,这个时候我们可以使用之前学习过的子查询,先查询出需要的数据,再进行一次检索. 例如:一张products表,有产品id,供应商id(vend_id),产品 ...

  4. MySQL学习笔记(六)

    好耶,七天课程的最后一天!我当然还没精通了,,,之后可能是多练习题目然后再学学其他的东西吧.mysql新的知识点也会在后面补充的. 一.杂七杂八补充 1. 当多个函数共用同样的参数时,可以转变成类进行 ...

  5. MySQL学习笔记十六:锁机制

    1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...

  6. MySQL学习笔记(六)MySQL8.0 配置笔记

    今天把数据库配置文件修改了,结果重启不了了 需要使用 mysqld --initialize 或 mysqld --initialize-insecure 命令来初始化数据库 1.mysqld --i ...

  7. MYSQL学习笔记 (六)explain分析查询

    使用EXPLAIN可以模拟优化器执行SQL语句,从而知道MYSQL是如何处理你的SQL,从而分析查询语句或者表结构的瓶颈.

  8. MySQL学习笔记——〇六SQLAlchemy框架

    我们在前面所用的方法都是在可视化的视图软件或者terminal里直接写SQL语句来对数据库进行访问,这里我们大概讲一下一个新的框架——SQLAlchemy. OEM框架 OEM的概念 对象-关系映射( ...

  9. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  10. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. How to wipe silicon to CPU 如何给CPU正确涂抹硅脂

    随 着计算机性能的提升,CPU的功耗也在不断的增大,虽然现在由于改进了工艺使得在功耗方面得到了一定的缓解,但由于近年来显卡性能的不断增强,也开始走上 了CPU功耗性能成正比的老路,功耗依然还是一个值得 ...

  2. [原创]java WEB学习笔记63:Struts2学习之路--表单标签 用户注册模块

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Ruby操作VBA的注意事项和技巧(1):乱码、获取VBA活动和非活动窗口的名称与路径、文件路径的智能拼接与截取(写入日期)

    1.VBA编辑器复制粘贴出来的代码乱码     解决方法:切换到中文输入模式再复制出来就行了 2.获取VBA活动和非活动窗口的名称与路径 Dim wbpath, filename As String ...

  4. 面向切面编程AOP:基于XML文件的配置

    除了使用AspectJ注解声明切面,Spring也支持在bean的配置文件中声明切面,这种声明是通过aop scheme中的XML元素完成的. 首先建立一个类: package com.sevenhu ...

  5. 。。。Hibernate注解配置的注意事项。。。

    今天本来打算录视频的,突然遇到一个拦路虎,Hibernate注解配置,有一个注意点:要么都在属性上面注解配置,要么都在getXX()方法上面用注解配置,要不然就会报错: Caused by: org. ...

  6. springmvc+spring+mybatis分页查询实例版本1,ver1.0

    无聊做做看看,几乎没有怎么仔细做过这方面的,总是以为很简单,想想就会,实际做起来结合工作经验感觉还是挺有收获的,可以用在自己的项目上 第一版本思路:框架使用ssm,这个无所谓,采用分页语句查询指定页面 ...

  7. SQL —— 视图

    1. 为什么使用视图 1) 提高数据的安全型,不同权限的用户可以查看数据的不同. 2) 符合用户日常业务逻辑 2. 什么是视图 视图是一种查看数据库中一个或多个表中的数据的方法. 视图是一种虚拟表. ...

  8. [OrangePi] Building the system

    You can try to build Debian/Ubuntu for OrangePI yourself. Clone my GitHub repository. You will need ...

  9. BI案例:BI在连锁零售业应用(ZT)【转】

    第一部分:连锁零售企业上BI的必要性. 目前国内的连锁零售行业的发展趋势,呈现出产业规模化,经营业态多样化,管理精细化的特点.所谓管理精细化就是"精耕细作搞管理,领先一步订系 统" ...

  10. android 学习随笔十二(网络:使用异步HttpClient框架)

    使用异步HttpClient框架发送get.post请求 在https://github.com/ 搜索 asyn-http https://github.com/search?utf8=✓& ...