常用SQL语句和语法总结
CREATE DATABASE xxx;
CREATE TABLE xxxx( 列名1 类型 NOT NULL/NULL, 列名2 类型 NOT NULL/NULL)
2.删除数据库和表都是DROP
DROP DATABASE xxx;DROP TABLE xxx;
3.给表添加主键
ALTER TABLE 表名 ADD PRIMARY KEY(列名);
4.基础增删改查
SELECT * FROM 表名;(把星号换成具体列名即查具体列)UPDATE 表名 SET 列=xxx WHERE ID=xx;INSERT INTO 表名(列1,列2)VALUES( '列1的值','列2的值');DELETE FROM 表 WHERE ID=xx;
5.模糊查找LIKE
--通配符:下滑线匹配任意单个字符,百分号%匹配所有SELECT * FROM 表 WHERE 列 LIKE '_keyword%'
6.范围查找
--像between 、>、<等SELECT * FROM 表 WHERE Score BETWEEN 90 AND 100;SELECT * FROM 表 WHERE Score>60;
7.多值查找IN
SELECT * FROM 表 WHERE 列 IN ('A','B','C');
8.子查询(嵌套查询)
SELECT * FROM 表A WHERE 列 IN(SELECT 列 FROM 表B WHERE A=xx)
9.是否存在EXISTS或NOT EXISTS
SELECT * FROM 表AWHERE 列=xx AND NOT EXISTS(SELECT 1 FROM 表B WHERE 列 = 表A.列)
exists的用法和in很像,当我们不在意后面这个条件的值是多少,而只在意存不存在时,用exists比in的性能会更好一点。
10.多表关联查询
INNER JOIN(只看每个表中都有的)、LEFT JOIN(把左边的表作为基准)
SELECT * FROM 表AINNER JOIN 表BON 表A.关联列= 表B.关联列WHERE 表A.列=xx AND 表B.列=xxx
SELECT*FROM 表ALEFT JOIN 表BON 表A.关联列= 表B.关联列WHERE 表A.列=xx AND 表B.列=xxx
当仅通过一张表无法满足查询要求时,会进行多表关联,写join语句时,首先要清楚两张表之间的关系,找到合适的关联字段,切不可认为只要是两张表中都有的字段就能关联,这样可能导致笛卡尔积。当掌握了两张表的关联时,其实多种表的关联也是同样道理,一个串一个。在select或者where后面要清楚该列是来源于哪张表的,不要把关系搞错。也不建议一个sql语句串联很多表。
11.聚合函数
常用的聚合函数有count计数、sum求和、avg求平均、max最大值、min最小值:
SELECT SUM(amount) AS total_sales FROM sales;
SELECT Gender,COUNT(*)FROM dbo.StudentGROUP BY Gender
对聚合后的结果指定条件可以使用HAVING:
SELECT CourseNumber,AVG(Score) FROM dbo.ScoreGROUP BY CourseNumberHAVING AVG(Score)>80
12.只显示前N条数据TOP(或者LIMIT):
SELECT TOP 10 * FROM dbo.Student;SELECT * FROM dbo.Student limit 10;
13.去掉重复值DISTINCT
SELECT DISTINCT Name FROM dbo.Student
14.两张表相加UNION
SELECT product_id,product_name FROM dbo.ProductUNIONSELECT product_id,product_name FROM dbo.Product2
使用UNION将两张表相加时要注意列数和列的数据类型必须要一致。UNION默认会去掉两张表合并后重复的记录,UNION ALL不会去重。
15.常用日期函数
GETDATE():获取当前系统时间
YEAR,MONTH,DAY这些可以返回一个时间的具体部分
DATEADD:可以对日期进行加减计算
DATEDIFF:可以返回两个日期之间的差值
SELECT DATEADD(DAY,10,GETDATE()) AS '十天后'
16.常用算术函数
加(+)减(-)乘(*)除(/)、ABS(绝对值)、MOD(求余)、ROUND(四舍五入)等
SELECT ROUND(3.1415926,2);---结果3.1400000
17.常用字符串函数
字符串函数是对字符串进行替换、截取、简化等操作。
拼接:concat
SELECT Province ,City ,CONCAT(Province,'-',City) AS '地区'FROM dbo.Area
获取字符串长度:len或length
字符串替换:replace
--将Department这列中的‘系’替换成‘学院’SELECT REPLACE(Department,'系','学院') FROM dbo.Teacher
字符串的截取:substring
--将名字中的第一字截取出来作为姓SELECT SUBSTRING(Name,1,1) AS '姓' FROM dbo.Teacher
18.自定义函数
除了上述这些数据库内置的函数,也可以自己定义函数,语法是:
CREATE FUNCTION 函数名( @传入的参数名称 AS 传入参数的类型)RETURNS 返回值类型ASBEGIN-- SQL语句END;
即指明传入和传出的参数是什么,中间写明函数的逻辑处理语句。
19.视图:
CREATE VIEW view_nameASSELECT column1, column2, ...FROM table_nameWHERE ...;
20.索引:
CREATE INDEX index_name ON table_name (column_name);
窗口函数的语法结构通常为:
函数名() OVER ( [partition by] order by() )
版权保护: 本文由 绿茶加糖-郭保升 原创,转载请保留链接: https://www.guobaosheng.com/shujuku/377.html
- 上一篇:模糊查询不要总是用 LIKE 's%'
- 下一篇:sql查询优化方式常见情况总结
