mysql基础知识点

									MySql数据库服务器
1、服务器:
	
	1、服务器是软件,不是硬件,不是计算机
	2、不同服务器负责调用不同的文件类型
	
2、表文件,数据库,数据库服务器
	
	1、表文件:
		
		1)表文件是以“.frm"结尾的一种文件
		2)存在于服务端计算机硬盘上
		3)以数据行形式进行数据存储的文件

	2、表文件结构:
			student.frm
		标题行: sid	sname	sex		age		home

		数据行:10	Mike	男		20		河南
				。。。。。
		
	3、数据库:
		
		开发人员将用于存放表文件的文件夹称为【数据库】

	4、数据库服务器:
		
		一种专门对表文件进行调用和管理的软件


3、SQL命令:
	
	1、全称:struct query language 结构化查询编程语言

	2、作用:用户通过SQL命令向数据库服务器发送请求,用于对表文件进行调用管理
	
	3、特点:SQL语法结构与中国人日常用语结构非常相似,包含主调宾
		
4、数据库服务器:
	
	1、关系型数据库服务器:

		管理的表文件彼此之间往往具有隶属关系特征,可以完整描述一段数据
		查询时由于涉及数据较多,因此查询速度并不理想
		
	2、非关系型数据库服务器【HashMap(key-value)】:
		
		管理表文件首饰独立,无法描述一段完整的数据
		但是由于每次查询的大数据较少,因此查询速度非常快

5、关系型数据库服务器分类:
	
	1、甲骨文公司:Oracle,MySQL

	2、微软公司:SQLserver

6、MySQL服务器启动与关闭:
	
	1、通过windows系统帮助启动与关闭mysql服务器
		 dos窗口输入services.msc 进入到Windows系统服务器管理窗口

	2、以【管理员身份】通过dos窗口输入命令,要求mysql服务器启动与关闭

		如果需要在DOS窗口中向mysql服务器发送命令,必须配置path环境变量,
			path = C:\program Files(x86) \MySQL\MySQL Server 5.5 \bin
		
		配置完毕后:
			Dos窗口:net start mysql 启动mysql服务器
					net stop mysql  关闭mysql服务器
				
		如果不是管理员身份来输入上述命令,会得到【错误5】提示

7、登录: mysql -uroot -p密码
	
		1、查看所有的数据库: show databases;

		2、创建数据库: create database test2;

		3、删除数据库: drop database test2;

8、表文件管理:
	
		1、查看指定的数据库下所有的表文件名:
			use 数据库名;
			show tables;
		
		2、在指定的数据库下创建表文件:
			use 数据库名;
			create table 表文件名(
				字段名 数据类型,
				字段名 数据类型,
				字段名 数据类型  最后一个不加“,”
			)

		3、删除一个表文件:
			drop table 表文件名;
		
		4、查看表文件字段信息:
			show create table Xinxi; (这个比较详细)

			desc Xinxi; 查看表结构(这个比较直观)

		5、为表文件添加字段
			alter table 表文件名 add 新字段名  数据类型名;
			
		6、删除表文件字段
			alter table  表文件名 drop 字段名;


9、表文件数据行管理:
		
		1、插入命令:负责要求mysql服务器向指定的表文件添加数据行
			
			insert into 表文件名(字段名1,字段名2,varchar)
			values(值1,值2,  '单引号')

		2、查询命令:负责要求mysql服务器将指定的表文件数据进行展示:
			select * from 表文件名;
		
		3、删除命令:负责要求mysql服务器将指定的表文件数据进行删除
			delete from 表文件名;  删除全部数据
			
			delete from 表文件名 where 判断条件; 将满足条件的数据进行删除

		4、更新命令:负责要求mysql服务器将指定的表文件数据行更新

			update 表文件名 set 字段名= 值,字段名2 = 值;
				将所有数据行指定字段的值赋值新值
			 update xinxi set age = age+3;
			 	所有age都加三
			
			update 表文件名 set 字段名= 值 where 判断条件;
				指定条件下数据行的更新
		
10、高级插入命令:
		
		1、一次性向表文件插入多行数据:
			insert into 表文件名(字段1,字段2,字段3)
			values
		     (值1,值2,值3),
		     (值4,值5,值6);
		     
		    
		2、简化版插入命令:
			如果插入数据时每一个字段都能赋值,此时插入命令不需要指定字段名,
			插入值顺序与表文件字段顺序保持一致

			insert into 表文件名 values(值1,值2,值3);
		注意:这里是values,不是value

		3、数据行赋值命令,可以将表A中数据复制到表B(表A与表B字段结构完全一致)
			
			insert into B select * from A;

12、表文件备份命令:
		将表文件A进行一份备份,备份生成的表文件B

		create table B select * from A;

13、逻辑运算;
		
		and 与运算符 相当于java中的&&
		or 或运算符  相当于java中的 ||
	
		select * from emp where job= 'salesman' and sal > 1000;

14、mysql服务器字符串类型:
	
	 1、分类: varchar char
	 2、区别:
	 		varchar(m): 定长可变字符串
			定长:当前字段可以存储的字符个数是固定的,

			ename varchar(3)    #  3表示ename字段可以存储3个英文字符或者三个中文

			可变:ename字段在硬盘上存储字符空间可以根据实际情况进行【缩小】
				  ename varchar(3)

				  insert into test1 values('abc')  硬盘 [a] [b] [c]
				  insert into test 1 values('ab')    硬盘 [a] [b]
			
			char(m) :  定长不可变字符串
			定长:当前字段可以存储的字符个数是固定的

			sex char(1)	 表示sex字段可以存储一个英文字母或一个中文

			不可变:sex字段在硬盘上存储空间是固定的

				  insert into test1 values('abc')   硬盘 [a] [b] [c]
				  insert into test 1 values('ab')    硬盘 [a] [b]  [空格]

				  针对char类型字段进行数据读取时,mysql服务器自动将字符串中结尾处空格去掉 
				
			如果插入的字符串以空格结尾,就不要将该字符串用char修饰,否则结尾的空格会被抹去


15、日期类型,时间类型			

16、约束:
		
		1、非空约束:要求管理的字段不能存储null值

		2、唯一性约束:要求管理的字段存储值不能重复,但是可以储存null值 

		3、主键约束:管理主键字段,要求主键字段内容不能为null,同时也不能出现重复值

		4、外键约束:管理外键字段,要求外键字段的值应该来时于关联一方表中字段的值
					可以存储null值

		(修改表)alter table 多方表
				add constraint(约束的意思)		外键约束对象名		foreign key(外键字段名称)
				reference  一方表(主键字段)

17、索引(index)
		
		1、查询速度问题:
				由于表文件存放数据行会随着时间推移,会越来越多
				where命令在执行时对表文件多有数据行进行遍历
				所以时间越久,数据行越大,where命令执行时消耗时间就会不断增加
		
		2、索引作用:
				在表文件数据行增加的时候,不会大幅度降低查询语句执行效率

		3、索引的工作原理:
				数据1【100,60,45,23,57,12,200】 12
				数据2 【12,23,34,45,56,67,78】12
			       分组得到最小值:12
			       从数据二种消耗时间较少

			       数据1,先进行排序,然后根据排序位置,定位最小值
			       数据2,由于事先排好了顺序,直接从第一位抓取数据,因此效率高

		原理:事先将字段中内容进行排序,在where命令进行定位时,避免对表中所有的数据进行遍历
			  将会提升查询速度
		
		4、索引管理:
			
			1)将字段内容交给某个索引进行管理
			  
			  	create index 索引名 on 表名  (字段) 
			
			2)查询表文件关联的索引
				
				show index from 表名

				在为表文件绑定【主键约束】,【唯一性约束】,【外键约束】时
				mysql服务器自动将当前字段数据进行排序并交给指定索引管理
			    
			3)删除表文件中指定的索引
				
				drop index 索引名 on 表名

18、执行计划

		1、命令格式:explain  查询语句

		2、命令作用:展示当前查询得到结果是否通过索引来进行定位
				      DBA通过执行计划了解在本次查询过程,是否使用预先创建好的索引

		3、执行计划对于查询语句执行效率判断

				1)在执行计划中,通过type属性展示查询语句执行效率
				2)执行效率:慢----->快
						
						ALL:where对表文件所有数据行进行遍历,才得到查询结果
							  这种级别查询语句,随着数据行增加导致执行速度大幅度降低
							  对于DBA来说是要极力避免的

						type:where对表文件所有数据行进行遍历,只不过在select
							   抓取字段内容时,从索引中抓取
							   这种级别虽然在抓取数据速度有所提升,但是依然面对
							   随着数据行增加导致执行速度大幅度降低, 对于DBA来说是要极力避免的

							  select * from emp ;    ALL 
							  create index ename_index on emp(ename)
						          select ename from emp #type,  此时对于查询速度提升非常渺小

						rang:
						
							 where 不会对表文件数据行进行遍历,而是直接从索引得到定位的数据行行数
							  将大幅度提升查询效率
							  这是DBA进行SQL优化时保证的最低级别,但是这种级别存在不稳定性
							  当字段内容发生变化时,导致索引失效

							  explain select * from emp where sal < 1000    是ALL  14条记录筛选
							  
							  create index sal_index on emp		#range   2

							  mysql服务器如果发现从索引到数据行行数达到了表文件总行数的1/3时
							  	    此时考虑运行成本问题,放弃使用索引
							  explain select * from emp where sal <= 1250     #all 此时索引失效


					      ref:
					      	
							where 不会对表文件数据行进行遍历,而是直接从索引得到定位的数据行行数
							同时在这种情况根据定位条件一次只能得到一个数据行,属于比较稳定执行效率
							DBA努力达到的优化程度

					    const :
					    		
							根据主键字段上的索引进行定位,是执行效率最快的,但是实际使用过程中,几乎不会被用到
						
19、视图:

		1、定义:
				是mysql服务器中的一个对象,用于存储查询语句
				目的提供查询语句使用效率,避免在多处地方重复性开开发相同查询语句

				提高了查询语句的使用率,降低了开发难度

		2、命令:
				1)将查询语句交给一个视图对象管理
					
					create view 视图对象名 as 查询语句

				2)通过视图对象调用管理查询语句

					select * from  视图对象名

		 3、额外功能:
		 		视图对象存储一个查询语句,同时视图对象拥有对当前查询语句关联的表文件操作能力

				1)通过视图对象对关联表文件数据行进行插入
				2)通过视图对象对关联表文件数据行进行删除
				3)通过视图对象对关联表文件数据行进行跟新

		4、视图作用【问答】
			
			1)提高了查询语句复用性,避免了在多处地方重复进行查询语句开发行为

			2)隐藏业务涉及表关系,开发人员通过视图进行操作时是不会知道其具体操作的表

20、存储引擎:
		
		1.定义:	
				是mysql服务器对应表文件内容管理方式,目前mysql服务器主要采用,INNOB,MyIsam

		2、管理命令:
				
				1)查看mysql服务器支持存储引擎种类:
						
					show   engine(引擎) 

				2)修改mysql服务器默认存储引擎

					C:\Program Files\MySQL\MySQL Server 5.5\my.ini

					default-storage-engine=INNODB
					直接修改
					default-storage-engine=myisam

			      3) 设置表文件依赖存储引擎

			      		show create table 表名;

					alter table 表名  engine = 存储引擎名字

			     4)Myisam存储引擎特征:
			     		
					1、在对表文件内容进行修改时,不会进行备份操作
					     提高操作执行效率,但是在操作完毕后无法取消本次操作

					2、MyIsam存储引擎,使用三个文件存储表文件信息
					
						test1.frm : 存储表文件字段信息
						test1.myd : 存储表文件数据行信息
						test1.myi : 存储表文件字段关联的索引信息

		
			    5)InnoDB存储引擎
			    	
					1、在对表内容进行修改时,首先进行一次备份,在操作时,执行效率相对较慢
					     但是在执行完毕后,由于有备份存在,可以使用备份取消当前操作,增加数据安全性

					2、InnoDB存储引擎,使用一个文件存储表文件信息
						test.frm:	存储表文件字段信息
								存储表文件数据行信息
								存储表文件字段关联的索引信息

21、事务:
		
		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服务器将本次操作中生成所有备份信息进行删除,称之为提交操作
				 
								

版权声明:本文为qq_44707513原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。