mysql笔记四(sql查询一)
查询sql相关:介绍关键词和使用细节
一 关键词
select :语句用于从数据库中选取数据。
from:数据来源,后面根表名。
SELECT * FROM table_name;
SELECT column1, column2, ...FROM table_name;
SELECT column1 as column1_1, column2, ...FROM table_name;
distinct: 关键词用于返回唯一不同的值。
SELECT DISTINCT column1, column2, ...
FROM table_name;
where:用于过滤记录;
SELECT column1, column2, ...
FROM table_name
WHERE column1 = '张三';
and : 运算符用于基于一个以上的条件对记录进行过滤,多个条件需要同时满足。
SELECT * FROM Websites
WHERE country='CN'
AND alexa > 50;
or: 运算符用于基于一个以上的条件对记录进行过滤,多个条件满足任一条就会返回。
SELECT * FROM Websites
WHERE country='USA'
OR country='CN';
order by: 关键字用于对结果集进行排序。
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
in: 用于过滤在这个in内的数据,不在是not in;
SELECT column1, column2, ...
FROM table_name
WHERE column IN (value1, value2, ...);
exists: 检查子查询中是否存在任何结果,但不返回结果
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
like : 是 SQL 中用于在 WHERE 子句中进行模糊查询的关键字,它允许我们根据模式匹配来选择数据,通常与 % 和 _ 通配符一起使用;
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;
inner join:关键字在表中存在至少一个匹配时返回行
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
left join:
关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
right join:
关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
full outer join :
关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
group by:根据一个或多个列对结果集进行分组 ,通常和聚合函数一起使用
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
having:
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;
between and :选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期
SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;
union :操作符用于合并两个或多个 SELECT 语句的结果集。它可以从多个表中选择数据,并将结果集组合成一个结果集。使用 UNION 时,每个 SELECT 语句必须具有相同数量的列,且对应列的数据类型必须相似。union 会对结果去重,union all 不会去重。
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
limit: 限定select返回的数据条数
LIMIT [offset,] row_count;
LIMIT row_count OFFSET offset;
常用函数:
COUNT() 函数返回匹配指定条件的行数
SUM() 函数返回数值列的总数
UCASE() 函数把字段的值转换为大写
LENGTH() 函数返回文本字段中值的长度
NOW() 函数返回当前系统的日期和时间
ROUND() 函数用于把数值字段舍入为指定的小数位数
FORMAT() 函数用于对字段的显示进行格式化
CAST(‘abc’ AS SIGNED)和CONVERT,字符串转int
SUBSTRING(a,1,10) 字符串截取
STRPOS(a,b) 字符串b在字符串a中的下标位置;
针对不同的数据结构还有很多函数;
条件表达式 :
if语句
IF(condition, true_statement, false_statement);
condition: 条件表达式,可以是任何返回布尔值的表达式。
true_statement: 如果条件为真,则执行的语句。
false_statement: 如果条件为假,则执行的语句。
when语句
CASE WHEN THEN ELSE END
expression: 表达式,用于进行比较的值。
WHEN value THEN result: 当expression等于value时,返回result。
ELSE result: 如果没有匹配的条件,则返回result。
ifnull
IFNULL(expression, value);
expression: 表达式,用于判断是否为NULL。
value: 如果expression为NULL,则返回的值。
算术运算符:
算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算。
比较运算符:
< | 小于 |
---|---|
<= | 小于等于 |
= | 等于 |
> | 大于 |
>= | 大于等于 |
<> | 不等于 |
!= | 不等于 |
位运算:
与运算(&)
或预算(|)
异或(^)
取反(~)
右移(>>)
左移(<<)
注:使用时注意运算符优先级。
一般在代码中能实现的业务逻辑,通过sql语法也能实现,只不过有些不常用的需要搜下用法,并且复杂的逻辑也不建议sql处理。初步认识上面的关键词后需要sql编写了,下篇记录重点关键词之间的区别和使用中的细节问题。
参考资料:https://www.runoob.com/sql/sql-tutorial.html