1、单表查询
从数据库中查找数据 专业的称谓又称为投影
基本查询语句结构
select 列 from 表
注:所有列不是所有其他东西
查询所有数据
例:SELECT * FROM employees(当然你首先数据库里得有着张employees表才能查询出来)
如果你需要执行比较细的操作 那就再加上条件筛选:查询id为2号的学生信息
SELECT * FROM employees WHERE id=2;(WHERE:筛选的关键字)
筛选的执行步骤
例:SELECT * FROM employees WHERE id=2;
SELECT * (3) 再查询 筛选完后 我最终投影的结果就是筛选后的结果,不是每行都显示出来,显示行的数据是筛选后的数据 所以最后执行 select
FROM employees (1) 把整张表加到内存里面 把整张表找到后加到内存里面
WHERE id =2 (2) 筛选 因为一张表里面的数据需要去做一个筛选,不想让每行都显示,这样就没意义了,所以要进行一个条件筛选
只投影某些列
SELECT id,FIRST_NAME FROM employees; 只投影结果,而不是改变表数据
查询出来显示成中文,比如FIRST_NAME显示成员工姓名
AS 加上别名 (列的别名):SELECT FIRST_NAME AS “员工姓名” FROM employees;
表别名,当有几张表的时候,表的名字很长,会给表加上别名
SELECT employees.job_grades FROM departments
SELECT a.employees FROM job_grades a 本次查询 a就代表employees就可以a.FIRST_NAME
筛选掉重复数据 DISTINCT
SELECT DISTINCT FIRST_NAME FROM employees;
SELECT DISTINCT FIRST_NAME,EMPLOYEE_ID FROM employees; distinct 要重复列(FIRST_NAME,EMPLOYEE_ID)的数据完全一样
选择操作:写筛选条件的方法:并且 and 也可以写成&&当然也可以反过来写
SELECT * FROM employees WHERE id=2 AND FIRST_NAME=‘李四’ AND e EMPLOYEE_ID ='4586’表示:查询出员工表筛选里面id为2的员工并且姓名是李四员工id是4586的员工,找到具体的一个人。
SELECT * FROM employees WHERE id=2 AND FIRST_NAME=‘李四’ && HIRE_DATE ='2013年’表示:查询出员工表筛选id为2的员工并且姓名是李四的员工并且雇佣他的时间是哪一年。
或者 or 也可以写成 ||
SELECT * FROM employees WHERE EMPLOYEE_ID=‘2684’ OR FIRST_NAME='李四’SELECT * FROM employees WHERE EMPLOYEE_ID=‘2684’ || FIRST_NAME='李四’以上着两种方法都是一样的,都表示查询employees表里面的员工id
范围操作BETWEEN……AND……(包含)
语法:select 列 from 表名 where 列名 between 值 and 值;
SELECT * FROM employees WHERE age>=2018 AND age<=2015
SELECT * FROM employees WHERE HIRE_DATEINBETWEEN 2018 AND 2015 – 等同于上面大于等于 及小于等于
查询员工雇佣时间为2017 或者2015 或者2019
SELECT * FROM employees WHERE HIRE_DATE=2018 OR HIRE_DATE=2015 OR HIRE_DATE=2019这样写会比较麻烦而且写的有有点乱的感觉,所以下面就用in来代替这种写法,其作用都事一样的求出来的结果也是一样的。
in 操作 :简化上面的那种情况 where 列 in(值1,值2,值3)
SELECT * FROM employees WHERE HIRE_DATEIN(2018,2015,2019)
这种操作就看着舒服点啦,没上面的繁琐啦。
模糊查询 :% 不限制字符:语法:select * from 表名 where 字段 like ‘x%’;
找所有姓张的员工
SELECT * FROM employees WHERE FIRST_NAME=‘张三’ = 全匹配 不会帮你自动模糊查询,下面这个就帮你模糊查询,就算你只记得一个字也可以查s询出来。
SELECT * FROM employees WHERE FIRST_NAME LIKE ‘张%’ like % 不限制字符(0-N个字符)的模糊查询
SELECT * FROM employees WHERE FIRST_NAME LIKE ‘%张%’ like % 可以查到包含张 如 东张西望……
SELECT * FROM employees WHERE FIRST_NAME LIKE ‘%张 like % 可以查到张,以张结尾, 但是不能是张**可以是:慌慌张张……
占位符 (下划线) 一个下划线代表一个字符
找所有姓张的员工生,并且名字长度为三个字
SELECT * FROM employees WHERE FIRST_NAME LIKE '张_’ like _ 限制字符数的模糊查询 一个下划线代表一个字符
查询年纪为空的员工信息
SELECT * FROM employees WHERE PHONE_NUMBER="" ‘’”代表为空白的值
空值 is null(是空):SELECT * FROM employees WHERE PHONE_NUMBER IS NULL 代表空值 没有输入数据
不是空 is not null(不是空值):SELECT * FROM employees WHERE PHONE_NUMBER IS NOT NULL