MySQL学习知识点总结
利用最近几天时间对mysql进行了巩固复习,跟着视频老师学习感觉又获得了一些新的知识,在这里记录一下复习的知识点。
MySQL服务器 可以理解为是一种软件,不同的服务器负责调用不同的文件类型,而mysql服务器就是处理表文件的一种软件
一.表文件、数据库、数据库服务器
1.1表文件
1)在mysql数据中,表文件是以特殊的后缀结尾的文件,如在mysql5.5版本都是以 .frm结尾的一种文件;
2)存在于mysql服务器计算机的硬盘上;
3)以数据行的形式进行数据存储的文件;
1.2表文件结构
表文件记录的内容就是表的结构和数据行内容
1.3数据库
(student.frm teacher.frm) db1
(employ.frm department.frm) db2
在计算机硬盘上是以文件夹的形式存储表文件的,将存放表文件的文件夹称之为数据库
1.4数据库服务器
一种专门对表文件进行调用和管理的软件
二.SQL命令
-
Struct Query Language 结构化查询编程语言
- 用户通过SQL语言发请求,用于调用表文件
三.数据库服务器分类
3.1 关系型数据库服务器:
管理的表文件彼此之间往往存在隶属关系,可以完整描述一段数据,但查询时候由于设计的数据较多,因此查询速度并不理想
3.2 非关系性数据库服务器:一般多map形式存储
管理的文件都相对独立,无法描述一段完成数据,但由于每次查询数据较少,因此查询数据非常快
四.关系型数据库服务器分类:
1.甲骨文公司:Oracle MySQL
2.微软公司:SqlServer
五.MySQL服务器的相关命令
1.登录:进入mysql的bin文件夹,进入dos窗口:
mysql -u root -p(回车) 密码:
2.查询所有数据库:show database;
创建数据库:create database dbname;
删除数据库:drop database dbname;
3.表文件管理:
查看指定数据库下的所有表文件名:use dbname; show tables;
在指定数据库下创建表文件:
use dbname; create table t_name{ 字段名 类型, 字段名 类型, }; drop table t_name; alter table t_name add 字段(类型); alter table t_name drop 字段;
4.表文件数据行管理
增删改查
insert into t_name (字段1,字段2,字段3) value('值1','值2','值3'); delete from t_name; delete from t_name where 条件; update t_name set 字段1 = '值1', 字段2 = '值2'; update t_name set 字段1 = '值1' where 条件; select * from t_name;
5.多条数据插入
按照字段顺序插入多条数据
insert into t_name (字段1,字段2,字段3) values ('值1','值2','值3'), ('值a','值b','值c');
简化如果每个表字段都赋值,插入语句就不需要指定字段,插入顺序对应表字段顺序
insert into t_name values ('值1','值2','值3'), ('值a','值b','值c');
数据行复制命令,A、B两表字段结构完全一致,将A表的行数据复制到B表
insert into 表B select * from 表A;
6.表文件备份
create table 表Abak select * from 表A;
七个查询命令
Select、 from、 where、 group by、having、order by、limit
七个SQL命令的执行顺序
From -> where -> group by -> having -> select -> order by -> limit
Select ename, job, sal from employee;
- From永远是第一个执行,相当于一个读取流,将硬盘上的表文件加载到内存中,生成一个临时表1,以供以后查询使用,临时表名称与表文件名称相同
- Select是在from之后执行的,因此其操作的是临时表1,筛选的结果组成一个新的临时表2,以供后续操作
临时表
由查询命令在执行时,在内存中生成的表文件
临时表的作用:
每一个查询命令在执行时,实际上都是在操作由上一个命令生成的临时表里的数据;
临时表生命周期:
在当前查询命令执行完毕之后,MySQL服务器自动将上一个命令生成的临时表存内存中销毁,导致用户最终看到的就是最后一个查询命令执行后生成的临时表
l 七个查询命令中只有from不需要操作临时表,from只负责将硬盘上的表文件加载到内存
l 只有group by 命令在执行完毕后才有机会在内存中生成多个临时表,其他出from外的5个命令在执行完毕之后,只在内存中生成一个临时表;
l 只有having命令在执行完毕后,不会生成新的临时表,只负责将group by生成的临时表中不满足条件的临时表从内存中进行删除
Where命令
执行顺序:from->where->select
作用:循环遍历当前临时表所有数据行,每得到一个数据行,根据where后的条件对数据行的信息进行判断是否需要被定位,循环完毕之后将所有定位的数据行取出 生成一个临时表
Between…and… < = > ( >= and <=)
Mysql 中null不表示空,而是表述了一个不确定的值,因而无法进行任何计算
Name = null (错)
Name is null (对)
Ps:
查询名字中第三个字母是A的人员信息
Select * from employee where ename like ‘_ _A%’;# 一个下划线表示站位一个字符
聚合函数
Max、min、sum、avg、count
Group by
首先根据分组字段的种类将临时表进行分类,然后将相同的特征的数据行取出来保存到一个新的临时表
Order by
Order by对select生成的临时表数据进行排列,其使用的排序字段只能是来自于select生成的临时表
Limit
Limit a,b
A:起始位置
B:从起始行开始取得数据行数
Mysql服务器中表文件字段位置从1开始
表文件数据行位置从0开始
Union 和 union all
Union会自动将两个临时表中内容相同的数据行去重,如果不想去重就使用union all
Datetime 和 timestamp
Timestamp取值会按照时区进行换算