北京动力节点,郭鑫
视频地址:https://www.bilibili.com/video/av14547249/#page=158
笔记:
演示环境的建表SQL脚本内容:
DROP TABLE IF EXISTS EMP;
DROP TABLE IF EXISTS DEPT;
DROP TABLE IF EXISTS SALGRADE;
CREATE TABLE DEPT
(DEPTNO int(2) not null ,
DNAME VARCHAR(14) ,
LOC VARCHAR(13) ,
primary key (DEPTNO)
);
CREATE TABLE EMP
(EMPNO int(4) not null ,
ENAME VARCHAR(10) ,
JOB VARCHAR(9) ,
MGR INT(4) ,
HIREDATE DATE DEFAULT NULL ,
SAL DOUBLE(7,2) ,
COMM DOUBLE(7,2) ,
primary key (EMPNO) ,
DEPTNO INT(2)
);
CREATE TABLE SALGRADE
(GRADE INT ,
LOSAL INT ,
HISAL INT
);
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES (
10, 'ACCOUNTING', 'NEW YOURK');
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES (
20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES (
30, 'SALES', 'CHICAGO');
INSERT INTO DEPT( DEPTNO, DNAME, LOC ) VALUES (
40, 'OPERATIONS', 'BOSTON');
commit;
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7396, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300,30);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 20);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, NULL, 20);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, NULL, 20);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20);
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (
7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);
commit;
INSERT INTO SALGRADE (GRADE, LOSAL, HISAL) VALUES (
1, 700, 1200);
INSERT INTO SALGRADE (GRADE, LOSAL, HISAL) VALUES (
2, 1201, 1400);
INSERT INTO SALGRADE (GRADE, LOSAL, HISAL) VALUES (
3, 1401, 2000);
INSERT INTO SALGRADE (GRADE, LOSAL, HISAL) VALUES (
4, 2001, 3000);
INSERT INTO SALGRADE (GRADE, LOSAL, HISAL) VALUES (
5, 3001, 9999);
commit;
2018年2月13日星期二 22:00
MySQL安装目录
章节:
1. 数据库概述及安装
2. MySQL的安装及登录
3. 常用命令
4. 演示数据结构
5. 简单的查询
6. 条件查询
7. 数据排序 asc/desc
8. 处理函数
9. select语句总结
10. 连接查询/跨表查询
11. 子查询
12. union合并(相加)集合
13. limit使用
14. 表
15. 存储引擎
16. 事务Transaction
17. 索引(了解)
18. 视图
19. DBA命令
20. 数据库设计三大范式
21. 34题经典SQL试题
相关概念介绍:
数据库管理系统 DBMS
数据库/仓库 DB
结构化查询语言 SQL
系统概述:
1. 什么是数据库:一个或一组文件,保存了一些符合特定规格的数据,DataBase,数据库软件称为数据库管理系统,DBMS,DataBase Management System,例如:Oralce,MySQL,SQL Server,Sybase,informix、DB2等
2. MySQL发展历史
3. SQL概述:StructuredQuery Language,结构化查询语言,是一套标准,使用SQL完成和数据库的通信,每个不同的数据库管理系统有不同的特性,有一些特定的SQL特性,大概占10%
数据库管理系统安装:
默认端口号3306,会被攻击,改成3366
添加系统环境变量:
C:\ProgramFiles\MySQL\MySQL Server 5.7\bin
登录:
mysql -uroot -p123456
查询数据库版本:
mysql --version
mysql -V
select version();
常用基本命令:
查看有哪些数据库:
show databases;
使用某个数据库:
use world;
查看有哪些表:
行表示记录
列表示字段:字段名称,类型,长度,字段约束
show tables;
查看自己在哪个数据库下:
select database();
直接查看其他数据库中有哪些表:
show tables from mysql;
退出数据库:
exit;
SQL语句分类:
DQL:数据查询语句,select
DML:数据操作语句,insert/delete/update
DDL:数据库定义语句,create/drop/alter
TCL:事务控制语言,commit/rollback
创建数据库:
create databasebjpowernode;
导入数据库脚本
数据库脚本:以.sql后缀结尾的文件
导入数据库脚本:
1. 选定数据库
2. source命令
mysql> usebjpowernode;
Database changed
mysql> sourceC:\Users\copywang\Desktop\bjpowernode.sql
后面不需要分号
数据库表的介绍:
·show talbes;
desc dept;
字段,字段类型,字段长度,字段约束
以DEPTNO为例,字段为DEPTNO,字段类型为INT,字段长度为2,约束是字段不能为空且为主键
desc emp;
desc salgrade;
double(7,2) 表示七位数,包含2位小数,从0到99999.99
1、动力节点_MySQL_001_MySQL数据库管理系统前言
2、动力节点_MySQL_002_MySQL数据库管理系统相关概念介绍
3、动力节点_MySQL_003_MySQL数据库管理系统概述
4、动力节点_MySQL_004_MySQL数据库管理系统安装过程介绍
5、动力节点_MySQL_005_MySQL数据库管理系统安装实际操作
6、动力节点_MySQL_006_数据库常用命令_查看数据库版本
7、动力节点_MySQL_007_数据库常用命令_常用基本命令
8、动力节点_MySQL_008_SQL语句分类
9、动力节点_MySQL_009_导入数据库脚本
10、动力节点_MySQL_010_数据库表的介绍
11、动力节点_MySQL_011_简单查询_单个字段和多个字段查询
简单SQL查询:
单个字段和多个字段
select ename from emp;
select sal from emp;
select ename,sal from emp;
select ename,sal,job fromemp;
查询语句不会修改数据库中的数据,只适用于显示。
12、动力节点_MySQL_012_简单查询_查询全部字段
selectempno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
或者使用(不建议):效率比前一个方法要低,因为要把*转成所有具体字段,而且语义不明确
select * from emp;
13、动力节点_MySQL_013_简单查询_查询员工年薪及给字段起别命
select sal*12 yearsalfrom emp;
select ename,sal*12 as yearsalfrom emp;
或者:
select ename,sal*12 yearsalfrom emp;
不建议省略as
字段名可以进行数学计算,起别名
14、动力节点_MySQL_014_条件查询介绍
关键字:where
select 字段 from 表名where 条件;
15、动力节点_MySQL_015_条件查询_条件查询支持的运算符介绍
运算符 |
说明 |
= |
等于 |
<>或!= |
不等于 |
< |
小于 |
<= |
小于等于 |
> |
大于 |
>= |
大于等于 |
between ... and ... |
两个值之间,相当于>= and <= |
is null |
为null(is not null 不为空) |
and |
并且 |
or |
或者 |
in |
包含,相当于多个or(not in 不在这个范围中) |
not |
Not可以取非,用于is和in中 |
like |
Like为模糊查询,支持%或者下划线匹配 %匹配任意个字符 下划线只匹配一个字符 |
16、动力节点_MySQL_016_条件查询_等号操作运算符
select ename,sal from empwhere sal=5000;
MySQL支持自动类型转换,比如(但是其他数据库不支持,所以不要这么写):
select ename,sal from empwhere sal=’5000’;
select job,ename from empwhere job=’MANAGER’;
这里使用单引号是SQL的标准写法,MySQL也支持使用双引号,开发中只使用单引号
17、动力节点_MySQL_017_条件查询_不等号操作运算符
select ename,sal from empwhere sal!=5000;
select job,ename from empwhere job!=’MANAGER’;
18、动力节点_MySQL_018_条件查询_区间操作运算符
select ename,sal from empwhere sal>=1600 and sal<=3000;
select ename,sal from empwhere sal between 1600 and 3000;
select ename,sal from empwhere sal in (800,1600);
select ename,sal from empwhere sal not in (800,1600);
select ename,sal from empwhere job in (‘MANAGER’,SALESMAN’);
select ename,sal from empwhere job not in (‘MANAGER’,SALESMAN’);
19、动力节点_MySQL_019_条件查询_and优先级高于or
select deptno,ename,salfrom emp where sal>1800 and (deptno = 20 or deptno = 30);
20、动力节点_MySQL_020_条件查询_is运算符
select ename,comm fromemp where comm is null;
null不是数字,是空值,不能进行数学计算,因此不能用=号
select ename,comm fromemp where comm is not null;
select ename,comm fromemp where comm=0;
21、动力节点_MySQL_021_条件查询_like模糊查询
select ename from empwhere ename like ‘%s%’;
select ename from empwhere ename like ‘s%’;
select ename from empwhere ename like ‘_d%’;
select ename from empwhere ename like ‘%n_’;
22、动力节点_MySQL_022_数据排序概述
单一字段排序:order by
默认是是asc
降序是desc
order by 放在where之后
23、动力节点_MySQL_023_数据排序_通过字段排序
select ename,sal from emporder by sal;
select ename,sal from emporder by sal desc;
select ename,sal,hiredatefrom emp order by hiredate desc;
多个字段排序
select deptno,ename,salfrom emp order by deptno,sal desc;
多个字段排序的时候,首先按照第一个字段排序,如果第一个字段相同,那么按照第二个字段再进行排序,以此类推
select job,ename,sal fromemp where job=’MANAGER’ order by sal desc;
有条件查询的时候,order by放在where之后
24、动力节点_MySQL_024_数据排序_通过字段下标排序
字段下标从1开始,这里的下标指的是你查询显示的列的下边,比如job,ename,sal,那么job就是1,sal是3
select job,ename,sal fromemp where job=’MANAGER’ order by 3 asc;
25、动力节点_MySQL_025_回顾上午内容
复习回顾从01到24的内容
26、动力节点_MySQL_026_数据处理函数_单行处理函数概述
单行处理函数
lower |
转换小写 |
upper |
转换大写 |
substr |
截取子串(substr(被截取的字符串,起始下标,截取的长度) |
length |
取长度 |
trim |
去空格 |
str_to_date |
将字符串转换成日期 |
Date_format |
格式化日期 |
Format |
设置千分位 |
Round |
四舍五入 |
Rand() |
生成随机数 |
Ifnull |
可以把null转换成一个具体值 |
注意:数据处理函数是该数据本身特有的,有些函数可能在其他数据库不起作用
单行的意思:处理一行输出一行
27、动力节点_MySQL_027_数据处理函数_单行处理函数_转换大小写函数
select lower(ename) aslowername from emp;
select upper(ename) asuppername from emp;
28、动力节点_MySQL_028_数据处理函数_单行处理函数_substr截取字符串函数
select substr(ename,1,1)as firstchar from emp;
起始下标是从1开始的!
取3,4,5个字符:
select substr(ename,3,3)as ename from emp;
29、动力节点_MySQL_029_数据处理函数_单行处理函数_length和trim函数
select length(ename) asenameLength from emp;
去掉前后空格:一般在用户输入的时候,查询条件里面会用到(MySQL会自动去掉后面的空格)
select * from emp where ename=trim(‘king ‘);
30、动力节点_MySQL_030_数据处理函数_单行处理函数_round四舍五入函数
select round(123.56);
select round(123.56,0);
上面两个输出都是124
select round(123.56,1);
输出是123.6
select round(123.56,-1);
输出是120
31、动力节点_MySQL_031_数据处理函数_单行处理函数_rand随机数函数
select rand();
输出0到1闭区间的随机数
selectround(rand()*122,0);
输出0到122闭区间的随机数
32、动力节点_MySQL_032_数据处理函数_单行处理函数_case_when_then_else_end函数
匹配工作岗位,为MANAGER时,薪水上调10%,为SALESMAN的时候,薪水上调50%
select job,ename,
(case job
when ‘MANAGER’ then sal*1.1
when ‘SALESMAN’ then sal*1.5
else sal
end) as newsal from emp;
33、动力节点_MySQL_033_数据处理函数_单行处