1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?

  • 数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义,存储数据的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据。
  • 数据库管理系统:DataBaseManagement,简称DBMS。数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库当中的数据进行增删改查。常见的数据库管理系统:MySQL、Oracle、MS SqlServer、DB2、sybase等。
  • SQL:结构化查询语言。程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。
  • 三者之间的关系:DBMS–>执行–>SQL–>操作–>DB

2、mysql安装了,服务启动了,怎么使用客户端登录mysql数据库?

使用bin目录下的myql.exe命令来连接mysql数据库服务器

3、mysql常用命令(不区分大小写)

(1)退出mysql:exit

(2)查看mysql中的数据库:show databases;(默认有四个数据库)

(3)选择使用某个数据库:use 数据库名;

(4)创建数据库:create database 数据库名;

(5)查看某个数据库下的表:show tables;

(6)查看mysql数据库的版本号:select version();

(7)查看当前使用的数据库:select database;

4、数据库当中最基本的单元是表:table

任何一张表都有行和列:

  • 行(row):被称为数据、记录
  • 列(column):被称为字段,如姓名字段、性别字段、年龄字段。(每一个字段都有:字段名、数据类型、约束等属性)

5、SQL语句的分类

  • DQL:数据查询语言(凡是带有select关键字的都是查询语句)
  • DML:数据操作语言(凡是对表中的数据进行增删改的都是DML,insert、delete、update)
  • DDL:数据定义语言(凡是带有create、drop、alter的都是DDL,DDL主要操作的是表的结构,不是表中的数据)
  • TCL:事务控制语言(包括事物提交commit、事物回滚rollback)
  • DCL:数据控制语言(例如授权grant、撤销权限revoke等)

6、将sql文件的数据导入(路径中不要有中文)

bjpowernode.sql源文件(带预览图)
https://p14.lanzouv.com/ic2WI0efp0je

7、查看表中的数据:select * from 表名;

8、不看表的数据,只看表的结构:desc 表名;

9、简单查询

(1)查询一个字段:select 字段名 from 表名;

select后面跟字面量(不是字段名):

(2)查询两个字段或多个字段:使用逗号隔开

(3)查询所有字段:第一种方式把每个字段都写上,第二种方式使用*(效率低、可读性差、实际开发中不建议)

(4)给查询的列起别名:使用as关键字(原表列名不变,只负责查询)

as可以省略:

若起的名字有空格或中文:使用单引号

(5)计算员工年薪(字段可以使用数学表达式):

10、条件查询

select … from … where …;

​​​​

找出名字带有“_”的:转义字符 \_

11、排序(asc升,desc降)

多个字段排序:

根据字段位置排序:

12、数据处理函数

数据处理函数又被称为单行处理函数,单行处理函数的特点是一个输入对应一个输出。和单行处理函数相对的是多行处理函数,多行处理函数的特点是多个输入对应一个输出。

(1)常见的单行处理函数

在所有数据库中,只要有NULL参与的数学运算,最终结果就是NULL。为了避免这个现象,需要使用ifnull函数。用法:ifnull(数据,被当做哪个值)

case…when…then…when…then…else…end

当员工的工作岗位是MANAGER时,工资上调10%,当工作岗位是SALEMAN时,工资上调50%,其他正常

(2)常见的分组函数/多行处理函数

输入多行,最终输出一行

  • count:计数
  • sum:求和
  • avg:平均值
  • max:最大值
  • min:最小值

注意:分组函数在使用的时候必须先分组,然后才能用。如果没有对数据进行分组,整张表默认为一组。

注意:1、分组函数自动忽略NULL,不需要提前对NULL进行处理

2、分组函数中count(*)和count(具体字段)的区别:

count(*):统计表中的总行数,因为每一行记录不可能都为NULL

count(具体字段):表示统计该字段下所有不为NULL的元素的总数

3、分组函数不能直接使用在where子句中

4、所有的分组函数可以组合起来一起用

13、分组查询(重要)

select … from … group by …

比如计算每个部门的工资和,计算每个工作岗位的平均薪资,计算每个工作岗位的最高薪资

(1)关于执行顺序

select … from … where … group by … order by…

以上关键字的顺序不能颠倒,执行顺序是:from、where、group by、select、order by

因为分组函数在使用的时候必须在分组之后才能使用,where执行的时候,还没有group by

(2)找出每个工作岗位的工资和

在一条select语句当中,如果有group by语句的话,select后面只能跟参加分组的字段以及分组函数,其他的一律不能跟

(3)找出每个部门的最高薪资

(4)找出每个部门不同工作岗位的最高薪资

(5)找出每个部门最高薪资,要求显示最高薪资大于3000的

使用having可以对分完组之后的数据进一步过滤,having不能单独使用必须和group by联合使用,不能代替where

优化策略:where和having,优先选择where,where实在完成不了了,再选择having

例子:找出每个部门的平均薪资,要求显示平均薪资高于2500的

14、总结单表查询

select… where… group by … having … order by …

执行顺序:from、where、group by、having、select、order by

从某张表中查询数据,

先经过where条件筛选出有价值的数据,

对这些有价值的数据进行分组,

分组之后可以使用having继续筛选,

select查询出来,

最后排序输出

例子:找出每个岗位的平均薪资,要求显示平均薪资大于1500的,除MANAGER之外,要求按照平均薪资降序排