• MySQL基础查询


    查询语句

    select语句的语法格式如下:

    select 字段列表
    from 数据源
    [ where条件表达式 ]
    [ group by 分组字段
    [ having条件表达式 ]
    [ order by 排序字段 [ asc | desc ] ]
    

    查询表达式

    • 每一个表达式表示想要的一列,必须至少有一列,多个列之间以逗号分隔
    • *表示所有列,tbl_name.*可以表示命名表的所有列
    • 查询表达式可以使用[as] alias_name为其赋予别名

    单表简单查询

    查询表中全部数据

    SELECT * FROM stu;
    

    查询表中特定字段

    SELECT id,newname FROM stu;
    

    为字段取别名

    SELECT username AS ‘姓名’, sex ‘性别’ FROM usertbl;
    

    为表取别名

    SELECT * FROM stu;
    

    为字段指定表名

    SELECT usertbl.username,usertbl.sex FROM usertbl;
    

    为表名指定库名

    SELECT username,sex,age FROM cms.usertbl;
    

    使用常量进行查询

    SELECT 1,2,3,username FROM usertbl;
    

    Order By 排序

    • ORDER BY 语句用于根据指定的列对结果集进行排序。
    • ORDER BY 语句默认按照升序对记录进行排序。
    • 影响排序的关键字:ASC,DESC。

    按出生日期排序显示用户信息

    SELECT * FROM users ORDER BY birth;
    

    按工资排序降序显示用户信息,如果工资相同则按姓名字母顺序显示

    SELECT * FROM users WHERE salary IS NOT NULL ORDER BY salary DESC, cname ASC;
    

    Limit关键字

    在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据

    SELECT * FROM table LIMIT [offset,] rows | rows
    

    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。

    LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。

    如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
    初始记录行的偏移量是 0(而不是 1)

    检查记录行,第0行开始,共返回10行记录

    SELECT * FROM table LIMIT 0,10;
    

    检查记录行,第100行开始到最后1行(一个很大的值)

    SELECT * FROM table LIMIT 99,18446744073709551615
    

    返回前5行记录

    SELECT * FROM table LIMIT 5
    

    distinct关键字

    使用distinct过滤结果集中的重复记录

    Select distinct 字段名 from 表名;
    

    例如:查询出stu表中所有的姓名,去掉重复的姓名

    SELECT distinct newname FROM stu;
    

    带条件的查询

    带条件查询的基本语法

    SELECT *|字段名 FROM 表
    WHERE 条件表达式;
    
    查询条件 符号
    比较 =、<、<=、>、>=、!=、<>、<=>
    制定范围 BETWEEN AND 、 NOT BETWEEN AND
    匹配字符 LIKE 、 NOT LIKE、IN、NOT IN
    是否为空 IS NULL 、 IS NOT NULL
    多个查询条件 AND 、 OR

    条件比较

    查询姓名是zhangsan的员工信息

    SELECT * FROM users WHERE cname='zhangsan';
    

    查询id小于5的员工信息

    SELECT * FROM users WHERE id<5;
    

    查询工资不为5000的员工信息

    SELECT * FROM users WHERE salary<>5000;
    

    指定范围查询-between-and

    查询工资在5000~8000之间的员工信息

    SELECT * FROM users
    WHERE salary BETWEEN 5000 AND 8000;
    

    查询工资不在5000~8000之间的员工信息

    SELECT * FROM users
    WHERE salary NOT BETWEEN 5000 AND 8000;
    

    注意:
    1.BETWEEN…AND…语句要求值小的在前面,值大的在后面
    2.BETWEEN…AND…语句查询范围包含起始终止值
    3.NOT BETWEEN…AND…语句查询范围不包含起始终止值

    指定范围查询-in

    查询工资为5000, 6500 ,8000的员工信息

    SELECT * FROM users WHERE salary IN (5000,6500,8000);
    

    查询姓名为:qianli,Lily的员工信息

    SELECT * FROM users WHERE cname IN (QianLI,Lily);
    

    查询工资不为5000,8000的员工信息

    SELECT * FROM users WHERE salary NOT IN (5000,8000);
    

    匹配字符查询-like

    通配符
    ’ 号 表示一个字符 A Like 'C
    ‘%’号 表示0个或多个字符 B Like 'CO_%’

    扩展的字符
    “.”匹配任何单个的字符。一个字符类
    “[]”匹配在方括号内的任意单个字符
    “ * ”匹配零个或多个在它前面的东西
    “^” 表示以什么开头的字符
    “$” 表示以什么结尾的字符

    使用扩展字符时,必须使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE)。

    1、匹配单个字符,查询出stu表中所有的id

    select * from stu where id rlike ‘.’;
    

    2、查询出stu表中,以n开头的姓名

    Select * from stu where newname rlike ‘^n’;
    

    3、查询出stu表中,查询出以a-z开头的姓名

    Select * from stu where newname rlike ‘^[a-z]’;
    

    4、查询出stu表中,以n结尾的姓名

    Select * from stu where newname rlike ‘n$’;
    

    查询姓zhang的员工信息

    SELECT * FROM users WHERE cname LIKE 'zhang%';
    

    使用%通配任意多个字符,使用 _ 通配1个字符

    SELECT * FROM users WHERE cname LIKE 'zhangsa_'
    

    使用NOT LIKE表示不满足条件的结果

    SELECT * FROM users WHERE cname NOT LIKE 'zhang%'
    

    是否为空----IS NULL

    查询工资为空的员工信息

    SELECT * FROM users WHERE salary IS NULL;
    

    查询工资不为空的员工信息

    SELECT * FROM users WHERE salary IS NOT NULL;
    

    备注:查询工资为空,可以使用<=>表达式

    SELECT * FROM users WHERE salary <=> NULL;
    

    多个查询条件-逻辑表达式

    查询姓zhang的员工信息且性别为男的员工信息

    SELECT * FROM users WHERE cname LIKE 'zhang%'
    AND sex ='男'
    

    查询1990年以前出生的或者工资大于8000的员工信息

    SELECT * FROM users WHERE birth<'1990-1-1' OR
    salary > 8000
    

    查询编号大于等于3年龄不为NULL的用户

    SELECT * FROM users WHERE id >=3 AND age is NOT NULL
    

    查询编号在5~10之间且用户名为单名(2位)的用户

    SELECT * FROM users WHERE id BETWEEN 5 AND 10 AND
    cname LIKE ‘__‘; (两个下划线)
  • 相关阅读:
    foxmail邮箱在代理环境下不能使用解决方法。
    Win7下IE8无法打开https类型的网站解决方法笔记
    重新注册IE组件
    Web开发者的六个代码调试平台
    仿Material UI框架的动画特效
    JS几种数组遍历方式以及性能分析对比
    js 函数提升和变量提升
    彻底掌握this,call,apply
    深入理解requestAnimationFrame
    基于iscroll.js实现下拉刷新和上拉加载特效
  • 原文地址:https://www.cnblogs.com/TD1900/p/12121247.html
Copyright © 2020-2023  润新知