学习MySQL数据库的一些个人笔记

学习MySQL数据库的一些个人笔记

数据库是什么?

数据库 – 管理和存储数据的仓库

数据库的分类

​ DML是数据操纵语言 (insert ,update ,select delete)
​ DDL是指数据定义语言 (create table)
​ DCL是指数据控制语言 (权限控制语言,管理员)
​ DQL是指数据查询语言 (select)

数据库的使用细节 ?
	1, 以字母开头,不要以数字开头
	2, 不能使用保留字:select / from / update / delete / insert into
	3, MySQL数据库不区分大小写,多个单词用下划线分开		

字段约束?
非空约束       	-- 字段给不能为空 not null
主键约束 自增    	-- 唯一不能为空 primary key 
唯一约束 	   	-- 字段值不能重复 (unique)
检查约束     	--  check  CHECK (age>0 AND age<=200),
外键约束 	 	--  foreign key 
数据类型 --  小数:double(不精确) / numeric(a,b) / decimal(a,b)–a是数字的位数b是小数位数auto_increment
基础函数的使用

​ lower–全转小写 ​ upper–全转大写 ​ length–求长度 ​ substr–截取子串
​ concat–拼接字符串 ​ replace–替换 ​ 去重distinct


对小数的函数

SELECT comm,ROUND(comm,1) FROM emp#四舍五入,保留1位小数
​								SELECT comm,CEIL(comm) FROM emp#ceil向上取整
​								SELECT comm,FLOOR(comm) FROM emp#floor向下取整

char类型和varchar类型

​ – char长度固定,不足使用空格填充,存储abc占11个字节,查询效率快,但浪费空间
​ – varchar 存储abc只占三位,查询稍慢,但节省空间,定义10位不足会交给下个字段使用

整数类型

​				tinyint,int整数类型
​				float,double小数类型
​				numeric(5,2) decimal(5,2)—也可以表示小数,表示总共5,其中可以有两位小数
​				decimal和numeric表示精确的整数数字


blob – blob 二进制数据,可以存放图片、声音,容量4g 缺点是数据库

事务的简单介绍

事务 – 将多条语句绑定在一起执行,要么全都成功,要末全都失败

     四大特性 
         --  原子性 : 指事物的所有操作要么全都成功,要么全都失败
		 --  一致性 ; 事物只包含事务提交后的状态
		 --  隔离性 : 并发 b事物如何要执行的话,要么在a事务结束后执行,要么在a事物开始执行就已经结束
		 --  持久性 :事务执行成功后,提交啦,必须持久性保存到数据库中,

事务的隔离问题

           --  读以提交(脏读)  一个事务读取到另一个事务还没提交的事务
		   --  不可重复读(Read Committed),一个事务读到另一个事务已提交的内容
		      (但是事务B能读到事务A提交的数据更新内容。)
		   --  不可重复读(Read Committed),一个事务读到另一个事务已提交的内容(主要是数据更新)		 
		   --  可串行化(Serializable):最高的隔离级别,通过强制事务排序,使之不可能相互冲突,从而解决				幻读问题。
事务锁   --    读锁,也称为共享锁。某个事务A拿到该锁时,事务A只能进行读操作,此时其他事务也可以拿到这把					 锁(共享)。    
        --    写锁,也称为排它锁。某个事务A拿到该锁时,事务A能进行读、写操作,此时其他事务不能拿到这把					锁(排它)
索引
		--  单值索引 create index 索引名 on 表明(字段名)
      	--  唯一索引 create unique index 索引名 on 表名(字段名)
	 	--  复合索引 create index 索引名 on 表明 (字段1,字段2)
	    --  删除索引 alert table drop index 索引名


视图 – 可视化的表,视图当做是一个特殊的表,是指,把sql执行的结果,直接缓存到了视图中。

笛卡尔积现象

​ – :当进行多张表联合查询的时候,在没有任何条件进行限制情况下,最终查询结果条数是多张表记录条数的乘积!

sql执行顺序


f r o m − o n − j o i n − w h e r e − g r o u p b y − 聚合函数 − h a v i n g (分组过滤) − d i s t i n c t (去重) − 排序 − 分页 from - on -join -where -group by - 聚合函数 - having(分组过滤)- distinct(去重)-排序 -分页 fromonjoinwheregroupby聚合函数having(分组过滤)distinct(去重)排序分页

sql优化

​ – 查询时使用具体字段可以提高效率

	 -- 	避免where子句中用or来连接 (# 分开两条sql写)使用or可能会使索引失效,从而全表扫描
	  	    对于or没有索引的salary这种情况,假设它走了id的索引,但是走到salary查询条件时,它还得全表扫			 描。也就是说整个过程需要三步:全表扫描+索引扫描+合并。如果它一开始就走全表扫描,直接一遍扫描			就搞定。虽然mysql是有优化器的,处于效率与成本考虑,遇到or条件,索引还是可能失效的
	
	 -- 	使用varchar代替char 	
			varchar变长字段按数据内容实际长度存储,存储空间小,可以节省存储空间
			char按声明大小存储,不足补空格
			其次对于查询来说,在一个相对较小的字段内搜索,效率更高
	
	 --    	尽量使用数值替代字符串类型
	 --    	查询尽量避免返回大量数据 (使用分页)
	 
	 --   	用explain分析你SQL执行计划	  
	 --    	创建name字段的索引  
	 --    	优化like语句 
				反例 SELECT id,NAME FROM student WHERE NAME LIKE '%1%
				正例 SELECT id,NAME FROM student WHERE NAME LIKE '1%'
	 -- 	索引不宜太多,一般5个以内
	 -- 	批量插入性能提升 大量数据提交,上千,上万,批量性能非常快,mysql独有
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值