数据库基础知识整理-运算符,函数,子查询
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 子句中搜索列中的指定模式,在刚开始的时候已经有了大概的示例。 -
匹配模式
-
% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
SELECT * FROM users WHERE name LIKE '%三%'
找到所有带“三”字的 -
_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
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个字母的数据
网友评论