MySQL数据库基础操作练习(一)基本操作

MySQL数据库基础操作练习(一)基本操作
1、基本查询操作

SELECT 10;//查询常量10
SELECT 'alex'//查询常量alex

SELECT LENGTH('alex')//查询alex的长度
SELECT VERSION();//查询当前版本

SELECT last_name FROM employees;//查询employees表中的last_name字段
SELECT * FROM employees;//查询employees表中的所有字段

SELECT email '邮箱' from employees;//别名与原名称之间要留有空格
SELECT email AS '邮箱',job_id AS '名' FROM employees;//当给两个或两个以上字段去别名时,需要用“,”隔开 。AS可以省略

(1)条件查询:根据指定条件过滤数据
基本语法为 select 字段 from 表名 where 条件;

分类:
①条件表达式查询:
条件运算符:> 、< 、>=、 <=、 =、 !=、 <>、 ,<=>安全等于,用于判断是否为null
②逻辑表达式查询
逻辑运算符:and,&& 与;or,|| 或;not,! 非。
优先级not > and > or

③模糊查询
一般是根据给定的信息(模糊信息,例如 名字中含有字母a)进行查找
通常与上两种方法一起使用
当查询的数据在某一范围时,可以使用and 也可以使用between and
例如:查询月薪在5000到12000的员工工资和姓名

SELECT last_name,salary FROM employees WHERE salary>=5000 and salary<=12000;//这是使用and
SELECT last_name,salary FROM employees WHERE salary BETWEEN 5000 and 12000;//这里使用的则是 between and

(2)排序查询
语法:select 字段|表达式|常量 from 表【where 条件】order by 排序的字段;
升序 ASC 降序 DESC 默认为升序
可以按表达式、函数、别名、多个字段进行排序
一般来讲order by放到查询的语句的最后,在不使用分页的情况下

SELECT * FROM employees ORDER BY salary ASC;//这是升序 将salary表中的数据进行由小到大排列,并展示
SELECT * FROM employees ORDER BY salary ;//此处为默认升序 将salary表中的数据进行由小到大排列,并展示
SELECT * FROM employees ORDER BY salary DESC;//这是降序 将salary表中的数据进行由大到小排列,并展示

多字段排序查询时,后一字段产生的结果不会影响前一字段的结果,例如

SELECT * FROM employeesORDER BY salary DESC,employee_id ASC;//在这里 employee_id排序的结果不会对salary排序的结果产生影响

当然,也可以按照别名排序,但首先需要给他取一个别名

//在这里,这两种方法产生的效果是相同的
SELECT *,salary 薪资 FROM employees ORDER BY salary DESC;
SELECT *,salary 薪资 FROM employees ORDER BY 薪资 DESC;//这里使用别名进行排序

(3)、分组查询
分组查询使用分组函数,分组函数与Java中的方法类似
分类:max():最大值
min():最小值
sum():和
avg():平均值
count():计算非空的个数
这些是通用的,也就是在sqlserver、oracle、mysql 中,他们的使用方法都是一样的

①sum与avg
只支持数值型,均忽略null值

SELECT AVG(salary) FROM employees;
SELECT SUM(salary) FROM employees;

②max与min
支持任何类型,均忽略null值

SELECT MAX(last_name),MIN(last_name) FROM employees;  //判断类型
SELECT MAX(commission_pct),MIN(commission_pct) FROM employees;  //判断是否忽略null

③count
计算非空值 忽略null
查询结果集中的行数
count(1)的性能没有count(*)
因为count(*),sql服务器对其进行了优化,所以效率高

SELECT COUNT(*) FROM employees;     查看有多少条数据 
SELECT COUNT(1) FROM employees;count(*)的效果是一样的,但是效率不一样

(4)分组查询语法
select 分组函数 别名,分组后的字段
from 表
【where 分组前筛选】 【】可省略
group by 分组的字段
【having 分组后筛选】
【order by 排序的字段】
从上到下依次顺序,不能颠倒顺序

特点:
1)按多个字段分组,字段间用逗号隔开,没有顺序要求
2)可以和分组函数一起查询的字段,只能是分组后的字段,不能是任意字段
3)分组筛选
分组前筛选:筛选的条件针对的是原始表 GROUP BY 前面使用where
分组后筛选:筛选的条件针对的是分组后的结果集 GROUP BY 后面使having
顺序:where——group by——having
4)having和group by支持别名

案例:
1.WHERE子句不能使用组函数进行过滤,因为分组函数只能放在having子句中

#2.查询员工最高工资和最低工资的差距使用别名DIFFERENCE
SELECT MAX(salary)-MIN(salary) DIFFERENCE FROM employees;
#3.选择各个job_id的员工人数
SELECT COUNT(*),job_id FROM employees GROUP BY job_id;
#4.查询所有部门的编号,员工数量和工资平均值,并按平均工资降序
SELECT department_id,COUNT(*),AVG(salary) 平均工资 FROM employees GROUP BY department_id ORDER BY 平均工资 DESC;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值