三、SQL—数据检索①(select)

准备数据:
1,创建员工信息表

CREATE TABLE T_Employee (
FNumber VARCHAR(20),
FName VARCHAR(20),
FAge INT,
FSalary DECIMAL(10,2),
PRIMARY KEY (FNumber))

2,插入数据

INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("DEV001","Tom",25,8300);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("DEV002","Jerry",28,2300.80);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("SALES001","John",23,5000);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("SALES002","Kerry",28,6200);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("SALES003","Stone",22,1200);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("HR001","Jane",23,2200.88);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("HR002","Tina",25,5200.36);
INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("IT001","Smith",28,3900);

查询数据:select
查询整个数据表

select * from T_Employee

*代表所有列,若不需所有列,则用需要查询的列名替换即可
如:SELECT FName,FAge FROM T_Employee 只取了姓名和年龄两列

列别名:列名很复杂或不易读时,可用列别名(与人的外号一样)

定义格式:列名AS 别名
如:

SELECT FNumber AS Number1,FName AS Name,FAge AS Age,FSalary AS Salary FROM T_Employee;

AS也可以省略,如

SELECT FNumber Number1,FName Name,FAge Age,FSalary Salary FROM T_Employee

如果可以输入中文也可以

SELECT FNumber 工号,FName 姓名,FAge 年龄,FSalary 工资FROM T_Employee

以上方法与select * from T_Employee的结果一样,但表列名被改成了别名(只有列名不一样)

按条件过滤:where

查询所有工资少于5000 元的员工的姓名

SELECT FName FROM T_Employee WHERE FSalary<5000

检索出所有工资少于5000元或者年龄大于25岁的员工的所有信息

SELECT * FROM T_Employee WHERE FSalary<5000 OR FAge>25

数据汇总:试用聚合函数max(),min(), sum(),avg(),count()

1,查询年龄大于25岁的员工的最高工资

SELECT MAX(FSalary) FROM T_Employee WHERE FAge>25

为了方便引用查询的结果,也可以为聚合函数的计算结果指定一个别名,如

SELECT MAX(FSalary) as MAX_SALARY FROM T_Employee WHERE FAge>25

执行结果:

MAX_SALARY
6200.00

2,工资大于3800元的员工的平均年龄

SELECT AVG(FAge) FROM T_Employee WHERE FSalary>3800

3,公司每个月应支出工资总额

SELECT SUM(FSalary) FROM T_Employee

可多次使用聚合函数
公司的最低工资和最高工资,如:

SELECT MIN(FSalary),MAX(FSalary) FROM T_Employee

count()计数

SELECT COUNT(*),COUNT(FNumber) FROM T_Employee

执行结果:

8 8

注意区别:
count(*)结果集的总条数,一列的总行数
count(Fnumber)结果集中不为空的总条数,一列中除了Null的行数,若存在空值,count的值会变小

排序

排序:order by 放在select语句末尾,可指定按照一个列或者多个列进行排序,还可指定排序方式为升序/降序。如:
按照年龄排序(升序)所有员工信息的列表:

SELECT * FROM T_Employee ORDER BY FAge ASC

注意:ASC升序是默认排序方式,可省略

按照年龄从大到小排序,若年龄相同则按照工资从大到小排序

SELECT * FROM T_Employee ORDER BY FAge DESC,FSalary DESC

对于多个排序规则,数据库系统会按照优先级进行处理。
数据库系统首先按照第一个排序规则进行排序;如果按照第一个排序规则无法区分两条记录的顺序,则按照第二个排序规则进行排序;如果按照第二个排序规则无法区分两条记录的顺序,则按照第三个排序规则进行排序;……以此类推。

order by 可以和where 搭配用: order by 要放在where之后

SELECT * FROM T_Employee WHERE FAge>23 ORDER BY FAge DESC,FSalary DESC

order by子句最好能使用在数据表中,可增加数据排序的稳定性,不用的话,数据库也会自动进行排序,但顺序是随机的,且在不同的数据库顺序不同,稳定性差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

媛媛要加油呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值