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

作者: 小小一颗卤蛋 | 来源:发表于2020-03-30 19:41 被阅读0次

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

    相关文章

      网友评论

        本文标题:三、SQL—数据检索①(select)

        本文链接:https://www.haomeiwen.com/subject/wuhbuhtx.html