Javaweb09——MySQL(4)

MySQL note3

CREATE TABLE test1(
ename VARCHAR(3)
)
#插入三个英文字母、三个汉字
INSERT INTO test1 VALUES('abc')
INSERT INTO test1 VALUES('早上好')
INSERT INTO test1 VALUES('abcd') #Data too long for column
#添加一个定长字段 并重新设置
alter table test1 add sex char(1);
update test1 set ename='dqy',sex='男' where ename='abc'
#索引的管理
CREATE INDEX ename_index ON emp(ENAME)
SHOW INDEX FROM emp
DROP INDEX ename_index ON emp
#查看执行计划
EXPLAIN SELECT * FROM emp WHERE ENAME='smith'
CREATE INDEX sal_index ON emp(SAL)
EXPLAIN SELECT * FROM emp WHERE SAL<1000
DROP INDEX sal_index ON emp
#视图对象
CREATE VIEW view_1 AS SELECT * FROM emp
SELECT * FROM view_1

相关笔记:

/*
一 数据类型
	常用整数类型
		TINYINT
		SMALLINT
		INT
		BIGINT 相当于Java中的long
	字符串类型
		1分类
			VARCHAR CHAR
		2区别
			VARCHAR(m):定长可变字符串
				定长:当前字段可存储字符个数固定
					ename VARCHAR(3)  #表示ename字段可存储3个英文字符或3个英文字母
				可变:在硬盘上存储空间可根据情况【缩小】
					INSERT INTO test1 VALUES('abc') #硬盘 【a】【b】【c】
					INSERT INTO test1 VALUES('ef') #硬盘 【e】【f】
			CHAR(m):定长不可变字符串
				不可变:在硬盘上存储空间不可变
					INSERT INTO test1 VALUES('abc') #硬盘 【a】【b】【c】
					INSERT INTO test1 VALUES('ef') #硬盘 【e】【f】【空格】
					读取数据时将空格抹掉
	日期类型
		YEAR
		TIME
		DATE
		TIMESTAMP 时间戳
二 约束
	1非空约束:管理的字段中不能存放null值
		CREATE TABLE test1(
		sid INT,
		ename VARCHAR(3) NOT NULL
		)
	2唯一性约束:管理的字段中存放值不能重复 可以有null
	CREATE TABLE test1(
		sid INT,
		ename VARCHAR(3) UNIQUE
		)
	3主键约束:管理主键字段 不能为null不能重复
	CREATE TABLE test1(
		sid INT PRIMARY KEY
		ename VARCHAR(3) 
		)
	4外键约束:管理外键字段 来自关联的一方表中主键字段值 可以有null值
	ALTER TABLE 多方表
	ADD CONSTRAINT 外键约束对象名 FOREIGN KEY(外键字段名称)
	REFERENCES 一方表(主键字段)
三 索引index
	1查询速度
		表文件中数据行随着时间时间推移越来越多 而where命令进行遍历 速度会很慢
	2索引作用
		在表文件中数据行增加时 不大幅降低查询效率
	3原理
		数据1【100,80,45,50,90,200,17】
		数据2【17,25,50,80,90,100,200】
		得到最小值? 数据2更快 因为事先排好了顺序
	4索引管理
		1)将字段内容交给某个索引进行管理
			CREATE INDEX 索引名 ON 表名(字段)
		2)查看表文件所关联的索引
			SHOW INDEX FROM 表名
			***在为表文件绑定【主键约束】【唯一性约束】【外键约束】时 MySQL服务器自动将当前字段数据进行索引
		3)删除表文件指定索引
			DROP INDEX 索引名 ON 表名
三 执行计划 EXPLAIN
	1命令格式
		EXPLAIN 查询语句
	2命令作用
		展示当前查询得到结果是否通过索引来进行定位
		DBA通过执行计划了解本次查询过程中,是否使用预先创建好的索引
	3执行计划对于查询语句执行效率的判断问题
		type属性
			ALL  最慢 对所有数据进行遍历
			TYPE  从索引中抓取 没什么用
			RANGE  WHERE不进行遍历 直接从索引中得到定位的数据行行数 大幅提升效率 DBA进行SQL优化时保证的最低级别
					   但不稳定 字段内容发生变化时 容易导致索引失效
		  REF		 WHERE不进行遍历 直接从索引中得到定位的数据行行数 同时这种情况根据定位条件一次只得到一个数据行
						 很稳定 DBA该努力达到这个程度
		  CONST  根据主键字段进行索引 执行效率最快 但很少用到
四 视图
	1定义
		MySQL中的一个对象 用于存储查询语句 提高使用效率 避免重复开发
	2命令
		1)将查询语句交给一个视图对象进行管理
		CREATE VIEW 视图名 AS 查询语句
		2)通过视图对象调用管理的查询语句
		SELECT * FROM 视图名
	3额外功能
		视图对象拥有对当前查询语句关联的表文件操作能力
		1)通过视图对象对关联的表文件的数据行进行插入操作 删除 更新
	4视图作用(重点!!!)
		1)提高查询语句复用性
		2)隐藏业务中涉及表的关系 开发人员通过视图进行操作时不会知道具体操作表的内容
五 存储引擎
	1定义 MySQL服务器对表文件内容的管理方式
	目前主要采用 INNODB MyIsam两种
	2INNODB 在对表文件内容修改时 先进行一次备份 所以相对较慢 但是执行完毕后有备份存在 可以使用备份取消当前操作 增加安全性
	...
六 事务 TRANSACTION
	1介绍
		事务是MySQL服务器提供的一个管理对象 用于对表文件的【备份】进行管理
	2使用
		START TRANSACTION 通知MySQL提供一个事务对象 这个事务对象对接下来产生的所有备份进行管理
		DELETE FROM emp WHERE DEPTNO=30 生成emp.bak
		DELETE FROM dept WHERE DEPTNO=30 生成dept.bak
		ROLLBACK 通知MySQL服务器将本次操作中所有备份信息覆盖到表文件 来取消本次操作
		COMMIT 通知MySQL服务器将本次操作生成的所有备份信息进行删除 即提交操作

*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值