【mysql中的约束】教程文章相关的互联网学习教程文章

mongodb使用aggregate、group、match实现mysql中的having(count(1)>1)的功能【代码】

.stu.insert({cid:1,age:14,name:‘gom1‘}); db.stu.insert({cid:1,age:12,name:‘jack2‘}); db.stu.insert({cid:2,age:13,name:‘Lily3‘}); db.stu.insert({cid:2,age:14,name:‘tony4‘}); db.stu.insert({cid:2,age:9,name:‘Harry5‘}); db.stu.insert({cid:2,age:13,name:‘Vincent6‘}); db.stu.insert({cid:1,age:14,name:‘bill7‘}); db.stu.insert({cid:2,age:17,name:‘tim8‘}); db.stu.insert({cid:1,age:10,name:...

MySQL中的Multi-Range Read优化【代码】【图】

* FROM salaries WHERE salary>10000 and salary<40000;salary有一个辅助索引idx_s,因此除了通过辅助索引查找键值外,还需要通过书签来进行对整行数据的查询,当不启用MRR特性,执行计划如下若启用MRR在实际执行中,两者的执行时间差非常大此外,MRR还可以将某些范围查询,拆分为键值对,以此来进行批量的数据查询,这样的好处是可以在拆分过程中,直接过滤一些不符合查询条件的数据,如 SELECT * FROM t WHERE key_part1>=1000 ...

Mysql中的存储过程【代码】【图】

执行以上存储结果,验证是否正确,如下图,结果OK:set @b=5; call proc_adder(2,@b,@s); select @s as sum; 四、存储过程中的控制语句 IF语句:-- ---------------------------- -- Procedure structure for `proc_if` -- ---------------------------- DROP PROCEDURE IF EXISTS `proc_if`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_if`(IN type int) BEGIN#Routine body goes here...DECLARE c varchar...

Mysql中的函数【代码】【图】

求绝对值ABS:求ASCII:时间相关(NOW、CURRENT_DATE、CURRENT_TIME):四、自定义函数 自定义个函数,判断输入参数是否大于等于10:-- ---------------------------- -- Function structure for `func_compare` -- ---------------------------- DROP FUNCTION IF EXISTS `func_compare`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` FUNCTION `func_compare`(a int) RETURNS varchar(200) CHARSET utf8 BEGIN#Routine body go...

Mysql中的事件(定时任务)【代码】【图】

‘event_scheduler‘; 如果显示OFF,则输入以下语句开启:set global event_scheduler = off;三、自定义简单的事件 新建user表:-- ---------------------------- -- Table structure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(200) NOT NULL,`address` varchar(500) NOT NULL,`addtime` datetime NOT NULL,PRIMARY ...

MySQL中的xtrabackup的原理解析【代码】【图】

innobackupex工具的备份过程原理图如图,备份开始的时候1 首先会启动一个xtrabackup_log后台检测的进程,实时检测mysql redo的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件xtrabackup_log中2 复制innodb的数据文件和系统表空间文件idbdata1到对应的以默认时间戳为备份目录的地方3 复制结束后,执行flush table with read lock操作4 复制.frm .myd .myi文件5 并且在这一时刻获得binary log 的位置6 将表进行解锁unl...

mysql 中的 latch锁和Tlock(事务锁), DML加锁规则,以及死锁分析。

mysql 中的 latch锁和Tlock(事务锁), DML加锁规则,以及死锁分析。一.Latch和Tlock的关系Latch:为保护临界资源的正确性而设计,例如保护正在使用的内存页面不被破坏等。没有死锁检测机制,轻量锁,并且作用对象时内存页面或是内存共享变量.Tlock:事务锁,作用对象是事务,有死锁检测机制.在innodb内部,为了减少死锁的发生概率,Latch不会等待Tlock.线程获取行锁的流程:在对行加锁的时候会先对行所在的页面添加lath,然后再对行添加Tlock,待...

MySQL中的information_schema

information_schema 数据库是MySQL自带的,可看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等 SCHEMATA表:提供了关于数据库的信息。 TABLES表:给出了关于数据库中的表的信息。 COLUMNS表:给出了表中的列信息。 STATISTICS表:给出了关于表索引的信息。 配合concat()函数可以达到如虎添翼的效果; SELECT CONCAT(‘update...

mysql中的中文乱码处理【代码】【图】

1、MySQL中添加中文数据乱码演示a. 创建一个oldboy测试数据库并查看建表语句模拟创建一个默认的字符集数据库create database oldboy default character set latin1 collate latin1_swedish_ci;2 创建一个表mysql> create table student ( id int(4) not null auto_increment, name char(20) not null, primary key(id) );3 插入数据--插入一个应为一个中文因为库是拉丁字符集所以表默认也是拉丁字符集insert into student values (...

MySql中的时间类型datetime,timestamp,date,year比较

MySQL日期类型、日期格式、存储空间、日期范围比较。日期类型 存储空间 日期格式 日期范围------------ --------- --------------------- -----------------------------------------datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038date 3 bytes YYYY-MM-DD ...

MySQL中的变量定义

设置会话变量有如下三种方式:( 全局同理 session替换成global ) set session var_name = value; set @@session.var_name = value; set var_name = value; 查看一个会话变量也有如下三种方式: select @@var_name; select @@session.var_name; show session variables like "%var%"; ----------------------------------------------------------------------------------------------------------------------- set [ glo...

MYSQL中的常用工具

查看当前登录用户:mysql> select current_user();字符集设置:mysql> set names utf8mb4;mysql> show variables like ‘chara%‘;-e 执行sql语句并退出-E 竖着显示-s 去掉线条框显示-f 强制执行-v 显示更多信息--show-warnings 显示警告mysqlbinlogmysql> flush logs;mysql> use mysql;mysql> revoke process on *.* from user1@localhost ;mysql> use test;mysql> truncate table t2; mysql> insert into t2 values(1),(2),(3)...

MySQL学习9:详解MySQL中的外键约束【图】

一约束概述 创建约束的目的就是保证数据的完整性和一致性。约束根据约束针对的字段的数目的多少划分为表级约束和列级 约束。 如果约束按照功能来划分的话刻印划分为:NOT NULL(非空约束)、PRIMARY KEY(主键约束)、UNIQUE KEY(唯一约束)、DEFAULT(默认约束)和FOREIGN KEY(外键约束)。 在前面我们已经初步涉及到了除外键约束之外的四个约束,这一次我们来谈谈最复杂的外键约束。 二外键约束的要求 ...

mysql中的外键是什么?以及需要使用外键吗?【图】

外键的主要作用是:保持数据的一致性、完整性。 关于外键,我有自己的一些理解,但是不晓得是否正确,举个例子来表达我的看法:假如现在需要建立一个表,一个什么样的表呢?一个班级的学生个人信息表:所以在设计的时候,就给表1添加一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表。所以结合2张表就能保持数据的一致性、完整性(估计就是还原成原来的那张大表吧)。借着这个例子再谈谈外键的一些事项:...

mysql中的数据类型enum和set

create table enum_set_table(-> id int auto_increment primary key,-> gender enum(‘M‘,‘F‘),-> hobby set(‘music‘,‘movie‘,‘swimming‘,‘footbal‘)-> ); Query OK, 0 rows affected (0.01 sec) /* 一个enum值,一个set值,二者均使用选项的字符串格式 */ mysql> insert into enum_set_table(id,gender,hobby) values(null,‘M‘,‘music‘); Query OK, 1 row affected (0.01 sec) /* 一个enum值,多个set值,二者均使...