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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lftaoyuan/article/details/86636351

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

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() 函数将字符串转换为小写。

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

  • 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个字母的数据

没有更多推荐了,返回首页