数据库之 MySQL --- 数据处理 之 表的约束与分页(七)
个人博客网: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 --- 数据处理 之 表的约束与分页(七)的更多相关文章
- 数据库之 MySQL --- 数据处理 之 表操作、CRUD(六)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一. 表操作 创建数据库CREATE DATABASE demo-- 删除数据库DROP DATABAS ...
- mysql基础教程(三)-----增删改、子查询、创建管理表、约束和分页
插入 INSERT语句语法 从其它表中拷贝数据 • 不必书写 VALUES 子句. • 子查询中的值列表应与 INSERT 子句中的列名对应 update语句 • 可以一次更新多条数据. • 如果需要 ...
- 数据库之 MySQL --- 数据处理 之多表查询 (三)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.多表查询 [1]什么是多表查询? 即,从多个表中获取数据. 注意: 在多表查询是,如果列明在两个表中 ...
- 数据库之 MySQL --- 数据处理 之 子查询 (二)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一 .数据库语言定义及命令行查看数据库操作 -- SQL 语言可以分为三类-- DML: 数据操纵语言. ...
- python爬取信息到数据库与mysql简单的表操作
python 爬取豆瓣top250并导入到mysql数据库中 import pymysql import requests import re url='https://movie.douban.co ...
- 数据库之 MySQL --- 数据处理 之 单行函数、组函数 (四)
[1] LOWER : 将字符串中的内容全部转成小写 UPPER : 将字符串中的内容全部转成大写 SELECT LOWER ('abAcD') FROM DUAL SE ...
- 数据库之 MySQL --- 数据处理 之 多行子查询(五)
[1]需求: 谁的工资比Abel 高?方式一: 第一步线查出Abel共子 第二部进行过滤 SELECT salary FROM employees WHERE last_name = 'Abel' ...
- php数据库两个关联大表的大数组分页处理,防止内存溢出
$ret = self::$db->select($tables, $fields, $where, $bind); if (!empty($ret)) { $retIds = array(); ...
- Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束
Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎: MySQL中的数据用各种不同的技术存储在文件( ...
随机推荐
- java基础篇 之 foreach探索
我们看下这段代码: public class Main { public static void main(String[] args) { List list = new ArrayList(); ...
- 标准IDOC同步采购订单
目录 1功能说明 4 2功能实现 4 2.1创建逻辑系统并分配集团(SALE) 4 2.2维护RFC目标(SM59) 5 2.3在发送端创建模型视图(BD64) 5 2. ...
- Qt读写xml文件
写xml <root> <element> <sub id=-1></sub> </element> </root> //添加x ...
- 基于mykernel 2.0编写一个操作系统内核
一.配置mykernel 2.0,熟悉Linux内核的编译 1.实验环境:VMware 15 Pro,Ubuntu 18.04.4 2.配置环境 1)在电脑上先下载好以下两个文件,之后通过共享文件夹, ...
- [hdu5217]线段树
题意:给定一个只含'(',')'的括号序列,有m个操作,改变某个位置的括号或者询问区间[L,R]内的括号进行配对后剩下的第K个括号的位置(配对的括号从原序列中删掉). 思路:首先对于一个括号序列,进行 ...
- oracle分析函数Rank, Dense_rank, row_number
http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 目录=============================== ...
- 为什么我不建议你通过 Python 去找工作?
二哥,你好,我是一名大专生,学校把 Python 做为主语言教给我们,但是我也去了解过,其实 Python 门槛挺高的,所以我在自学 Java,但是我现在并不清楚到底要不要全心的去学 Java,学校里 ...
- HDU2859
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 AC思路:(思路来源于kuangbin,甚至做法也跟kuangbin大同小异,所以可以将本文看成 ...
- .Net基础之4——流程控制
(1)异常捕获 我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一点. 在你的代码中应该经常性的使用try-catch来进行异常捕获. 语法: try { 可能会出现异常的代码: } ...
- 一言难尽,Jpa这个功能差点让我丢了工作
故事背景 前阵子,有位朋友在微信上问我数据被删了能不能恢复,我问了下原因,居然是因为一个配置项惹的祸. 故事细节 在 Spring Boot 中使用 jpa 来操作数据库,jpa 就不做详细的介绍了, ...