【MySQL】基础查询
SELECT语句
查询单个字段
select 字段名 from 表名;
SELECT last_name FROM employees;
查询多个字段
select 字段名,字段名 from 表名;
SELECT last_name,salary,email FROM employees;
查询所有字段
--方式一
select * from 表名
SELECT * FROM employees;
--方式二
SELECT employee_id,first_name,last_name,email,phone_number,
job_id,salary,commission_pct,manager_id,department_id,hiredate,
FROM employees;
查询常量
select 常量值;
SELECT 100;
SELECT 'john'
注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要
查询函数
select 函数名(实参列表);
SELECT VERSION();
查询表达式
select 100/1234;
SELECT 100*98;
起别名
as 或者 空格
--1.便于理解
--2.如果要查询的字段有重命的情况,使用别名可以区分开来
--方式一 使用as
SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
--方式二 使用空格
SELECT last_name 姓,first_name 名 FROM employees;
--案例:查询 salary,结果显示为 out put
SELECT salary AS "out put" FROM employees
去重
select distinct 字段名 from 表名;
SELECT DISTINCT department_id FROM employees;
+ 号
功能:仅仅是运算符,不能作为字符串连接
select 数值+数值; --直接运算
select 字符+数值;--先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
select null+值;--结果都为null
select 100+90;--两个操作数都为数值型,则做加法运算
select '123'+90;--其中一方为字符型,试图将字符型数值转换成数值型
select 'john'+90;
select null+10;--只要其中一方为null,则结果肯定为null
concat函数
功能:拼接字符
select concat(字符1,字符2,字符3,...);
ifnull函数
功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值
select ifnull(commission_pct,0) from employees;
isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0
条件查询
语法
select 查询列表 from 表名 where 筛选条件;
筛选条件
按条件表达式筛选
条件运算符:> < = !=(不等于) <>(不等于,建议用这种) >= <= 安全等于 <=>
--案例1:查询工资>12000的员工信息
SELECT *FROM employees WHERE salary>12000;
--案例2:查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id FROM employees WHERE department_id<>90;
安全等于
--查询没有奖金的员工名和奖金率(安全等于 <=>)
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=>NULL;
--查询工资为12000的员工信息
SELECT last_name,salary FROM employees WHERE salary <=> 12000;
is null 对比<=>
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=> :既可以判断NULL值,又可以判断普通的数值,可读性较低
按逻辑表达式筛选
逻辑运算符:&& || ! and or not
--案例1:查询工资z在10000到20000之间的的员工名、工资以及奖金
SELECT last_name,salary,commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;
#案例2:查询部门编号不是在90到100之间,或者工资高于15000的员工信息
SELECT * FROM employees WHERE department_id<90 or department_id>100 or salary>15000;
SELECT * FROM employees WHERE NOT(department_id>=90 AND department_id<=100) OR salary>15000;
模糊查询
like
- 一般和通配符搭配使用
- 通配符:
- % 任意多个字符,包含0个字符
- _ 任意单个字符
--案例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
--案例2:查询员工名中第三个字符为c,第5个字符为h的员工名和工资
SELECT last_name,salary FROM employees
WHERE last_name LIKE '___c_h%';
--案例3:查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_%';
--或者这样写
SELECT last_name FROM employees last_name LIKE '$_%' ESCAPE '$';--指定一个字符为转义字符
between and
1.使用between and可以提高语句的简洁度
2.包含临界值
3.两个临界值不要调换顺序
--案例1.:查询员工编号在100到200之间的员工信息
SELECT * FROM employees WHERE employee_id >=100 AND employee_id <=120;
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 200;
in
含义:判断某字段的值是否属于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或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 IS NOT NULL;
例:查询员工号为176的员工的姓名和部门号和年薪
SELECT
last_name,
department_id,
salary*12*(1+ IFNULL(commission_pct,0)) AS 年薪
FROM employee;
排序查询
语法
select 查询列表 from 表
【where 筛选条件】
order by 排序列表 【asc|desc】
1.asc代表升序,desc代表的是降序,如果不写,默认是升序
2.order by子句中可以支持单个字段、多个字段、表达式、函数、别名
3**.order by子句一般是放在查询语句的最后面,limit子句除外**
--查询员工信息,工资从高到底排序
SELECT * FROM employees ORDER BY DESC;
SELECT * FROM employees ORDER BY ASC;
按筛选条件排序
--查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】
SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate ASC;
按表达式排序
--案例3:按年薪的高低显示员工的信息和年薪【按表达式排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
按别名排序
--案例4:按年薪的高低显示员工的信息和年薪【按别名排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC;
按函数排序
--案例5:按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT LENGTH(last_name) 字节长度,last_name,salary
FROM employees
ORDER BY LENGTH(last_name) DESC;
按多个字段排序
--案例6:查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】
SELECT * FROM employees;
ORDER BY salary ASC,employee_id DESC;
本文地址:https://blog.csdn.net/potato20522/article/details/109004819
上一篇: sql必知必会知识点总结(长
下一篇: oracle-sql游标入门基础
推荐阅读
-
PHP错误Warning:mysql_query()解决方法
-
node.js操作mysql简单实例
-
MySQL设置global变量和session变量
-
MySQL中常见的锁
-
mysql数据库操作语句整合
-
MySQL从删库到跑路_高级(一)——数据完整性
-
C#中巧用Lambda进行数据的筛选查询等处理
-
使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '''' for column ''createtime''
-
MySQL(一)数据库的简单介绍
-
MySQL 5.7.16 修改密码提示 ERROR 1054 (42S22): Unknown column ''password'' in ''field l