mysql入门(约束二十一)
来源:互联网 发布:java抓取网页数据 编辑:程序博客网 时间:2024/06/01 19:27
约束:constraint关键字
约束包括: 非空约束:not null
唯一约束 unique
主键约束 primary key 简称 PK
外键约束: foreign key 简称 FK
1:非空约束
select * from t_user;
+------+------+-------------+
| id | name | email |
+------+------+-------------+
| 1 | | 123@163.com |
+------+------+-------------+
1 row in set (0.00 sec)
2:唯一约束:(保证字段所在记录的唯一性)
insert into t_user(id,name,email) values(1,'jack','123@163.com');
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> insert into t_user(id,name,email) values(2,'Simth','123@163.com');
ERROR 1062 (23000): Duplicate entry '123@163.com' for key 'email'
ERROR 1062 (23000): Duplicate entry '123@163.com' for key 'email'
not null,unique可以同时使用
insert into t_user(id,name) values(1,'jack');
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> insert into t_user(id,name) values(2,'jack');
ERROR 1062 (23000): Duplicate entry 'jack' for key 'name'
ERROR 1062 (23000): Duplicate entry 'jack' for key 'name'
3:主键约束(不能为空,字段不能重复,而且可以默认添加索引) 一张数据表只能有一张主键
主键值:是当前行的标识
create table t_user(
-> id int(10) primary key,
-> name varchar(32)
-> );
Query OK, 0 rows affected (0.52 sec)
-> id int(10) primary key,
-> name varchar(32)
-> );
Query OK, 0 rows affected (0.52 sec)
mysql> desc t_user;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(32) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(32) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
create table t_user(
-> id int(10) primary key auto_increment,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.56 sec)
-> id int(10) primary key auto_increment,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.56 sec)
mysql> desc t_user;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.03 sec)
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.03 sec)
mysql> insert into t_user(name) values('jack');
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> insert into t_user(name) values('jack');
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> select * from t_user;
+----+------+
| id | name |
+----+------+
| 1 | jack |
| 2 | jack |
+----+------+
2 rows in set (0.00 sec)
+----+------+
| id | name |
+----+------+
| 1 | jack |
| 2 | jack |
+----+------+
2 rows in set (0.00 sec)
2 rows in set (0.07 sec)
4:外键约束 foreign key(被引用的数据表的字段必须具有唯一约束
先创建父表,插入父表记录
后建立字表,插入子表
先删除字表的数据,再删除父表的数据
create table t_class(
-> cno int(3) primary key,
-> cname varchar(30) not null unique
-> );
Query OK, 0 rows affected
-> cno int(3) primary key,
-> cname varchar(30) not null unique
-> );
Query OK, 0 rows affected
mysql> create table t_student(
-> sno int(3) primary key,
-> sname varchar(32) not null,
-> classno int(3),
-> constraint t_student_classno_fk foreign key(classno) references t_class(cno)
-> );
Query OK, 0 rows affected
-> sno int(3) primary key,
-> sname varchar(32) not null,
-> classno int(3),
-> constraint t_student_classno_fk foreign key(classno) references t_class(cno)
-> );
Query OK, 0 rows affected
insert into t_class(cno,cname) values(100,'计科1501班');
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> insert into t_class(cno,cname) values(200,'计科1502班');
Query OK, 1 row affected (0.07 sec)
Query OK, 1 row affected (0.07 sec)
mysql> insert into t_class(cno,cname) values(300,'计科1503班');
Query OK, 1 row affected (0.12 sec)
Query OK, 1 row affected (0.12 sec)
mysql> insert into t_student(sno,sname,classno) values(1,'jack',100);
Query OK, 1 row affected (0.10 sec)
Query OK, 1 row affected (0.10 sec)
mysql> insert into t_student(sno,sname,classno) values(2,'Alice',100);
Query OK, 1 row affected (0.07 sec)
Query OK, 1 row affected (0.07 sec)
mysql> insert into t_student(sno,sname,classno) values(3,'Bob',200);
Query OK, 1 row affected (0.07 sec)
Query OK, 1 row affected (0.07 sec)
mysql> insert into t_student(sno,sname,classno) values(4,'King',200);
Query OK, 1 row affected (0.07 sec)
Query OK, 1 row affected (0.07 sec)
mysql> insert into t_student(sno,sname,classno) values(5,'Smith',300);
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> insert into t_student(sno,sname,classno) values(6,'Lucy',300);
Query OK, 1 row affected (0.11 sec)
Query OK, 1 row affected (0.11 sec)
mysql> select * from t_student;
+-----+-------+---------+
| sno | sname | classno |
+-----+-------+---------+
| 1 | jack | 100 |
| 2 | Alice | 100 |
| 3 | Bob | 200 |
| 4 | King | 200 |
| 5 | Smith | 300 |
| 6 | Lucy | 300 |
+-----+-------+---------+
6 rows in set (0.00 sec)
+-----+-------+---------+
| sno | sname | classno |
+-----+-------+---------+
| 1 | jack | 100 |
| 2 | Alice | 100 |
| 3 | Bob | 200 |
| 4 | King | 200 |
| 5 | Smith | 300 |
| 6 | Lucy | 300 |
+-----+-------+---------+
6 rows in set (0.00 sec)
mysql> select * from t_class;
+-----+------------+
| cno | cname |
+-----+------------+
| 100 | 计科1501班 |
| 200 | 计科1502班 |
| 300 | 计科1503班 |
+-----+------------+
3 rows in set (0.30 sec)
+-----+------------+
| cno | cname |
+-----+------------+
| 100 | 计科1501班 |
| 200 | 计科1502班 |
| 300 | 计科1503班 |
+-----+------------+
3 rows in set (0.30 sec)
阅读全文
0 0
- mysql入门(约束二十一)
- MYSQL入门学习之二十一:MYSQL用户管理
- mysql-(二)-数据约束
- (二)MySql基础之约束
- xml入门二 之dtd约束
- python入门(二十一):xml模块
- MySQL入门--字段的唯一约束UNIQUE
- MySQL入门--AUTO_INCREMENT自增约束
- MySQL基础入门—SQL 的约束
- Mysql入门(十一)之变量
- MySQL基础笔记(二) 完整性约束
- MySQL数据库(二)---数据类型、数据表、约束
- MYSQL学习之二 :SQL的约束
- mysql进阶(二十一)删除表数据
- 二十一、Mysql 插入, 修改, 删除数据
- MySQL入门学习(二)
- MySQL入门学习 二
- MySQL入门学习(二)
- ZooKeeper客户端Curator使用一 创建连接
- 『ORACLE』 设置Edit模式(11g)
- c/c++整理--c++面向对象(1)
- InvalidateRect,invalidate,updatewindow区别(转)
- 面试心得 --- 小米大数据开发
- mysql入门(约束二十一)
- Git初步探索 -- 基于linux平台
- mysql_存储过程
- Hibernate中的一级缓存、二级缓存和懒加载
- JAVA--IO流(二)
- 分页存储过程
- 『ORACLE』 PLSQL静态游标的使用(11g)
- 3549 Flow Problem(入门) [最大流]
- Android 绿色应用公约