DAY20200706
- 作者: 许你丶半世浮夸
- 来源: 51数据库
- 2021-08-09
SQL语言
结构化查询语言。用于存取数据、更新、查询、管理关系数据库系统统计语言。
创建自定义数据库:
CREATE DATABASE mydb1;
CREATE DATABASE mydb2 CHARACTER SET GBK;
CREATE DATABASE IF NOT EXISTS mydb3;
注释:#
所有开发默认编码是utf8
查看数据库创建信息:
SHOW CREATE DATABASEmydb1;
修改数据库:
ALTER DATABASE mydb2 CHARACTER SET utf8;
删除数据库:
DROP DATABASE mydb1;
查看当前使用的数据库
SELECT DATABASE();
切换使用数据库
USE mydb3;
DISTINCT 去除重复结果,后边加一个字段
ASC :升序
DESC:降序
ORDER BY 列名 DESC
<>不等于
对空值判断
IS NULL / IS NOT NULL
WHERE DEPARTMENT_ID = 70 OR DEPARTMENT_ID = 80;
WHERE DEPARTMENT_ID IN (70,80);
两种表示方法一样,IN表示等于多个值,NOT IN不等于
模糊查询 LIKE
%代表任意长度字符,_一个长度,前后都可以加
时间查询
select 时间函数([参数列表])
SYSDATE() 当前系统时间
CURDATE() 获取当前日期
CURTIME() 获取当前时间
WEEK(DATE) 获取指定日期
YEAR(TIME) 获取指定日期的年
HOUR(TIME) 获取指定时间的小时
MINUTE(TIME) 获取时间的分钟
DATEDIFF(DATE1,DATE2) 获取date1和date2相隔的天数
ADDDATE(DATE,N) 计算date加上n天
字符串函数
CONCAT(str1,str2,...) 字符串拼接
INSERT(str,pos,len,nweStr) 替换为newStr
LOWER(str)
UPPER(str)
SUBSTRING(str,num,len) 截取
当每一行的字段值,可以直接和条件比较,用where
当条件的值不是具体的值,需要对表中数据进行聚合计算时,用having
聚合时有having,有having不一定有聚合
SQL语句编写顺序: SQL语句执行顺序:
SELECT FROM
FROM WHERE
WHERE GROUP BY
GROUP BY HAVING
HAVING SELECT
ORDER BY ORDER BY
LIMIT LIMIT
作业
#1.查询每个部门在1994年入职多少人
SELECT COUNT(*)
FROM t_employees
WHERE YEAR(HIRE_DATE)='1994'

#2.查询叫King的人有多少个
SELECT COUNT(*)
FROM t_employees
WHERE LAST_NAME = 'King';

#3.查询人数最多的5个部门
SELECT DEPARTMENT_ID AS '部门',COUNT(DEPARTMENT_ID) '人数'
FROM t_employees
GROUP BY DEPARTMENT_ID
ORDER BY COUNT(DEPARTMENT_ID) DESC
LIMIT 0,5;

#4.查询60号和50号部门]各有多少人薪资超过5000
SELECT DEPARTMENT_ID '部门',COUNT(DEPARTMENT_ID) '人数'
FROM t_employees
WHERE DEPARTMENT_ID IN (50,60) AND SALARY > 5000
GROUP BY DEPARTMENT_ID;

#5.查询1997年入职的人,平均薪资是多少
SELECT AVG(SALARY) '平均薪资',YEAR(HIRE_DATE) '年份'
FROM t_employees
WHERE YEAR(HIRE_DATE)='1997'
GROUP BY YEAR(HIRE_DATE)

#6.查询SA_REP的平均薪资
SELECT AVG(SALARY) '平均薪资',JOB_ID '工作'
FROM t_employees
WHERE JOB_ID='SA_REP'
GROUP BY JOB_ID

#7.查询80号部门工资最高的3个人
SELECT FIRST_NAME,LAST_NAME,SALARY
FROM t_employees
WHERE DEPARTMENT_ID=80
ORDER BY SALARY DESC
LIMIT 0,3;

#8.查询平均薪资最低的5个部门
SELECT DEPARTMENT_ID,AVG(SALARY)
FROM t_employees
GROUP BY DEPARTMENT_ID
ORDER BY AVG(SALARY) ASC
LIMIT 0,5;

推荐阅读
- SQLite数据库操作:原生操作,GreenDao操作讲解
- 数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
- SQLSERVER查询区分大小写的写法分析
- SQL学习总结之SQL的分类介绍
- 阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
- 高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
- 什么是SQL隔离级别?四个SQL隔离级别定义介绍
- Sql递归介绍之用with实现递归查询
- SQLSERVER查询时日期格式化的实例讲解
- 数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
热点文章
SQLite数据库操作:原生操作,GreenDao操作讲解
18
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
4
SQLSERVER查询区分大小写的写法分析
36
SQL学习总结之SQL的分类介绍
6
阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
4
高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
4
什么是SQL隔离级别?四个SQL隔离级别定义介绍
2
Sql递归介绍之用with实现递归查询
6
SQLSERVER查询时日期格式化的实例讲解
4
数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
7
