数据库之SQL语句

一、SQL(Structured Query Language)是一种用于操作关系数据库的语言。以下是一些基本的SQL操作:

不区分单引号和双引号,不区分大小写

  1. 创建数据库:

CREATE DATABASE database_name;

  1. 删除数据库:

DROP DATABASE database_name;

  1. 创建表:

CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... );

  1. 删除表:

DROP TABLE table_name;

  1. 插入数据:

INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...);

  1. 更新数据:

UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;

  1. 删除数据:

DELETE FROM table_name WHERE condition;

  1. 查询数据:

SELECT column1, column2,... FROM table_name WHERE condition;

  1. 查询所有数据:

SELECT * FROM table_name;

  1. 查询多个表的数据:

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 "张_"

②% 代表任意位字符

  1. 查询以 "abc" 开头的所有字符串:

SELECT * FROM table_name WHERE column_name LIKE 'abc%';

  1. 查询以 "xyz" 结尾的所有字符串:

SELECT * FROM table_name WHERE column_name LIKE '%xyz';

  1. 查询包含 "def" 的所有字符串:

SELECT * FROM table_name WHERE column_name LIKE '%def%';

  1. 查询所有包含 "a" 或 "b" 的字符串:

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。

你可能感兴趣的:(数据库,sql,oracle)