目录
数据库的常见概念
数据库的特点
常见命令
基础查询
查询表中的单个字段
查询表中的多个字段
查询表中的所有字段
查询常量值
查询表达式
查询函数
起别名
去重(distinct)
+号
案例
条件查询
按条件表达式筛选
按逻辑表达式筛选
模糊查询
#附加 安全等与<=>
DB 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。
DBMS 数据库管理系统(Database Management System)。数据库是通过DBMS创建和操作的容器。
SQL 结构化查询语言(Structure Query Language):专门用来与数据库通信的语言。
1.将数据放到表中,表再放到库中。
2.一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
3.表具有一些特性,这些特性定义了数据在表中如何储存。
4.表由列组成,我们也称为字段。所有表都是由一个或多个列组成的。
5.表中的数据是按行储存的。
先了解一个myemployees的数据库
语法:
select 查询列表 from 表名;
特点:1.查询列表可以是表中的字段,常量值,表达式,函数。
2.查询结果是一个虚拟的表格。
SELECT last_name FROM employees;
SELECT last_name,salary,email FROM employees;
#查询表中的所有字段
SELECT * FROM employees;
#查询常量值
SELECT 100;
SELECT 'join';
#查询表达式
SELECT 100+20;
#查询函数
SELECT VERSION();
优点:
1.便于理解
2.有重名的情况可以区分
#起别名
SELECT last_name AS 姓,first_name AS 名 FROM employees;(AS可省略)
#去重
#查询员工表中涉及到的所有部门编号
SELECT DISTINCT department_id FROM employees;
作用:
运算符
1.100+90 两个操作数都为数值型,做加法运算。
2.‘123’+90 其中一方为字符型,将字符型数值转换成字符型
转换成功,继续做加法运算
转换失败,将字符型数值转化成0
3.null+90 只要其中一方为null结果肯定为null
#+号运算符
SELECT 100+20;#120
SELECT '100'+20;#120
SELECT 'jone'+20;#20
SELECT 'ss'+'rr';#0
SELECT NULL+22;#null
#案例
#查询员工名和姓并连接成字串(concat),显示为姓名
SELECT CONCAT(last_name,first_name)AS 姓名 FROM employees;
#显示表departments的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM `departments`;
#显示出employees中的全部job—id(不能重复)
SELECT DISTINCT job_id FROM employees;
#显示出表employees的全部列,格列之间用逗号隔开,列头显示out——put
SELECT CONCAT(first_name,',',last_name,',',job_id,',',IFNULL(commission_pct,0))AS out_put
FROM employees;
语法:
select
查询列表
from
表名
where
筛选条件
分类:
1.按条件表达式筛选
条件运算符:> < = != <> >= <=
2.按逻辑表达式筛选
逻辑运算符:
&&,||,!
and,or,not
3.模糊查询
like,between and,in,is null
#按条件表达式筛选
#案例:查询工资>12000的员工信息(>)
SELECT
*
FROM
employees
WHERE
salary>12000;
#案例:查询部门编号不等于90号的员工名和部门编号(<>)
SELECT `last_name`,`department_id`
FROM employees
WHERE department_id<>90;
#按逻辑表达式筛选
#案例:查询工资在10000到20000之间的员工名,工资及奖金(between and)
SELECT last_name,salary,commission_pct
FROM employees
WHERE salary BETWEEN 10000 AND 20000;
#查询部门编号不是在90到100之间,或者工资高于15000的员工信息(not or)
SELECT *
FROM employees
WHERE NOT(department_id BETWEEN 90 AND 100)OR salary>15000;
#1.like
/*
特点:
1.一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符
- 任意单个字符
*/
#案例:查询员工名中包含’a‘的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
#案例:查询员工名中第三个字符为c第五个字符为h的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '__c_h%';
#案例 查询员工中第二个字符为_的员工名(分割 escape)
SELECT last_name
FROM employees
WHERE last_name LIKE '_&_%'ESCAPE '&';
#2.between and
/*
1.使用between and可以提高语句的简洁度
2.包含临界值
3.两个临界值不能调换顺序
*/
#案例:查询员工编号在100到200之间的员工信息
SELECT *
FROM employees
WHERE department_id BETWEEN 100 AND 200;
#3.in
/*
含义:判断莫字段的值是否属于in列表中的一项
特点:
1.提高语言简洁度
2.in列表中的值必须一致或兼容*/
#案例:查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名和工种编号
SELECT last_name,job_id
FROM employees
WHERE job_id IN('IT_PROG','AD_VP','AD_PRES');
#4.is null
/*
1.=或>=不可以判断null值
2.is null或is not 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;
IS NULL:仅仅可以判断NULL值,可读性较高
<=>:既可以判断NULL值,又可以判断普通数值,可读性较低