导图社区 SQL基础语句
SQL基础语句 1.DDL数据库 定义语言 2.DML数据库操作语言 3.DCL数据库控制语言
编辑于2022-02-16 17:24:55SQL基础语句
1.DDL数据库 定义语言
1.1 CREAT创建
1.1.1创建数据库:CREATE DATABASE<库名>
1.1.2创建表
创建新表CREATE TABLE <表名>(<列名1><数据类型1>......)
基于表创建新表CREATE TABLE <表名> AS SELECT查询语句
1.1.3创建视图
CREATE VIEW <视图名> AS SELECT查询语句
1.1.4创建索引
CREATE INDEX<索引名>ON<表名>(<列名>[DESC])
1.2ALTER修改。
1.2.1添加列ALTER TABLE <表名> ADD <列名><数据类型>
1.2.2删除列ALTER TABLE <表名> DROP COLUMN <列名>
1.2.3修改列名ALTER TABLE <表名>RENAME COLUMN <旧列名>TO<新列名>
1.2.4修改列数据类型ALTER TABLE <表名>MODIFY <列名><新数据类型>
1.2.5修改表名ALTER TABLE <旧表名>RENAME TO <新表名>
1.3 DROP删除
1.3.1删除库DROP DATABASE <库名>
1.3.2删除表DROP TABLE<表名>
1.3.3删除索引DROP INDEX<索引名>
1.3.4删除视图DROP VIEW<视图名>
2.DML数据库 操作语言
2.1INSERT插入
2.1.1插入单行记录
INSERT INTO <表名>[<列名1>,<列名2>......] VALUES(<值1>,<值2>......)
2.1.2基于表1向另一个表插入数据。
INSERT INTO <表名>[<列名1>,<列名2>......]
2.2 UPDATE修改
2.2.1 UPDATE <表名> SET <列1>=值1,<列2>=值2......WHERE筛选条件
2.3 DELETE删除
2.3.1 DELETE FROM <表名> [WHERE 筛选条件]
3.DCL数据库 控制语言
3.1数据分析一般用不到,略
4.DQL数据库 查询语言
4.1常用函数
4.1.1聚合数 @(统计函数)
计算行数: COUNTO)*除COUNT(*)外,其余聚合函数忽略空值
求最大、最小: MAX0、MINO
求和: SUM()
4.1.2字符函数·
计算字符长度: LEN(O)
4.1.3数学函数
求绝对值:ABS()
4.1.4日期函数·
单前日期: GETDATEO
日期加减:DATEADD(date1,number,date)
日期间隔: DATEDIFF()
取日期中年、月、日: YEAR0、MOUNTH()、 DAY()
4.1.5类型转换函数
4.1.6分支函数
CASE WHEN 表达式 THEN 返回 ELSE 返回2 END
4.2基础语法结构。
4.2.1 SELECT <列名1>,<列名2>...... FROM <表名> HERE《蒲选条件> GROUP BY <列名3>,<列名4>..... HAVING<聚合筛选条件> ORDER BY <排序列1>,<排序列2.......
4.3常见语句
4.3.1查询不重复记录·
SELECT DISTINCT <列名> FROM <表名>
4.3.2连接两个字段。
SELECT DISTINCT <列名>+<列名1> FROM<表名>
4.3.3比较查询。
算数运算符WHERE列!='老师'
BETWEEN.....AND 数值范围
WHERE 列 BETWEEN <值1> AND<值2>
IN匹配记录WHERE 列IN(属性1,属性......)
4.3.4逻辑查询
且AND<条件1>AND <条件2> AND <条件3>......
或OR<条件1>OR<条件2>OR<条件3>.....
4.3.5空值查询:
<列> IS NULL
<列>IS NOT NULL
4.3.6模糊查询
通配符“%”
WHERE <列>LIKE'王%' --王开头的信息
通配符"-”表示匹配单个字符
WHERE <列> LIKE'王_3‘ 王开头,后1个任意字符的信息
4.3.7排序:
ORDER BY <列1>,<列2>......DESC
4.3.8分组
GROUP BY <列1>,<列2>...... -在使用聚合函数时,需要使用GROUP BY子句
4.3.9分组限制
GROUP BY <列1>,<列2>......HAVING 条件表达式 --HAVING子句中经常使用聚合函数对分组后的结果进行筛选
4.3.10分组后结果再计算
GROUP BY <列1>,<列2>......WITH ROLLUP --对分组的结果进行统计(各个分组的总计)
4.3.11限制返回行数:
SELECT TOP 3 <列名> FROM <表名> -返回前3行
SELECT TOP 30 PRECENT<列名> FROM <表名> --返回前30%的数据
4.3.12连接查询:
内连接 等值连接
SELECT <表1.字段>,<表2.字段> FROM <表1>, <表2> WHERE <表1.字段1>=<表2.字段2>
SELECT <表1.字段>,<表2.字段> FROM <表1> INNER JOION <表2> ON <表1.字段1>=<表2.字段2>
交叉连接
SELECT <表1.字段>,<表2.字段> FROM <表1>,<表2> --结果是表1和表2的笛卡儿积
SELECT <表1.字段>,<表2.字段> FROM <表1>CROSS JOIN <表2> -结果同上
自连接
SELECT <表1.字段1>,<表1.字段2> FROM <表1> AS A, <表2> AS B WHERE A.字段=数学' AND A.字段1<B.字段1 --在自连接时,需要为表定义不同的别名。
外连接
左外连接
SELECT <表1.字段1>,<表2.字段2> FROM <表1> LEFT JOIN<表2> ON<表1.字段1>=<表2.字段2>
右外连接
SELECT<表1.字段1>,<表2.字段2> FROM <表1> RIGHT JOIN <表2> ON <表1.字段1>=<表2.字段2>
全外连接
SELECT <表1.字段1>,<表2.字段2> FROM <表1> FULL JOIN<表2> ON <表1.字段1>=<表2.字段2>
4.3.13集合查询
并操作
SELECT 语句1 UNION SELECT 语句2 --1、2查询出的列数必须相同,对应的列的数据类型必须一致 -UNION会自动去重, UNION ALL不去重
交操作
SELECT 语句1 INTERSECT SELECT 语句2 --INTERSECT会自动去重, INTERSECT ALL不去重
4.3.14子查询
ANY运算符的子查询只要与子查询中的任何一个结果值匹配,其值都会被返回
ALL运算符的子查询与子查询中的所有的结果值匹配时,其值才会被返回
多列子查询
4.3.15窗口函数:
排序
row number()12345678自增不重复
rank() 123336自增有空位,值相等时重复
dense_rank() 12333456 自增无空位, 值相等时重复
累计求和
select *,sum(消费金额) over(partition by 用户order by 时间 rows between unbounded preceding and current row) as 购买总额from 表名
分段
select * from (select", ntile(5) over(order by 时间) as 分段from 表名)t t.分段=1 分段--查询前20%的数据
偏移
select *,lag(时间,1) over(partiting by 顾客 order by 时间) as 上次购买时间 from 表名 -求上次购买时间