美文网首页程序员
数据库基础知识整理-运算符,函数,子查询

数据库基础知识整理-运算符,函数,子查询

作者: 世外大帝 | 来源:发表于2019-01-25 09:38 被阅读1次

    数据库基础知识整理-运算符,函数,子查询

    WHERE 语句

    WHERE 子句用于提取那些满足指定标准的记录,也就是俗称的条件查询

    SELECT 列名 
    FROM 表名
    WHERE 条件;
    
    -- 例句
    select * from users where id=3; -- 查询users表中id=3的数据
    

    运算符

    比较运算符和逻辑运算符在 WHERE 子句中用于筛选要选择的数据。

    • 比较运算符
    运算符 描述
    = 等于
    <>或!= 不等于(mysql都支持)。
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    BETWEEN 在某个范围内
    LIKE 搜索某种模式(模糊搜索)
    IN 指定针对某个列的多个可能值
    • 逻辑运算符
    运算符 描述
    AND 如果两个表达式结果都为 true,则为 true
    OR 如果任一表达式结果为 true,则为 true
    IN 如果操作数等于表达式列表之一,则为 true
    NOT 如果表达式结果为 true,则返回 false;否则如果表达式的结果为 false,则返回 true。
    • 示例
    -- BETWEEN AND
    SELECT 列名
    FROM 表名
    WHERE 条件 BETWEEN value1 AND value2;
    
     -- 例: 查询users表中id在3-5之间的所有数据
    SELECT * FROM users WHERE id BETWEEN 3 AND 5;
    
    -- LIKE OR
    SELECT 列名
    FROM 表名
    WHERE 字段 LIKE 条件;
    
     -- 例: 查询users表中名字中有“王”的所有数据
    SELECT * FROM users WHERE name LIKE '%王%';
    
     -- 例: 查询users表中名字中有“王”或“李”的所有数据
    SELECT * FROM users WHERE name LIKE '%王%' OR name LIKE '%李%';
    
    -- IN NOT
    SELECT 列名
    FROM 表名
    WHERE 字段 IN value;
    
     -- 例: 查询users表中password字段为password2和password4的所有数据
    SELECT * FROM users WHERE password IN ('password2','password4');
    
     -- 例: 查询users表中password字段不为password2和password4的所有数据
    SELECT * FROM users WHERE password NOT IN ('password2','password4');
    

    以上只是粗略的展示,当然还有更多的用法需要在实际项目中去发掘。

    自定义列

    • CONCAT() 函数

    CONCAT() 函数用于连接两个或多个文本值,并返回连接字符串。

    • AS 关键字

    一个连接导致一个新的列。默认列名称将是 CONCAT 函数。

    • 算术运算符对数值操作数执行算术运算,包括+ - * /
    • 示例
    
    -- CONCAT
    SELECT CONCAT(自定义内容) FROM 表名;
    
    -- 例  
    select concat(name, ',', password) from users;
    +-----------------------------+
    | concat(name, ',', password) |
    +-----------------------------+
    | 李四,password2              |
    | 王五,password3              |
    | 赵六,password4              |
    +-----------------------------+
    
    
    -- AS
    SELECT CONCAT(自定义内容) AS 新列名 FROM 表名;
    
    -- 例
    select concat(name, ',', password) as new_column from users;
    +------------------+
    | new_column       |
    +------------------+
    | 李四,password2   |
    | 王五,password3   |
    | 赵六,password4   |
    +------------------+
    
    -- 运算符示例
    
    mysql> select id+500 as new_id, name, password from users;
    +--------+--------+-----------+
    | new_id | name   | password  |
    +--------+--------+-----------+
    |    502 | 李四   | password2 |
    |    503 | 王五   | password3 |
    |    504 | 赵六   | password4 |
    +--------+--------+-----------+
    

    函数

    UPPER()LOWER() 只对字母起作用。

    • UPPER() 函数将字符串转换为大写。

    • LOWER() 函数将字符串转换为小写。

    以下4个函数一般用于计算数值,他们不会改变原有数据

    • SQRT() 返回参数中给定值的平方根。

    • AVG() 返回数值列的平均值

    • SUM() 返回数值列的总数

    • MIN() 返回指定列的最小值。

    • 示例 函数的用法如下

    mysql> select upper(password) as new_pass, profession from users;
    +-----------+------------+
    | new_pass  | profession |
    +-----------+------------+
    | PASSWORD2 | programer  |
    | PASSWORD3 | librarian  |
    | PASSWORD4 | actor      |
    +-----------+------------+
    

    子查询

    当一个查询是另一个查询的条件时,称之为 子查询

    -- table user
    +----+----------+------+
    | id | name     | age  |
    +----+----------+------+
    |  1 | sss      |   20 |
    |  2 | 李四     |   22 |
    |  4 | wangwu   |   19 |
    |  5 | 王五     |   19 |
    |  6 | zhangsan |   26 |
    +----+----------+------+
    
    -- 求 age大于平均年龄的 的数据
    
    mysql> select avg(age) from user;
    +----------+
    | avg(age) |
    +----------+
    |  21.2000 |
    +----------+
    
    mysql> select name, age from user where age > 21.2 order by age desc;
    +----------+------+
    | name     | age  |
    +----------+------+
    | zhangsan |   26 |
    | 李四     |   22 |
    +----------+------+
    
    -- 合并查询 就是把先决条件的查询直接放到二次查询中进行合并,子查询不需要分号,它是该查询的一部分
    select name, age from user 
    where age > (select avg(age) from user) order by age desc;
    +----------+------+
    | name     | age  |
    +----------+------+
    | zhangsan |   26 |
    | 李四     |   22 |
    +----------+------+
    
    

    LIKE和匹配模式

    • LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,在刚开始的时候已经有了大概的示例。

    • 匹配模式

    1. % :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
      SELECT * FROM users WHERE name LIKE '%三%' 找到所有带“三”字的

    2. _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
      SELECT * FROM users WHERE name LIKE '_三' 找到只有两个字,而且第二个字是三的

    • 示例
    -- LIKE 
    SELECT 列名
    FROM 表名
    WHERE 字段 LIKE 条件;
    
     -- 例: 查询users表中名字中有“王”的所有数据
    SELECT * FROM users WHERE name LIKE '%王%';
    
    
    -- 匹配模式
    
    -- 将搜索以 a 开头的所有数据。
    LIKE'a%' 
    
    -- 将搜索以 b 结尾的所有数据
    LIKE'%b' 
    
    -- 将搜索在任何位置包含 c 的所有数据
    LIKE'%c%' 
    
    -- 严格限定字符数量和匹配度
    LIKE'_abc' 将搜索以 `abc` 结尾的所有4个字母的数据
    

    相关文章

      网友评论

        本文标题:数据库基础知识整理-运算符,函数,子查询

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