一、SQL(Structured Query Language)是一种用于操作关系数据库的语言。以下是一些基本的SQL操作:
不区分单引号和双引号,不区分大小写
CREATE DATABASE database_name;
DROP DATABASE database_name;
CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... );
DROP TABLE table_name;
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...);
UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;
DELETE FROM table_name WHERE condition;
SELECT column1, column2,... FROM table_name WHERE condition;
SELECT * FROM table_name;
SELECT table1.column1, table2.column2,... FROM table1 JOIN table2 ON table1.common_column = table2.common_column;
不等于:!= / <>
与:and
或:or
在...之间...:between...and...
包含:in()
为空:is null 不为空:is not null
二、SQL之模糊查询
like配合占位符使用
①_ 代表一位字符
查询姓张的两位数名字的学生
select * from student where name like "张_"
②% 代表任意位字符
SELECT * FROM table_name WHERE column_name LIKE 'abc%';
SELECT * FROM table_name WHERE column_name LIKE '%xyz';
SELECT * FROM table_name WHERE column_name LIKE '%def%';
SELECT * FROM table_name WHERE column_name LIKE '%a%' OR column_name LIKE '%b%';
请注意,使用通配符进行模糊查询可能会影响查询的性能,因此应谨慎使用。
三、分页查询(限制查询)
limit a,b a表示起始索引值,索引值从0开始,bb表示查询个数
limit b offset a
如果有where子语句,limit语句需要放到where后面
在student表中从0条数据开始,查两条数据
select * from student limit 0,2
四、排序
order by 列名 desc(降序)|asc(升序,默认)
where 在前 order by limit 最后
select * from student order by age desc
五、聚合函数
SQL聚合函数是一组特殊的函数,用于对一组值执行计算并返回单个值。常见的SQL聚合函数包括:
1、SUM(求和):计算指定列的总和。
SELECT SUM(Salary) FROM Employees
2、AVG(平均值):计算指定列的平均值。
SELECT AVG(Salary) FROM Employees
3、COUNT(计数):计算指定列的行数,不统计值为空的记录
SELECT COUNT(*) FROM Employees
4、MAX(最大值):找到指定列的最大值。
SELECT MAX(Salary) FROM Employees
5、MIN(最小值):找到指定列的最小值。
SELECT MIN(Salary) FROM Employees
6、GROUP_CONCAT(分组连接):将指定列的值连接成一个字符串。
SELECT Department, GROUP_CONCAT(Name) FROM Employees
7、COUNT_DISTINCT(去重计数):计算指定列的不同值的数量。
SELECT COUNT_DISTINCT(Department) FROM Employees
8、STDDEV_POP(总体标准差):计算指定列的总体标准差。
SELECT STDDEV_POP(Salary) FROM Employees
9、STDDEV_SAMP(样本标准差):计算指定列的样本标准差。
SELECT STDDEV_SAMP(Salary) FROM Employees
10、VAR_POP(总体方差):计算指定列的总体方差。
SELECT VAR_POP(Salary) FROM Employees
11、VAR_SAMP(样本方差):计算指定列的样本方差。
SELECT VAR_SAMP(Salary) FROM Employees
这些聚合函数可以单独使用,也可以与其他SQL语句(如SELECT、FROM和WHERE子句)结合使用,以满足特定的查询需求。
六、分组函数
group by having 条件筛选 不用where
SQL 分组函数用于对数据进行分组并对每个组应用聚合计算。常见的SQL分组函数包括:
1、GROUP BY:根据一个或多个列对结果进行分组。
SELECT Department, COUNT(*) FROM Employees GROUP BY Department
2、HAVING:在分组后对分组结果进行筛选。
SELECT Department, COUNT() FROM Employees GROUP BY Department HAVING COUNT() > 10
3、ORDER BY:对结果集中的行进行排序。
SELECT Department, COUNT() FROM Employees GROUP BY Department ORDER BY COUNT() DESC
4、ROLLUP:生成分组汇总报表,同时在汇总报表中添加行合计和列合计。
SELECT Department, COUNT(*) FROM Employees GROUP BY ROLLUP(Department)
5、CUBE:生成分组汇总报表,同时在汇总报表中添加行合计、列合计和行/列组合的总计。
SELECT Department, COUNT(*) FROM Employees GROUP BY CUBE(Department)
6、GROUPING SETS:生成多个分组汇总报表,每个分组汇总报表基于不同的分组组合。
SELECT Department, COUNT(*) FROM Employees GROUP BY GROUPING SETS((Department),())
这些分组函数可以用于更高级的聚合查询,例如多级分组、分组汇总和交叉汇总等。
重命名 as 新名称 as可省略
七、多表查询
一对一关系
1、合并成同一张表(最优)
2、加入外键
3、添加一张表
一对多关系
1、合并成同一张表,维护困难
2、加入外键,多这方加外键(最优)
3、新建一张表
多对多关系
1、合并成同一张表,数据冗余
2、加入外键
3、新建一张表(最优)
select * from student,class where student.id=class.id
八、连表查询
1、内连接 join
select * from student join class on student.id=class.id select * from s1 join s2 join s3 on s1.id=s2.id and s2.id=s3.id select * from s1 join s2 on s1.id=s2.id join s3 on s2.id=s3.id
2、外连接
左外连接 left join,返回左表中所有的行,以及右表中与左表匹配的行。如果右表中没有匹配的行,那么对应的结果列为NULL。
右外连接 right join,返回右表中所有的行,以及左表中与右表匹配的行。如果左表中没有匹配的行,那么对应的结果列为NULL。