数据库
-
列存储表中的组织信息
-
行存储表中的明细记录
SQL select
SELCT * FROM data.company
# SQL 数据库查询语句
# data 的数据库中选择 company 表格中的所有列和行
limit 100
# 限制查找数据100条
order by company
# ORDER BY 关键字用于指定按照哪个列进行排序,如果没有指定排序方式,则默认按照升序进行排序。
order by company desc
# desc关键字降序排列
where companyId = 121
SELECT * FROM table_name WHERE column_name = value;
-
“table_name” 是要查询的表名,
-
“column_name” 是要进行比较的列名,
-
“value” 是要与列值进行比较的值。在这个示例中,只有满足条件的行才会被返回。
WHERE
-
WHERE
是 SQL 查询语句中的一个关键字,用于筛选符合指定条件的行。 -
“WHERE” 是用来指定条件的关键字。它通常用于 SELECT、UPDATE 或 DELETE 语句中,用于筛选满足特定条件的数据。
-
“WHERE” 子句通常紧跟在查询语句的 FROM 子句之后,可以使用各种比较运算符和逻辑运算符构建条件表达式,以筛选数据。常见的比较运算符包括等于(=)、大于(>)、小于(<)、不等于(<>)、大于等于(>=)和小于等于(<=),而逻辑运算符包括 AND、OR 和 NOT。
-
IN/NOT IN
SELECT * FROM table_name WHERE column_id IN (12, 122);
-
“table_name” 是要查询的表名,“column_id” 是要进行匹配的列名,(12, 122) 是要进行匹配的值的集合。这个查询将返回列 “column_id” 的值等于 12 或 122 的行。
-
使用 “IN” 关键字可以方便地在一个查询条件中进行多个值的比较,而无需编写多个条件表达式。这在需要匹配多个值的情况下非常有用。
SELECT * FROM table_name WHERE column_id NOT IN (12, 122);
-
NOT IN用于在查询中筛选出不在指定列表中的数据。
SELECT * FROM customers WHERE city = 'New York' AND age > 30;
-
多条件查找,关键字and
-
WHERE
是SQL中用于过滤记录的关键词。 -
city = 'New York'
表示只选择那些城市字段(city
)值为'New York'的记录。 -
AND
是逻辑运算符,表示两个条件都必须满足。
BETWEEN
BETWEEN 是 SQL 中用于指定范围的操作符。它常用于 WHERE 子句中,用来筛选出某个范围内的数值或者日期数据。
SELECT * FROM `销售表` WHERE 销售数量 BETWEEN 150 AND 250;
-
WHERE 销售数量 BETWEEN 150 AND 250
表示筛选出销售数量在150到250之间的数据行。这个条件等同于使用>= 150 AND <= 250
来表示销售数量的范围。
OR
OR
是一个逻辑运算符,用于在查询中组合多个条件。当满足任一条件时,OR
运算符会返回真。
SELECT * FROM table_name WHERE column1 = 'value1' OR column2 = 'value2';
LIKE
是一个用于模糊匹配的运算符,通常与通配符一起使用。它允许你在查询中使用模式匹配来搜索匹配特定模式的字符串。LIKE运算符用于在WHERE子句中进行模式匹配,以便根据给定的模式筛选出符合条件的记录。它使用两个通配符来表示模式:
%(百分号):表示零个、一个或多个字符。
_(下划线):表示一个单一字符。
group by
SELECT city, COUNT(*) as recordCount, COUNT(DISTINCT resId) as distinctResCount FROM work_style GROUP BY city;
-
count(*)
会计算表中的所有行,而count(1)
实际上也会计算所有行 -
这个查询将返回每个城市的记录数量(通过
COUNT(*)
计算)和resId
的唯一值数量(通过COUNT(DISTINCT resId)
计算)。注意我添加了DISTINCT
来确保resId
的计数是唯一的。
HAVING
HAVING
子句主要用于对聚合函数(如SUM()
, COUNT()
, AVG()
等)的结果进行过滤
select * from data.dataanalyst group by city having count(positionId) >= 100
-
having
子句是在分组后应用条件的地方,用于过滤分组。 -
在这个查询中:
-
我们选择
city
列,并计算每个城市的positionId
的数量。 -
使用
group by
子句按city
列分组。 -
使用
having
子句过滤出那些positionId
数量大于或等于100的城市。
-
is null
SELECT * FROM 销售表 WHERE 销售数量 IS NULL; # 如果想查非空值: SELECT * FROM `销售表` WHERE 销售数量 IS NOT NULL;
在 SQL 中,我们使用 IS NULL 来判断 NULL 值,而不是使用等号(=)
条件运算符的=或<>是不能判断NULL值的,必须用 IS NULL 和 IS NOT NULL
<=>安全等于可以判断NULL值,也可以判断普通值
SELECT * FROM
销售表
WHERE 销售数量 <=> NULL; 但是这个符号可读性差,看到之后不易分清。
sql排序
ASC (升序)
SELECT 字段名 FROM 表名 ORDEY BY 字段名 ASC (ASC可以省略默认升序)
例如:SELECT * FROM 销售表
ORDER BY 销售数量 ASC;
DESC (升序)
SELECT 字段名 FROM 表名 ORDEY BY 字段名 DESC
例如:SELECT * FROM 销售表
ORDER BY 销售数量 DESC;
-
ORDER BY 关键字用于指定按照哪个列进行排序,如果没有指定排序方式,则默认按照升序进行排序。
拓展:添加筛选条件
例如:店号为1,3,7店的数据,按销售数量降序
SELECT * FROM
销售表
WHERE 店号 in(1,3,7) ORDER BY 销售数量 DESC;
排序优先级
SELECT 字段名 FROM 表名 ORDER BY 字段名1 DESC,字段名2 ASC
-
SELECT 字段名
:选择要查询的字段,可以是单个字段或多个字段,用逗号分隔。 -
FROM 表名
:指定要查询的数据表。 -
ORDER BY 字段名1 DESC, 字段名2 ASC
:对查询结果进行排序。字段名1
是第一个排序字段,DESC
表示降序(从大到小),字段名2
是第二个排序字段,ASC
表示升序(从小到大)。
综合起来,这个查询语句将返回指定表中选定字段的数据,并按照字段1降序排列,然后在相同字段1的情况下按照字段2升序排列。注意,DESC 和 ASC 是可选的,默认情况下,如果没有指定排序方式,则为升序。
SQL函数
LENGTH()
LENGTH() 是一种常见的用于获取字符串长度的sql函数,它返回指定字符串表达式的字符串或字节数,取决于使用的数据库系统
例如,如果你想计算一个名为 name
的字段中每个记录的字符数,你可以使用以下语法:
Copy CodeSELECT LENGTH(name) AS 字符数 FROM 表名;
这将返回一个名为 "字符数" 的列,其中包含了每个记录中 name
字段的字符数。