SQL命令(三)
数据完整性约束
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命令(三)的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- Oracle学习笔记四 SQL命令(二):SQL操作语言类别
SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...
- 学习 Linux,101: 使用基本 SQL 命令
概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操作 本教程将简要介绍您需要知道的与 LPI 102 考试相关的 SQL 概念. 回页首 数据库和 ...
- Linux 必掌握的 SQL 命令
数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少的数据,但它们对存储大量数据或查询该数据没有多大帮助.多年来,为该目的开发了多种数据库,包括分层和网络 ...
- 利用sql命令把结果集输出到文件
利用sql命令把结果集输出到文件 红色部分的三条命令完成把结果集输出到文件!! [root@test root]# psql -hlocalhost -Utest testWelcome to psq ...
- 转发:使用sql命令查询视图中所有引用的基础表
转自:使用sql命令查询视图中所有引用的基础表 使用sql命令查询视图中所有引用的基础表 之前有写过如何利用sql查询视图中所有引用的表发现这个方法并不能查出视图中所有的基础表,如果视图中有嵌套视图就 ...
- 解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束
Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的 ...
- Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)
为了梦想与了信仰 开局一张图 主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用 先删库 再跑路..... ...
- 使用基本 SQL 命令
概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操做 数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少 ...
随机推荐
- CSS3中的变形与动画(一)
CSS3变形篇 旋转rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度.如果这个值为正值,元素相对原点中 ...
- FileHelpers 用法 z
用FileHelplers导出csv数据: [DelimitedRecord(",")] [IgnoreEmptyLines()] [ConditionalRecord(Recor ...
- WAKE-SPM-综述
1,SPM 1,1source paper:http://lear.inrialpes.fr/pubs/2007/ZMLS07/ZhangMarszalekLazebnikSchmid-IJCV07- ...
- EM自动任务导致数据库缓慢
这两天客户抱怨数据库慢,查看性能什么的没发现什么异常.查看job发现一个内容为EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS执行特别频繁.使用 EXEC DBMS_ ...
- C语言 宏的定义
#include <stdio.h> // NUM叫做宏名 // 6是用来替换宏名的字符串 #define NUM 6 #define mul(a, b) ((a)*(b)) void t ...
- NS_ENUM和NS_OPTIONS宏
枚举的宏定义 一.简介 NS_ENUM和NS_OPTIONS宏提供了一种简明.简单的方法来定义基于C语言的枚举和选项. 这些宏提高了Xcode中的代码完成性,并明确指定了枚举和选项的类型和大小. 此 ...
- MySQL:数据库入门篇3
1.sql语句逻辑执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_t ...
- html基本代码书写
html的书写: datagrid---->toolbar---->按钮---->handler:function() var rows=$("gridId"). ...
- logback.xml常用配置
一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-acc ...
- 二、IntelliJ IDEA 安装目录的核心文件讲解
首先,咱们回顾一下前两篇关于 IntelliJ IDEA 的博文的内容: 在“在 Windows 系统下安装 IntelliJ IDEA 的方法”中,咱们知道了在 Windows 系统下如何下载并安装 ...