视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL学习笔记之数据定义表约束,分页方法总结
2020-11-09 20:44:59 责编:小采
文档


本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法。分享给大家供大家参考,具体如下:

1. primary key 主键

特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能为空也不能重复

create table user1(id int primary key,name varchar(32));
mysql> insert into user1 values(1,'hb');
Query OK, 1 row affected (0.10 sec)
mysql> insert into user1 values(1,'hb');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into user1 (name) values('hb');
ERROR 13 (HY000): Field 'id' doesn't have a default value

2. auto_increament 自增长

mysql> create table user2(id int primary key auto_increment,name varchar(34));
mysql> insert into user2 (name ) values ("name1");
Query OK, 1 row affected (0.09 sec)
mysql> insert into user2 (name ) values ("name2");
Query OK, 1 row affected (0.05 sec)
mysql> insert into user2 (name ) values ("name3");
Query OK, 1 row affected (0.13 sec)
mysql> select * from user2;
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+----+-------+

3. unique 唯一约束

特点:表的某列值不能重复,可以添加重复的NULL

create table user3(id int primary key auto_increment,name varchar(34) unique);
mysql> create table user3(id int primary key auto_increment,name varchar(34) unique);
Query OK, 0 rows affected (0.39 sec)
mysql> insert into user3 (name ) values ("name3");
Query OK, 1 row affected (0.11 sec)
mysql> insert into user3 (name ) values ("name3");
ERROR 1062 (23000): Duplicate entry 'name3' for key 'name'

允许插入null,并且可以多个

mysql> insert into user3 (name ) values (null);
Query OK, 1 row affected (0.12 sec)
mysql> insert into user3 (name ) values (null);
Query OK, 1 row affected (0.12 sec)
mysql> select * from user3;
+----+-------+
| id | name |
+----+-------+
| 3 | NULL |
| 4 | NULL |
| 1 | name3 |
+----+-------+

4. not null

mysql表的列默认情况下可以为null,如果不允许某列为空则可以使用not null说明

create table user4 (id int primary key auto_increment,name varchar(32) not null);
mysql> insert into user4 (name) values(null);
ERROR 1048 (23000): Column 'name' cannot be null

5. foreign key 外键

从理论上说先建立主表,再建立从表

雇员表:

create table dept(id int primary key , name varchar(32));

部门表:

create table emp(
id int primary key ,
name varchar(32),
deptid int,
constraint myforeignkey foreign key(deptid) references dept(id)
);
mysql> select * from dept;
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
+----+-------+
1 row in set (0.00 sec)
mysql> insert into emp values(1,'aaa',1);
Query OK, 1 row affected (0.22 sec)
mysql> insert into emp values(1,'aaa',2);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into emp values(1,'aaa',null);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into emp values(2,'aaa',null);
Query OK, 1 row affected (0.13 sec)
mysql> select * from emp;
+----+------+--------+
| id | name | deptid |
+----+------+--------+
| 1 | aaa | 1 |
| 2 | aaa | NULL |
+----+------+--------+
2 rows in set (0.00 sec)

总结:

① 外键只能指向主表的主见列或者unique
② 外键的数据类型应该与它指向的列类型一致
③ 外键的值:NULL 或者 指向列中存在的值
④ 外键可以指向本表的主键列或者unique

mysql 不支持check

create table user99(age int check(age>13));
mysql> create table user99(age int check(age>13));
Query OK, 0 rows affected (0.19 sec)
mysql> insert into user99 values(99);
Query OK, 1 row affected (0.04 sec)
mysql> select * from user99;
+------+
| age |
+------+
| 99 |
+------+

mysql 分页

基本语法:

select * from 表明 where 条件 limit 从第几条取,取出几条
mysql 是从第0条开始取数据

mysql> select * from student;
+------+--------+---------+---------+------+
| id | name | chinese | english | math |
+------+--------+---------+---------+------+
| 1 | 张小明 |  | 78 | 90 |
| 2 | 李进 | 67 | 98 | 56 |
| 3 | 王五 | 87 | 78 | 77 |
| 4 | 李一 | 88 | 98 | 90 |
| 5 | 李来财 | 82 | 84 | 67 |
| 6 | 张进宝 | 55 | 85 | 45 |
| 7 | 张小明 | 75 | 65 | 30 |
+------+--------+---------+---------+------+
7 rows in set (0.05 sec)
mysql> select * from student limit 2,2;
+------+------+---------+---------+------+
| id | name | chinese | english | math |
+------+------+---------+---------+------+
| 3 | 王五 | 87 | 78 | 77 |
| 4 | 李一 | 88 | 98 | 90 |
+------+------+---------+---------+------+
2 rows in set (0.00 sec)

按照语文成绩排序,查处第3条到第5条

mysql> select * from student order by chinese desc limit 3,2;
+------+--------+---------+---------+------+
| id | name | chinese | english | math |
+------+--------+---------+---------+------+
| 5 | 李来财 | 82 | 84 | 67 |
| 7 | 张小明 | 75 | 65 | 30 |
+------+--------+---------+---------+------+
2 rows in set (0.00 sec)

扩展,分页:pageNow , pageSize

select * from 表明 where 条件 [group by … having … order by …]limit 从第几条取,取出几条
select * from 表明 where 条件 [group by … having … order by …]limit (pageNow-1)*pageSize, pageSize

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。

您可能感兴趣的文章:

  • MySQL中主键为0与主键自排约束的关系详解(细节)
  • MySQL外键约束常见操作方法示例【查看、添加、修改、删除】
  • MySQL删除有外键约束的表数据方法介绍
  • MySQL中的唯一性约束与NULL详解
  • MySQL删除表的时候忽略外键约束的简单实现
  • MySQL 关闭子表的外键约束检察方法
  • MySQL所支持的数据类型与表字段约束类型的学习教程
  • 详解MySQL中的外键约束问题
  • MySQL导出所有Index和约束的方法
  • MySQL 添加、修改、删除表的列及约束等表的定义
  • MySQL学习笔记4:完整性约束字段
  • mysql创建Bitmap_Join_Indexes中的约束与索引
  • MySQL约束类型及举例介绍
  • 下载本文
    显示全文
    专题