一.数据库管理
1.MySql服务器管理数据库位置
1 | C:\ProgramData\MySQL\MySQL Server 5.5\data |
2.查看所有的数据库名
1 | show databases; |
3.创建一个数据库
1 | create database 数据库名; |
4.删除一个数据库
1 | drop database 数据库名; |
二:表文件管理
1.查看表
1 | USE 数据库名; |
2.创建表
1 | use 数据库; |
3.删除一个表文件
1 | drop table 表文件名; |
4.查看表文件字段信息
1 | show create table 表文件名; |
5.为表文件添加字段
1 | alter table 表文件名 add 新字段名 数据类型名; |
6.删除表文件字段
1 | alter table 表文件名 drop 字段名; |
三:表文件数据行管理
1.插入命令
负责要求MySql服务器向指定的表文件添加数据行
1 | insert into 表文件名(字段名1,字段名2,字段名3)values(值1,值2,'值3'); |
2.查询命令
负责要求MySql服务器将指定的表文件数据行展示
1 | select * from 表文件名; |
3.删除命令
负责要求MySql服务器将指定的表文件数据行删除
1 | delete from 表文件名; #删除表文件中所有的数据行 |
4.更新命令
负责要求MySql服务器将指定的表文件数据行更新
1 | update 表文件名 set 字段名1=值,字段名2=值 ;将所有数据行指定字段的值赋值新值 |
四:高级插入命令
1.一次性向表文件插入多行数据
1 | INSERT INTO |
2.简化版插入命令
如果插入数据时每一个字段都能赋值,此时插入命令不需要指定
字段名,插入值顺序此时需要与表文件字段顺序保持一致
1 | insert into 表文件名 values(值1,值2,值3) |
3.数据行备份命令
可以将表A中数据行复制到表B,(表A与表B字段结构完全一致)
1 | insert into B select * from A |
五:表文件备份命令
将表文件A进行一份备份,备份生成的表文件B
1 | create table B select * from A |
六:==临时表==
1 | 1.临时表定义:由查询命令在执行时,在内存中生成的表文件 |
七:查询命令
#==七个查询执行顺序==
1 | from-->where-->group by-->having-->select-->order by-->limit |
1.where
1 | 1.执行顺序:FROM-->WHERE-->SELECT |
2.like 模糊查询
1 | % 是一个通配符,表示一个任意长度额字符串 |
3.聚合函数
1 | 1) max(字段): 返回指定字段的最大值 |
4.group by 分组查询
七个查询命令中,只有GROUP BY有机会在执行完毕后,一次生成==多个==临时表
1 | 1.执行顺序: |
5.group by 的多字段查询
1 | 1.多字段分组时,分组字段出现顺序对于最终查询结果没有 |
6.降序,升序
一般和order by合用
1 | desc 降序 |
7.order by
1 | 1.执行顺序 |
8.having
1 |
|
9.==limit== 截至
MySql服务器中,表文件字段位置从1开始计算,表文件数据行位置从0开始计算
例子:查询销售人员工资排在前两名的职员信息
1 | select * from emp where job='salesman' order by sal desc limit 0,2 |
1 | 1.执行顺序: |
八:多表查询
1.表关系
表文件字段分类:
1.主键字段:用于存放主键编号的字段就是主键字段。每一个表都应该存在一个主键字段。主键编号相当于身份证编号,用于对表文件中
数据行身份进行确认。
主键字段中既不能出现null值,也不能出现重复值2.非主键字段:描述主键编号
3.外键字段: 外键字段只存在于【多方表】,描述多方数据与一方数据之间依赖关系
==外键字段的值应该来自于一方表中主键值==
2.多表查询的本质
1.将多张表数据行合并到同一个临时表,然后使用【六个查询命令】根据需求对临时表数 据行进行定位分组排序等操作最终为用户提供需要的数据的查询过程
2.多表查询关键点:
如何将多张表数据合并到同一个临时表
3.==多张表合并方案==
1.==连接查询合并方案==:[最常见]
1)首先确保两张表之间存在了【隶属关系】,才可以使用连接查询合并方案
2)将两张表中数据行【沿着水平方向进行拼接】,最终得到一个拥有【完整隶属关系】新数据行2.==联合查询合并方案==:
1)不需要两张表之间存在了【隶属关系】
2)将两张表中数据行【沿着垂直方向进行堆砌】
4.jion连接
1.将两个表文件数据行沿着水平方向进行拼接,拼接后数据行存在内存的一个临时表
2.命令格式 FROM 一方表 JOIN 多方表
FROM 多方表 JOIN 一方表3.JOIN两边出现表位置,对于最终查询结果==没有==任何影响
4.JOIN生成临时表字段由一方表字段与多方表字段相加而来(m+n)
5.JOIN生成临时表字段名由==表名.字段==名组成,防止在同一个临时表出现同名字段问题
6.JOIN生成临时表数据行由一方表(n行)每一个数据行与多方表(m行)所有数据行拼接而成==(n*m)==行—–>笛卡尔积
7.JOIN生成临时表必然存在【脏数据行】,可以达到50%以上。【脏数据行】对后续统计分析带来巨大错误,因此在JOIN工作完毕后,必须要将【合法数据行】从当前临时表读取出来存放一个全新临时表,为后续操作做准备
5.连接查询过滤方案 on
概念:
JOIN生成临时表必然存在【脏数据行】,【脏数据行】对后续操作带来巨大影响。因此在JOIN生成临时表之后,必须要做的一件事将【合法数据行】与【脏数据行】进行==剥离==这个行为称之为【连接查询过滤方案】
语法:
FROM 一方表 JOIN 多方表
ON 定位合法数据行条件 【连接查询过滤方案】
合法数据行与脏数据行区分原则:
1.如果表文件存在了明显的【外键字段】
ON 当前数据行来自于一方表主键字段值 = 当前数据行来自于多方外键字段值2.如果表文件没有存在明显的【外键字段】
ON 根据实际隶属关系进行判断
例子:
1 | SELECT DEPT.DNAME, EMP.JOB, COUNT(*) |
6.union联合查询
1.要求参与合并的两个临时表的字段结构必须保持一致【字段个数,字段类型顺序】
2.将两个临时表数据行沿着垂直方向堆砌到同一个临时表
3.联合查询生成临时表的字段只能来自于==【第一个临时表字段】==
4.UNION命令在执行时,自动将两个临时表内容相同数据行进行过滤,类似于Java中Set集合
5.UNION ALL命令在执行时,不会将临时表重复的数据进行过滤
1 | 需求: 将部门编号,部门名称,职员编号,职员名称展示出来 |
7.select子查询
1 | 概念: |
子查询可以在哪些场景中提供数据
1 |
|
九:字符串类型
1.varchar
1 | varchar(m): 定长可变字符串 |
2.char
1 | char(m): 定长不可变字符串 |
十:约束
1 | 1.非空约束 not null: 要求管理的字段不能存储null值 |
十一:index索引
1 | 1.索引作用: |
十二:explain执行计划
1 | 1.命令格式: explian 查询语句 |
十三:view视图
1 | 1.定义: |
十四:存储引擎
1 | 1.定义: |
十五:事务(transaction)
==事务—->备份==
1 | 1.介绍: |