数据库基本概念
数据库好处
1、可以持久化数据到本地
2、结构化查询
数据库的常见概念
1、DB:数据库,存储数据的容器
2、DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建或者管理DB
3、SQL:结构化查询语言,用于和数据库通信的语言,通用语言
数据库存储数据的特点
1、数据存放到列表中,然后表存放到库中
2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己
3、表中有一个或者多个列,列又称为‘字段’,相当于‘属性’
4、表中的每一行数据相当于‘对象’
基本操作
1、查看数据服务端版本方式
2、查看当前所有数据库
3、打开指定的库
4、查看当前库的所有表
5、查看其它库的所有表
sql语言规范
1、不区分大小写,但关键字建议大写,表名、列名小写
2、每条命令最好用分号结尾
3、每条命令根据需要,可以进行缩进 或换行
4、注释
单行注释
# 注释文字
– 注释文字
DQL语言学习(Data Query Languge)
基础查询
表数据链接: https://pan.baidu.com/s/1uDxNjKVKlz9uVicf9IYCkg 提取码: 2y1w
语法:
select 查询列表
from 表名
特点:
1、查询列表可以为:表中字段、常量、表达式、函数
2、查询结果是一个虚拟表格
// An highlighted block
SELECT last_name,salary,email
FROM employees;
3、起别名
// An highlighted block
SELECT last_name AS 姓,first_name AS 名
FROM employees;
4、去重
// An highlighted block
SELECT DISTINCT department_id
FROM employees;
5、concat连接
// An highlighted block
SELECT CONCAT(last_name,first_name) AS 姓名
FROM employees;
条件查询
语法:
SELECT 查询列表
FROM 表名
WHERE 筛选条件
分类:
1、按条件表达式筛选
条件运算符:>< = != <> >= <=
2、逻辑运算符:&& || ! AND OR NOT
3、模糊查询
LIKE
BETWEEN AND
IN
IS NULL
1、按条件表达式筛选
案例:查询工资大于12000的员工信息
SELECT *
FROM employees
WHERE salary>12000;
案例:查询部门编号不等于90 的员工信息和部门编号
SELECT last_name,department_id
FROM employees
WHERE department_id!=90;
  #第二种方法
SELECT last_name,department_id
FROM employees
WHERE department_id<>90;
2、逻辑运算符
案例:查询工资在10000,20000之间的员工名、工资以及奖金
SELECT last_name,salary, commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;
案例:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT *
FROM employees
WHERE department_id<90 OR department_id>110 OR salary>15000;
#第二种表达方式
SELECT *
FROM employees
WHERE NOT(department_id>=90 AND department_id<=110) OR salary>15000;
3、模糊查询
LIKE
特点:
一般和通配符搭配使用
% 任意多个字符,包含0个字符
_ 任意单个字符
案例:员工名中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资
SELECT *
FROM employees
WHERE last_name LIKE '__n_l%';
案例3:查询员工名中第二个字符为_的员工名
SELECT *
FROM employees
WHERE last_name LIKE '_\_%';
#第二种方法
SELECT *
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';
BETWEEN AND
1、提高语言简介度
2、包含临界值,不可颠倒
#案例1:查询员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE employee_id >= 100 AND employee_id <= 120;
#第二种方法
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 120;
in
含义:判断某字段中的值是否属于in列表中的某一项
特点:使用in提高语言简洁度,in列表值类型统一或兼容,
案例:查询员工的工种编号是it_prog,ad_vp,ad_pres中的一个员工名和工种编号
SELECT last_name,job_id
FROM employees
WHERE job_id = 'IT_PROT' OR job_id = 'AD_VP' OR job_id='AD_PRES';
#第二种方法
SELECT last_name,job_id
FROM employees
WHERE job_id IN ('IT_PROT' ,'AD_VP' ,'AD_PRES');
is NULL
=<>不能用于判断null值
is_null可以判断null值
案例:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NULL;
#第二种方法
#安全符号
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct <=>NULL;
案例:查询有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
排序查询ORDER BY
语法:
SELECT 查询列表
FROM 表
WHERE 条件
ORDER BY 排序列表
特点:
asc代表升序,desc代表降序,默认为升序
案例:查询员工信息,要求工资从高到底排序
//An highlighted block
SELECT *
FROM employees
ORDER BY salary DESC;
案例:查询部门编号>=90的员工信息,按入职时间的先后进行排序
//An highlighted block
SELECT *
FROM employees
WHERE department_id>=90
ORDER BY hiredate ASC;
案例:按表达式排序,按年薪高低显示
//An highlighted block
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY 年薪 DESC;
案例:按姓名长度显示员工的姓名和工资【按函数排序】
//An highlighted block
SELECT LENGTH(last_name) AS 字节长度,last_name,salary
FROM employees
ORDER BY 字节长度 DESC;
案例:查询员工信息,要求先按工资排序,再按员工编号排序【安多个字段排序】
SELECT *
FROM employees
ORDER BY salary ASC,employee_id DESC;