个人博客网:https://wushaopei.github.io/    (你想要这里多有)

    1、约束 :为了保证数据的一致性和完整性,SQL规范以约束的方式对表数据进行额外的条件限制

NOT NULL 非空约束,规定某个字段不能为空
    UNIQUE  唯一约束,规定某个字段在整个表中是唯一的
    PRIMARY KEY  主键(非空且唯一)
    FOREIGN KEY  外键
    CHECK  检查约束
    DEFAULT  默认值

约束分类 :列级约束 vs 表级约束

约束的填加的方式 :

1.创建表的时候
               2.修改表的时候

【1】not null 非空约束,规定某个字段不能为空

CREATE TABLE emp(
emp_id INT NOT NULL, -- 列级约束
emp_name VARCHAR(20)
) DESC emp
SELECT * FROM emp
INSERT INTO emp(emp_id,emp_name) VALUES(1,'aaaa')
INSERT INTO emp(emp_id) VALUES(2)
DELETE FROM emp

【2】修改表的时候添加约束

ALTER TABLE emp
MODIFY emp_name VARCHAR(20) NOT NULL

【3】UNIQUE  唯一约束,规定某个字段在整个表中是唯一的


CREATE TABLE emp2(
emp_id INT UNIQUE,
emp_name VARCHAR(20) ) DESC emp2
SELECT * FROM emp2
INSERT INTO emp2(emp_id,emp_name) VALUES(3,'aaaa')
INSERT INTO emp2(emp_id,emp_name) VALUES(4,'aaaa') CREATE TABLE emp3(
emp_name VARCHAR(20),
emp_password VARCHAR(20)
) DROP TABLE emp3

【4】 将用户名和密码看成是一组,组和组 之间不能相同

ALTER TABLE emp3
ADD UNIQUE (emp_name,emp_password)

【5】添加约束: uk_name_pwd索引

ALTER TABLE emp3
ADD CONSTRAINT uk_name_pwd UNIQUE (emp_name,emp_password);

【6】删除约束:删除约束

ALTER TABLE emp3
DROP INDEX uk_name_pwd; DESC emp3
SELECT * FROM emp3
INSERT INTO emp3(emp_name,emp_password)VALUES('aaaa','12234')
INSERT INTO emp3(emp_name,emp_password)VALUES('bbbb','12344')

【7】  PRIMARY KEY  主键(非空且唯一)
           一个表中只能有一个主键 (可以将多个列进行组合成primary key)

CREATE TABLE emp4(
emp_id INT PRIMARY KEY,
emp_name VARCHAR(20)
) INSERT INTO emp4(emp_id,emp_name)VALUES(2,'aaa') CREATE TABLE emp5(
emp_id INT,
emp_name VARCHAR(20),

【8】 表级约束

CONSTRAINT rn_emp_id PRIMARY KEY(emp_id,emp_name)
) DESC emp5

【9】FOREIGN KEY  外键 外键约束

员工表

注意 :1.deps叫做主表,emps叫做从表
           2.先创建主表,再创建从表
           3.外键关联的那个列必须是主键
           4.插入数据,应该先插入到主表,再插入到从表

CREATE TABLE emps(
emps_id INT PRIMARY KEY,
emps_name VARCHAR(20),
deps_id INT,
FOREIGN KEY(deps_id) REFERENCES deps(deps_id)
) -- 部门表
CREATE TABLE deps(
deps_id INT PRIMARY KEY,
deps_name VARCHAR(20)
) DROP TABLE deps
DESC deps
DESC emps

【10】 插入数据

INSERT INTO deps VALUES(10,'hr')
INSERT INTO emps VALUES(1,'aa',10)

【11】 查看表的索引

SHOW INDEX FROM emp3

【12】 check : 检查约束
            -- mysql无效,orcal有效

CREATE TABLE temp(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT CHECK(age>20),
PRIMARY KEY(id)
); INSERT INTO temp VALUES(1,'aa',10)
SELECT * FROM temp

【13】  defult : 可以设置默认值

CREATE TABLE temp2(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT DEFAULT 20,
PRIMARY KEY(id)
);
INSERT INTO temp2(id,NAME) VALUES(1,'aa') SELECT * FROM temp2

【14】   AUTO_INCREMENT : 自增长

CREATE TABLE n(
n_id INT PRIMARY KEY AUTO_INCREMENT,
n_name VARCHAR(20)
) INSERT INTO n(n_name) VALUES('aa')
DELETE FROM n SELECT * FROM n

【15】  limit  分页 :

SELECT * FROM employees LIMIT 0,20 -- 0从哪一条数据开始, 20偏移量

    (当前页数-1)*每页条数,每页条数
SELECT * FROM employees LIMIT ((当前页数-1)*每页条数),(每页条数)

数据库之 MySQL --- 数据处理 之 表的约束与分页(七)的更多相关文章

  1. 数据库之 MySQL --- 数据处理 之 表操作、CRUD(六)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一. 表操作 创建数据库CREATE DATABASE demo-- 删除数据库DROP DATABAS ...

  2. mysql基础教程(三)-----增删改、子查询、创建管理表、约束和分页

    插入 INSERT语句语法 从其它表中拷贝数据 • 不必书写 VALUES 子句. • 子查询中的值列表应与 INSERT 子句中的列名对应 update语句 • 可以一次更新多条数据. • 如果需要 ...

  3. 数据库之 MySQL --- 数据处理 之多表查询 (三)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.多表查询 [1]什么是多表查询? 即,从多个表中获取数据. 注意: 在多表查询是,如果列明在两个表中 ...

  4. 数据库之 MySQL --- 数据处理 之 子查询 (二)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一 .数据库语言定义及命令行查看数据库操作 -- SQL 语言可以分为三类-- DML: 数据操纵语言. ...

  5. python爬取信息到数据库与mysql简单的表操作

    python 爬取豆瓣top250并导入到mysql数据库中 import pymysql import requests import re url='https://movie.douban.co ...

  6. 数据库之 MySQL --- 数据处理 之 单行函数、组函数 (四)

    [1]    LOWER : 将字符串中的内容全部转成小写             UPPER : 将字符串中的内容全部转成大写 SELECT LOWER ('abAcD') FROM DUAL SE ...

  7. 数据库之 MySQL --- 数据处理 之 多行子查询(五)

    ​ [1]需求: 谁的工资比Abel 高?方式一: 第一步线查出Abel共子 第二部进行过滤 SELECT salary FROM employees WHERE last_name = 'Abel' ...

  8. php数据库两个关联大表的大数组分页处理,防止内存溢出

    $ret = self::$db->select($tables, $fields, $where, $bind); if (!empty($ret)) { $retIds = array(); ...

  9. Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束

    Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎:    MySQL中的数据用各种不同的技术存储在文件( ...

随机推荐

  1. docker环境中neo4j导入导出

    neo4j 官方文档有说明,使用 neo4j-admin restore / dump 导出和恢复数据库的时候需要停掉数据,否则会报数据库正在使用的错误:command failed: the dat ...

  2. 第三家面试过程,及导出elcel的进一步小结。(8月11号 周五)

    今天收到第三家公司的面试通知,面试地址也在民治附近,面试时间是上午十点.今早又失眠了,感觉到这边这么几天,总是天天失眠,晚上睡不好白天瞌睡睡不着,估计还需要些许时间的适应,早上七点多我整理好面试需要准 ...

  3. 设计模式之GOF23工厂模式02

    抽象工厂模式 不能添加单个产品,产品族 public interface Seat {  void anmo();}class GoodSeat implements Seat { @Override ...

  4. [hdu5270]按位统计,容斥,归并

    题意:给两个序列[a, a + n), [b, b + n),求所有数(ai + bj)的异或和,i,j∈[0,n). 思路:这个题思路比较巧妙,不难但是难想到.BC上的题解讲得非常清楚了,我就直接c ...

  5. flink入门学习

    Flink学习笔记 一.简介 1.定义: ​ 针对流数据和批数据的分布式处理引擎.它主要是由 Java 代码实现.. 2.应用场景: ​ 流数据:把所有任务当成流来处理,处理观察和分析连续事件产生的数 ...

  6. Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099 site:blog.csdn.net

    相信你看到这个之前,已经找了很多的方法了 那么最终的解决方案应该是什么呢? 为什么之前明明跑的好好的项目,它就不行了呢?好好跑下去,它不香吗? 好了,不皮了,在我长达3个小时的奋战下,终于,自己找到了 ...

  7. 我的linux学习日记day8

    链接文件 linux中链接有两种,一种是硬链接,一种是软链接 一.硬链接 硬链接是指通过索引节点来进行链接创建硬链接的方法如下:ln 源文件 硬链接文件具有相同inode号的多个文件互为硬链接文件删除 ...

  8. 【Django】rest_framework 序列化自定义替换返回值

    # 序列化设置 class PagerSerialiser(serializers.ModelSerializer): name = serializers.CharField(source=&quo ...

  9. day06:三级菜单练习0218

    #1:省份数列:data = { "北京":{ "昌平":{ "沙河":["oldboy","电信" ...

  10. 使用基于MVC2模式创建新闻网站

    1.什么是MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示 ...