MySQL
MySQL
~青萍之末~
弱者总有弱者的理由
展开
-
MySQL如何建立和优化索引
1、优先使用自增的Key作为主键2、最左匹配原则3、索引列不能参与计算4、能扩展就不要新建索引5、选择区分度高的列作索引转载 2019-08-17 11:30:47 · 906 阅读 · 0 评论 -
MySQL关于主键的一些问题
一、主键的概念 表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号。 主键(primary key) 一列(或一组列)能够唯一区分表中的每一行。二、主键是必须的吗 不是必须的,但是最好每个表有一个主键,以便于以后数据操纵和管理。【原因】:加主键的目的,是为了保证数据完整性和唯一性。...转载 2018-12-24 22:08:11 · 590 阅读 · 0 评论 -
MySQL常用的调优方法
多数时候数据库会成为整个系统的瓶颈,比如大的数据量的插入与修改,频繁的亦或是高流量的访问,都会对数据库系统带来很大的压力。我在平时工作的时候,总是会遇到大数据量的插入、修改或是查询的操作,所以在工作的时候积累了一些MySQL数据库的调优方式,在这里与大家分享一下。一、缓存 缓存是解决这类问题的一把手。它既可以加快整个系统(并非数据库系统,使用缓存的时候并没有去访问数据库)的访问速度,也可...原创 2018-12-09 15:13:17 · 1544 阅读 · 0 评论 -
MySQL的各种锁
文章目录一、乐观锁(Optimistic Lock)二、悲观锁(Pessimistic Lock)三、共享锁(Share lock)四、排他锁(Exclusive Lock)五、行锁六、表锁七、数据库隔离级别的实现1、read uncommitted(读未提交的数据)2、read committed(读已提交的数据)3、repeatable read(重复读-MySQL默认隔离级别)4、seria...原创 2018-12-09 14:58:12 · 1667 阅读 · 1 评论 -
数据库三范式
数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率、优雅的数据库。甚至设计出错误的数据库。而想要理解并掌握范式却并不是那么容易。教科书中一般以关系代数的方法来解释数据库范式。这样做虽然能够十分准确的表达数据库范式,但比较抽象,不太直观,不便于理解,更难以记忆。一、第一范式 数据库表的每一项都是不可分割的原子数据项,不能是集合。比如班级信息表里面不能有班级的学生。...转载 2018-12-04 20:32:34 · 252 阅读 · 0 评论 -
数据库之备份与还原
// 在shell命令行下输入以下语句进行数据库备份mysqldump -u root -p db_book > /home/eric/db_book.sql;// 新建一个空数据库后,输入以下语句进行数据库还原source /home/eric/db_book.sql;...原创 2018-11-27 21:16:55 · 425 阅读 · 0 评论 -
数据库之事务详解
文章目录一、事务的概念1、数据库事务2、系统事务二、事务的属性(ACID)1、原子性(Atomicity)2、一致性(Consistency)3、隔离性(Isolation)4、持久性(Durability)三、数据库事务并发存在的问题1、脏读2、不可重复读3、幻读四、事务的隔离级别1、read uncommitted(读未提交的数据)2、read committed(读已提交的数据)3、repe...原创 2018-11-27 21:05:51 · 510 阅读 · 0 评论 -
数据库之存储过程详解
一、存储过程的概念 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,存储和和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用IN、OUT、INOUT类型,而函数的参数只能是IN类型。 存储过程再简单点来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。在我看来, 存储过程就是有业务逻辑和流程的...转载 2018-11-27 20:06:16 · 976 阅读 · 0 评论 -
数据库之触发器详解
一、触发器的概念 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插...转载 2018-11-27 19:53:39 · 11116 阅读 · 0 评论 -
数据库之视图详解
一、视图的概念 视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。单表视图一般用于查询和修改,会改变基本表的数据;多表视图一般用于查询,不会改变基本表的数据。【例子】: 在一个班级里,作为班主任需要知道全班同学所有课程的成绩,便于全面指导;而数学老师只需要知道全班学生的数学成绩就行了。所以视图的一个重要作用就是区分权限。二、视图的S...转载 2018-11-27 19:36:29 · 27853 阅读 · 2 评论 -
数据库之索引详解
一、索引的概念1、什么是索引? MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是一种数据结构。2、为什么要用索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中...原创 2018-11-26 20:29:02 · 453 阅读 · 0 评论 -
SQL语言分类DDL、DML、DQL、TCL、DCL
关系型数据库的SQL语句都可以分为4大类:一、DDL(数据定义语言) DDL 主要是指如下的四种SQL 语句,以 CREATE、DROP、ALRET开头和 TRUNCATE TABLE 语句。这里主要说一下 TRUNCATE TABLE ,截断表的数据,也就是删除表中的数据,删除这些数据的时候,系统不做日志,因此无法恢复,删除的速度比较快;而DELETE 语句也是删除表中的记录,但它要写...转载 2018-11-25 19:56:51 · 1118 阅读 · 0 评论 -
数据库的查询
一、单表查询// 查询所有字段SELECT * FROM db_student; SELECT id,name FROM db_student; // 查询指定字段// 条件查询(WHERE)SELECT * FROM db_student WHERE id="2018-1";SELECT * FROM db_student WHERE score>80 AND gender=...原创 2018-11-14 20:49:01 · 332 阅读 · 0 评论 -
MySQL数据类型与运算符
一、数据类型【char和varchar】:char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4)...原创 2018-11-14 20:42:28 · 535 阅读 · 0 评论 -
数据库和数据表的基本操作
一、数据库的操作// 登陆mysql数据库mysql -u root -p;// 创建数据库CREATE DATABASE db_book;// 查看所有数据库SHOW DATABASE;// 选择数据库USE db_book;// 查看所有数据表SHOW TABLES;// 删除数据库DROP DATABASE db_book;二、数据表的基本操作CREATE TA...原创 2018-11-14 20:31:00 · 1165 阅读 · 2 评论