SQL 常用关键字释义和用法


下面 是 从网络上整理 出来的 SQL 关键字和 常用函数的 释义和简单用法。
 

1.1 SELECT

SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
语法:
SELECT 列名 FROM 表名
SELECT * FROM 表名
eg:select * from table_a;



1.1.1 DISTINCT

去除查询的结果集中去掉相同行的内容,留下不同的内容。

语法:

SELECT DISTINCT(列名) FROM 表名
select distinct(id) from table_a;

 

1.1.2 TOP

TOP子句用于规定要返回的记录数目。但并不是所有的数据库都支持该子句,比如MySql中就是用 LIMIT。


SQL Server语法:


SELECT TOP 数字|percent 列名 FROM 表名
eg: select top 3 * from table_a --查找表中的前3条数据
eg:select top 30 percent from table_a --查找表中的前30%数据



MySql 语法:

SELECT 列名 FROM 表名 LIMIT 条数
eg: select * from table_a LIMIT 40--查询前40条数据




Oracle语法:


SELECT 列名 FROM 表名 WHERE ROWNUM <=条数
eg:select * from table_a where rownnum <=5 --读取表中前5行数据





1.1.3 LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
      • like 语句常常与 SQL通配符一起使用:
      • % :替代一个或多个字符
      • _:替代一个字符
      • [charlist]:字符列表中任何一字符
      • [~charlist]:
      • 或[!charlist]:不存在字符列表中任意字符
语法:


SELECT 列名 FROM 表名 WHERE 列名 LIKE 判断方式
eg: select * from table_a where value like '%123' --查找 表中 value 值 以123作结尾的项
eg: select * from table_a where value like '123_' -- 查找表中 值以123开头的,长度为4的所有项
eg: select * from table_a where value like '[ABC]%' --查询表中值以A,,B,C任意字符开头的项
eg: select * from table_a where value like '[!ABC]%' --查询表中值不以A,,B,C任意字符开头的项




1.2 INSERT INTO

INSERT INTO 像表格中插入新的行

语法:


INSERT INTO 表名 VALUES(值1,值2);
INSERT INTO 表名(列名1,列名2)values(值1,值2);

 

1.3 UPDATE

update修改表中的数据

语法:


UPDATE 表名 SET 列名= 新值 WHERE 逻辑判断
eg: update table_a set value='123' where id=1;




1.3 DELETE

delete用于删除表中的行
语法:


DELETE FROM 表名 WHERE 逻辑判断
eg: DELETE table_a WHERE id = 1

 

2. 1 WHERE

对要进行操作的表进行条件的判定补充(整删改查)。
语法:


[SELECT][DELETE][UPDATE] 表 WHERE 运算符判定
eg: select * from table_b where id=1




2.1.1  AND 和 OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

语法:

[SELECT][UPDATE][DELETE] 表 WHERE 逻辑表达 [AND][OR] 逻辑表达上
eg:select * from table_a where id=1 AND value='wangch';
eg:select * from table_a where id=1 or value='wangch';



2.1.2 ORDER BY

ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
      • DESC:按降序进行排列(默认)。
      • ASC:按升序进行排列。
语法:
SELECT 列名 FROM 表名 ORDER BY 列名 [DESC][ASC]
eg:select * from table_a order by id desc


2.1.3 IN

IN操作符允许我们在WHERE 子句中规定多个值

语法:

SELECT 列名 FROM 表名 WHERE 列名 IN(值1,值2,值3)
eg: select * from table_a where id in (1,2,3) -- 查询 表中id 分别为 1,2,3的结果


2.1.4 BETWEEN ...AND...

BETWEEN AND 会选取介于2个值之间的数据范围。

      • 数值
      • 文本
      • 日期



3.1 别名

在做查询操作的时候,可以给查询的数据库指定一个别名(Alias),以方便在后边书写其他逻辑判断

表别名语法:

SELECT 列名 FROM 表名 AS 别名

列别名语法:

SELECT 列名 AS 列别名 FROM 表名


不做别名查找:

SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons, Product_Orders
WHERE Persons.LastName='Adams' AND Persons.FirstName='John'

做别名查找:

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'

可以看出 使用别名可以使语句更简洁和易于阅读。


3.2 with

with 常常与as 连用,将查询到的结果暂时存储到一张虚表当中,然后再做操作。

语法:

with  虚表名 as (数据查询结果);

eg: with a as (SELECT * FROM table_a);
select * from a




3.2 JOIN

各个表可能由于某种约束(外键等)而相关,JOIN可以根据这些关系,实现表的结合查询。

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。

我们就需要执行 join。数据库中的表可通过键将彼此联系起来。

主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。

在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。


语法:

SELECT  列名 FROM 表名A JOIN 表名B ON 条件

其中如果不实用JOIN查询操作SQL语句如下的话:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

使用JOIN查询SQL语句如下:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P


其中 具有不同的SQL JOIN 方式

    • JOIN | INNER JOIN: 如果表中有至少一个匹配,则返回行      内连接
    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行       左连接
    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行     右连接
    • FULL JOIN: 只要其中一个表中存在匹配,就返回行                全连接


3.3 UNION

union 用户合并多个SELECT 的查询结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。


语法:

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2


UNION 默认省略相同的值,如果不需要省略,请用UNION ALL。


3.3 SELECT INTO 

SELECT INTO 语句从一个表中选取数据,然后插入到另外一个表中。

语法:

SELECT 列名 INTO 新表名 FROM 旧表 WHERE 逻辑判断

注意MySql 中不支持 SELECT INTO 字句!

替换用法为 INSERT INTO


比如 2个相同结构表A,B中B的数据插入A的数据 可以这样写

INSERT INTO A SELECT * FROM B WHERE ...


将制定字段插入新表

INSERT INTO A(key,value) select key,value from B WHERE ...


4.1 GROUP BY

GROUP BY语句用于结合统计函数,根据一个或多个列结果集进行分组。

语法:

SELECT 列名|function(列名) FROM 表名
GROUP BY 列名


4.2 HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。


语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value




5. 0  SQL函数

内建SQL函数的用法如下:

SELECT function(列) FROM 表


其中内建函数分为:

    • Aggregate 函数 (合计函数)
    • Scalar 函数


Aggregate 函数

函数 描述
AVG(column) 返回某列的平均值
BINARY_CHECKSUM  
CHECKSUM  
CHECKSUM_AGG  
COUNT(column) 返回某列的行数(不包括NULL值)
COUNT(*) 返回被选行数
COUNT(DISTINCT column) 返回相异结果的数目
FIRST(column) 返回在指定的域中第一个记录的值(SQLServer2000 不支持)
LAST(column) 返回在指定的域中最后一个记录的值(SQLServer2000 不支持)
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)  
STDEVP(column)  
SUM(column) 返回某列的总和
VAR(column)  
VARP(column)  

Scalar 函数

Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。




函数 描述
UCASE(c) 将某个域转换为大写
LCASE(c) 将某个域转换为小写
MID(c,start[,end]) 从某个文本域提取字符
LEN(c) 返回某个文本域的长度
INSTR(c,char) 返回在某个文本域中指定字符的数值位置
LEFT(c,number_of_char) 返回某个被请求的文本域的左侧部分
RIGHT(c,number_of_char) 返回某个被请求的文本域的右侧部分
ROUND(c,decimals) 对某个数值域进行指定小数位数的四舍五入
MOD(x,y) 返回除法操作的余数
NOW() 返回当前的系统日期
FORMAT(c,format) 改变某个域的显示方式
DATEDIFF(d,date1,date2) 用于执行日期计算




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值