Mysql-学习笔记(==》约束 六)
-- 建立表的相关约束
主键约束 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-学习笔记(==》约束 六)的更多相关文章
- MySQL学习笔记——约束
1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性. 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除. 3.大部分数据库支持下面五类完整性约束: - NOT NULL非空 ...
- Mysql学习笔记(六)增删改查
PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...
- MySQL学习笔记(六)—— MySQL自连接
有的时候我们需要对同一表中的数据进行多次检索,这个时候我们可以使用之前学习过的子查询,先查询出需要的数据,再进行一次检索. 例如:一张products表,有产品id,供应商id(vend_id),产品 ...
- MySQL学习笔记(六)
好耶,七天课程的最后一天!我当然还没精通了,,,之后可能是多练习题目然后再学学其他的东西吧.mysql新的知识点也会在后面补充的. 一.杂七杂八补充 1. 当多个函数共用同样的参数时,可以转变成类进行 ...
- MySQL学习笔记十六:锁机制
1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...
- MySQL学习笔记(六)MySQL8.0 配置笔记
今天把数据库配置文件修改了,结果重启不了了 需要使用 mysqld --initialize 或 mysqld --initialize-insecure 命令来初始化数据库 1.mysqld --i ...
- MYSQL学习笔记 (六)explain分析查询
使用EXPLAIN可以模拟优化器执行SQL语句,从而知道MYSQL是如何处理你的SQL,从而分析查询语句或者表结构的瓶颈.
- MySQL学习笔记——〇六SQLAlchemy框架
我们在前面所用的方法都是在可视化的视图软件或者terminal里直接写SQL语句来对数据库进行访问,这里我们大概讲一下一个新的框架——SQLAlchemy. OEM框架 OEM的概念 对象-关系映射( ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
随机推荐
- JQuery下CheckBox全选全不选反选
<script src="JS/jquery-1.7.1.js"></script> <script type="text/javascri ...
- 复习课程jdbc:使用配置文件properties进行连接数据库,数据库存取图片,批处理,时间戳,事物回滚等等
使用配置文件properties进行连接数据库 首先创建一个file自定义文件名,但是后缀名必须改为.properties(不分大小写):如config.properties: 然后双击config. ...
- JSP数据交互习题错误总结
1:如果注册完页面有中文字符需要在提交后的页面显示注册信息,切记先把接受到的request的编码方式改为中文:request.setCharacterEncoding("utf-8" ...
- 同时启动多个Tomcat
一,修改配置文件server.xml的端口 C:\apache-tomcat-5.5.23-1\conf\server.xml用记事本什么的打开修改3个地方 第一: <Server port ...
- oracle ebs request一直pending
如果提交请求以后,状态一直是pending状态,可以在“工具”打开“Manager”,查看一下Maximum是否有设置错,另外pending的数量当前是多少. 如果Maximum是1,pending是 ...
- mybatis(一)安装
1.创建web项目,添加jar包 2.创建实验表user_t 3.在src下创建conf.xml文件,如下 <?xml version="1.0" encoding=&quo ...
- [tp3.2.1]让默认页面: 加载Home模块的Index控制器;而让admin.php默认去加载Admin模块的Adminc控制器.
QQ:让index.php默认加载Home模块的Index控制器;而让admin.php默认去加载Admin模块的Adminc控制器.AA:复制index.php命名为admin.php复制(新建)A ...
- 图像处理工具包ImagXpress中如何定义查看器的属性
想要在图像处理控件ImagXpress中查看一个图像,首先需要创建一个查看器,之后你可以按照你自身的需要,来定义查看器的属性. 创建查看器 想要动态的创建一个查看器,需要先定义一个新的mageXVie ...
- 苹果系统直接读写 ntfs 磁盘
苹果系统对 ntfs 能读,但不能写. 方案1:修改 fstab 法 ======================================== 读写支持.在使用本教学文章之前,请先确定你没有安 ...
- EL表达式简介
EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据. ...