MySQL复习笔记记录

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;

  1. From永远是第一个执行,相当于一个读取流,将硬盘上的表文件加载到内存中,生成一个临时表1,以供以后查询使用,临时表名称与表文件名称相同
  2. 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取值会按照时区进行换算

原文地址:https://www.cnblogs.com/EtherealWind/p/14340871.html