数据完整性约束

1)数据完整性约束包含:实体完整性、参照完整性、用户定义完整性。

CREATE TABLE table(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,*//主键约束(主键唯一,不能为空)候选键约束(候选键值唯一,不能为空)
name CHAR(50) NOT NULL,
sex,CHAR(1) NOT NULL DEFAULT 0,
age INT NOT NULL,
major CHAR(50) NOT NULL,
contact CHAR(50) NULL
CHECK(id IN (SELECT id FROM table)) *//用户完整性约束(用户应用所涉及的数据限制要求)包含非空约束、CHECK约束、触发器。
UNIQUE KEY index_name(sex)
Or
CONSTRAINT a PRIMARY KEY(id)*//命名主键约束名为a
CONSTRAINT b FOREIGN KEY(id2) * // 外键 (参照完整性 = 表间主键外键关系) 命名外键约束名为b
REFERENCES othertable(id2)
ON DELETE RESTRICT
ON UPDATE RESTRICT
);

更新完整新约束

ALTER TABLE table
ADD FOREIGN KEY index_name(id)
or
DROP PRIMARY KEY
DROP FOREIGN KEY 外键名 //(外键约束名)

2)表维护语句(mysql数据库优化)

查看索引散列程度:

ANALYZE TABLE table;   * //计算散列程度+更新
SHOW INDEX FROM table; CHECKSUM TABLE table [QUICK |EXTENDED]*//计算表校验和
CHECK TABLE table; *//检查表错误

查看:

SELECT TABLE_NAME,TABLE_TIME
FROM INFOMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'table' //表名称
AND TABLE_SCHEMA = 'database' //数据库名称

恢复表 :

REPAIR TABLE table

优化表(整理碎片特别是VARCHAR、BLOB、TEXT类型):

OPTIMIZE NO_WRITE_TO_BINLOG TABLE table; //插入,更新,删除会产生数据文件碎片

2. 触发器(指定关联到一个表的数据库对象,当一个表的特定事件(INSERT UPDATE DELETE)时,会激活触发器)

创建触发器 :

CREATE TRIGGER <触发器名> <BEFORT | AFTER> <INSERT|UPDATE|DELETE> ON <表名> FOR EACH ROW <触发器主体>
CREATE TRIGGER trig_name AFTER INSERT //插入后触发
ON table
FOR EACH ROW SET@a = NEW.table.id //使用NEW虚拟新表,即插入后的表
*同一个表不能拥有两个具有相同触发时刻和事件的触发器
*每个表最多支持6个触发器(3*2)

例子:

CREATE TRIGGER trig_name BEFORE UPDATE ON table FOR EACH ROW SET NEW.id = OLD.age+1;

删除触发器:DROP TRIGGER IF EXISTS <数据库名> <触发器名>

3.事件(指定时刻才被执行,与表不关联)

查看事件调度器

SHOW VARIABLES LIKE 'EVENT_SCHEDULER'; or SELECT@@EVENT_SCHEDULER; //查看事件调度器状态

开启调度器:

SET GLOBAL EVENT_SCHEDULER = TRUE|1|ON) *//(默认是关闭的,需要手动打开)

创建事件:

格式

CREATE EVENT <事件名> ON SCHEDULER <schedule> DO <事件主体>(schedule包含AT,EVERY,分别设定事件发生的时间和周期性发生的事件,STARTS代表开始事件 ENDS表示结束时间)

CREATE EVENT IF NOT EXISTS event_name
ON SCHEDULER EVERY 1 MONTH //每个月会执行事件
DO
INSERT INTO table
VALUES(NULL,......);

修改事件

格式:

ALTER EVENT <事件名> [RENAME TO <新事件名>] [DO <事件主体>][ENABLE|DISABLE]

ALTER EVENT event_name ENABLE|DISABLE;    //开启,关闭事件
ALTER EVENT event_name RENAME TO event_name2;

删除事件:

DROP EVENT IF EXISTS event_name;

SQL命令(三)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  3. Oracle学习笔记四 SQL命令(二):SQL操作语言类别

    SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...

  4. 学习 Linux,101: 使用基本 SQL 命令

    概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操作 本教程将简要介绍您需要知道的与 LPI 102 考试相关的 SQL 概念.   回页首 数据库和 ...

  5. Linux 必掌握的 SQL 命令

    数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少的数据,但它们对存储大量数据或查询该数据没有多大帮助.多年来,为该目的开发了多种数据库,包括分层和网络 ...

  6. 利用sql命令把结果集输出到文件

    利用sql命令把结果集输出到文件 红色部分的三条命令完成把结果集输出到文件!! [root@test root]# psql -hlocalhost -Utest testWelcome to psq ...

  7. 转发:使用sql命令查询视图中所有引用的基础表

    转自:使用sql命令查询视图中所有引用的基础表 使用sql命令查询视图中所有引用的基础表 之前有写过如何利用sql查询视图中所有引用的表发现这个方法并不能查出视图中所有的基础表,如果视图中有嵌套视图就 ...

  8. 解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束

    Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的 ...

  9. Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)

    为了梦想与了信仰    开局一张图   主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用   先删库 再跑路.....                         ...

  10. 使用基本 SQL 命令

    概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操做 数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少 ...

随机推荐

  1. 私网IP访问Internet

    公网.内网是两种Internet的接入方式. 内网接入方式:上网的计算机得到的IP地址是Internet上的保留地址,保留地址有3种形式: A类地址:10.0.0.0~10.255.255.255 B ...

  2. 64位系统中连接Access数据库文件的一个问题

    近日在windows 7 64位系统中编译以前写的程序,发现在连接Access数据库时总是出现异常,提示“Microsoft.Jet.OLEDB.4.0”未在本机注册,同样的代码在32位的xp系统中却 ...

  3. SQL获取本周,上周,本月,上月的开始时间和结束时间

    ),),--本周 ),),--上周 ),),--本月 ),),--上月 ),),--近半年 ),)--近一年 ), ,, ),)--本周开始时间 ), ,, ),)--本周结束时间 ),,, ),)- ...

  4. js如何完整的显示较长的数字

    试试下面一行吧 Math.pow(10, 99).toLocaleString().split(',').join('') toLocaleString([character]) 方法会将其对象转换成 ...

  5. 记录项目代码迁移后,UI测试框架的搭建(配置文件的修改、测试脚本试运行)

    前文:记录一次项目代码迁移过程 上文代码迁移的目的就是为了新增vue脚手架自带的UI测试框架,工具有了,就需要实践运行在项目中了(修改配置文件.编写测试脚本等). 一.单元测试 测试框架 karma ...

  6. 猿创|有赞的zan framework安装与使用[2]

    下载并安装comoser curl -sS https://getcomposer.org/installer | php 结果各种超时 不能忍,打开迅雷下载installer:https://get ...

  7. 使用字面量或者绑定变量在HANA Studio里执行SQL语句

    在SAP note 2000002 – FAQ: SAP HANA SQL Optimization里提到了SQL语句的两种执行方式,具体差异体现在where语句里搜索条件的指定方式上. 所谓Lite ...

  8. SSD 从形式到实质之改变

    SSD 从形式到实质之改变  作者:廖恒          SSD的物理尺寸之混战正在进行其中. 数据中心的硬件架构师由于要规划下一代server的机械设计.还要制定JBOD的设计规范,想必面临不少困 ...

  9. VK Cup 2012 Round 1 D. Distance in Tree (树形dp)

    题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5 ...

  10. 【洛谷P1966】火柴排队

    火柴排队 题目链接 ∑(ai​−bi​)^2=∑ai^2-2*∑ai*bi+∑bi^2 显然∑ai^2+∑bi^2是不变的,我们要让 2*∑ai*bi最大,才能使原式最小 然后我们一眼就可以看出来, ...