SQL单表查询语句总结

关于SQL单表查询语句总结:


一    基础查询:

1.    SELECT 字段名.... FROM 表名;
2.    SELECT * FROM 表名;

二    条件查询

(第一个字段名可以为*,代表从全部数据中查找)

1.    SELECT 字段名... FROM 表名
    WHERE 条件表达式;

2.    SELECT 字段名... FROM 表名
    WHERE 条件表达式 AND 条件表达式....;

3.    SELECT 字段名... FROM 表名
    WHERE 条件表达式 OR 条件表达式....;
    (或者是OR和AND一起灵活使用)

三    关键字查询/精确查询

(第一个字段名可以为*,代表从全部数据中查找)
1.    IN或者NOT IN
    SELECT 字段名... FROM 表名
    WHERE 字段名 [NOT] IN (元素....);
    元素是限定条件,查询包含某些元素的数据或者是不包含某些元素的数据;

2.    IS NULL 或者 IS NOT NULL
    SELECT 字段名... FROM 表名
    WHERE 字段名 [NOT] IN NULL;
    查询字段为空或者不为空的数据;

3.    BETWEEN AND    
    SELECT 字段名... FROM 表名
    WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;
    查询某个字段的值在或不在某个范围内的数据;

四    模糊查询

1.    LIKE
    SELECT 字段名... FROM 表名
    WHERE 字段名 [NOT] LIKE ‘匹配字符串’;(这个字符串可以是一个普通的字符串,也可    以是包含百分号(%)和下画线(_)的通配字符串,其中百分号表示任意0~n个字符,下划    线表示任意一个字符。)
例子:
    查询姓名由5个字母构成的学生的信息
    mysql> SELECT * FROM stu
          -> WHERE sname LIKE '_____';
            
    查询姓名由5个字母构成,并且第5个字母为i的学生的信息
    mysql> SELECT * FROM stu
          -> WHERE sname LIKE '____i';

    查询姓名以z开头的学生的信息
    mysql> SELECT * FROM stu
          -> WHERE sname LIKE 'z%';

    查询姓名第二个字母为i的学生的信息
    mysql> SELECT * FROM stu
          -> WHERE sname LIKE '_i%';

    查询姓名中包含a的学生的信息
    mysql> SELECT * FROM stu
          -> WHERE sname LIKE '%a%';

2.    DISTINCT(用于去除重复数据)
     SELECT DISTINCT 字段名 FROM 表名;
例子:    查询所有员工的月薪,并且去重。
    SELECT DISTINCT sal FROM emp;

五    高级查询


1.    排序查询
    SELECT 字段.... FROM 表名
    ORDER BY 字段名.... [ASC|DESC];(ORDER BY关键字后的字段名表示指定排序的字段,    ASC代表按升序排序,DESC代表按降序排序,如果不写,默认按升序排序)
    (如果按多个字段排序,则优先按ORDER BY后排的靠前的字段排序)
例子:    查询所有学生记录,按年龄升序排序
    mysql> SELECT * FROM stu
          -> ORDER BY age ASC;
    或mysql> SELECT * FROM stu
          -> ORDER BY age ASC;
    
2.     聚合函数
    MySQL提供了一系列函数实现数据统计,也称为聚合函数。

1)    COUNT()函数
    SELECT COUNT (*|1|列名) FROM 表名;
    (该函数有三个可选参数,COUNT(*)是返回行数,包括NULL;
     COUNT(列名)是返回特定列的值具有的行数,不包括NULL;
     COUNT(1)与COUNT(*)的返回结果一样,不过数据表没有主键.)
例子:
    查询员工表中的记录数
    mysql> SELECT COUNT (*) FROM emp;

    查询员工中有奖金的人数
    mysql> SELECT COUNT (comn)  AS total FROM emp;

    查询员工表中月薪大于2500元的人数
    mysql> SELECT COUNT (*) AS total FROM emp
          -> WHERE sal > 2500;
    
    IFNULL()函数,可以判断字段是否为NULL,若为NULL,则可以将NULL替换为数值0;
例子:
    查询月薪与奖金之和大于2500的人数
    mysql> SELECT COUNT (*) AS total FROM emp
          -> WHERE sal+IFNULL(comn,0)> 2500;
    
2)    SUM()函数
    用于计算指定列的数值和,若类型不是数据类型,则计算结果是0
    SELECT SUM(字段名) FROM 表名;
例子:
    查询员工表中所有员工的月薪和
    mysql> SELECT SUM(sal) FROM emp;
    查询员工表中所有员工的月薪加奖金的和,查询出的列名指定为total
    mysql> SELECT SUM(sal+IFNULL(comn,0)) AS total FROM emp;


3)    AVG()函数
    用于计算指定列的平均值,若类型不是数据类型,则计算结果是0
    SELECT AVG(字段名) FROM 表名;
例子:
    查询员工表中所有员工的平均月薪
    mysql> SELECT AVG(sal) FROM emp;

4)    MAX()函数
    用于计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
    SELECT MAX(字段名) FROM 表名;

5)    MIN()函数
    用于计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
    SELECT MIN(字段名) FROM 表名;

六    分组查询


1.    GROUP BY
    查询数据时需要按一定的类别进行统计
    例子:
    查询员工表中每个部门编号以及每个部门工资大于1500元的人数
    mysql> SELECT deptno,COUNT (*)  FROM emp
          -> WHERE sal>1500
          -> GROUP BY deptno;

2.    HAVING子句
    用于在分组后对数据进行过滤
    SELECT 字段名.... FROM 表名
    GROUP BY 字段名..... [HAVING 条件表达式];
例子:
    查询员工表中工资总和大于9000元的部门编号以及工资和
    mysql> SELECT deptno,SUM(sal)  FROM emp
          -> GROUP BY deptno;    
          -> HAVING SUM(sal) > 9000;
    过程,先分组查询每个部门编号的工资和,再过滤出工资和大于9000元的部门

3.    LIMIT分页
    用于限制查询结果的数量
    SELECT 字段名.... FROM 表名
    LIMIT [M,]N;
    (第一个参数m可选代表开始索引,默认值为0,代表第一条记录;第二个参数n必选,代表    从第m+1条记录开始取n条记录)
例子:
    查询学生表中从第三条开始的记录,总共查询五条记录
    mysql> SELECT * FROM stu LIMIT 2,5;

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值