准备数据:
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子句最好能使用在数据表中,可增加数据排序的稳定性,不用的话,数据库也会自动进行排序,但顺序是随机的,且在不同的数据库顺序不同,稳定性差。