【笔记】【MySQL基础】

北京动力节点,郭鑫

视频地址: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_数据处理函数_单行处

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值