【详解】SQL语句
来源:互联网 发布:自学java难度大吗 编辑:程序博客网 时间:2024/06/05 13:35
系统学过一遍SQL的知识,但写的时候还是有些地方会想不起来,不清楚。
所以在此系统的梳理一遍比较常用的,从头学习,也从头记忆一遍。
【重要事项】SQL对大小写不敏感。
所以如果SELECT大写别的就要小写,select这种的小写,字段名和表名就要大写。
最基础简单的语句,这里就不赘述了。我们只对常用但总容易忘的进行说明:
1.
SELECT DISTINCT 语句
在表中,有时候会包含重复值。
不过,有时我们希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders
"Orders"表:
结果:
请注意,在结果集中,W3School 被列出了两次。
如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT
Company FROM Orders
结果:
现在,在结果集中,"W3School" 仅被列出了一次。
2. where语句中的操作符
下面的运算符可在 WHERE 子句中使用:
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
3. 引号的使用
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值:
这是正确的:SELECT * FROM Persons WHEREFirstName='Bush'
这是错误的:SELECT * FROM Persons WHEREFirstName=Bush
数值:
这是正确的:SELECT * FROM Persons WHEREYear>1965
这是错误的:SELECT * FROM Persons WHEREYear>'1965'
4.and和or运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
SELECT * FROM Persons WHERE FirstName='Thomas' AND
LastName='Carter'
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
SELECT * FROM Persons WHERE firstname='Thomas' OR
lastname='Carter'
AND和OR运算符可以结合使用:
SELECT * FROM Persons WHERE (
FirstName='Thomas' OR
FirstName='William')
AND
LastName='Carter'
5. order byORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
结果:
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
6. insert into
语法
INSERT INTO 表名称 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
前者是插入一整行,后者是插入一行中某些列
7. update
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
修改一列UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
修改两列UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'
8. delete
DELETE FROM 表名称 WHERE 列名称 = 值
Person:
删除某行
"Fred Wilson" 会被删除:
DELETE FROM Person WHERE LastName = 'Wilson'
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
9.between
SQL BETWEEN 语法
SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2
sql='select ID from SELLING_GOODS where ID between %s and %s'%(1963259, 1963829)
10. 别名
sql = 'SELECT O.GAME_ID, SUM(O.AMOUNT) AS AMOUNT, SUM(O.BALANCE_AMOUNT) AS BALANCE_AMOUNT, SUM(O.CHARGE_AMOUNT) AS CHARGE_AMOUNT, SUM(IFNULL(V.TEMP_AMOUNT, 0)) AS VOUCHER_AMOUNT FROM moyoyo_sdk.ORDER_INFO O LEFT JOIN netgame_trade.VOUCHER V ON V.ID = O.VOUCHER_ID WHERE O.CREATED_DATE >= "%s" AND O.CREATED_DATE < "%s" AND O.PAY_TYPE !=- 1 AND O.STATUS = 1 GROUP BY O.GAME_ID; '%(handleDateStr, todayStr)这一句设置了列的别名,还有表的别名
FROM moyoyo_sdk.ORDER_INFO O
11. join
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
Persons、Orders两张表
可以这样写:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM Persons, OrdersWHERE Persons.Id_P = Orders.Id_P
也可以用join关键字这样写:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN Orders
ON Persons.Id_P = Orders.Id_PORDER BY Persons.LastName
join中有这么几种关键字:inner join、left join、right join、full join
这里以这两张表为例:
"Persons" 表:
"Orders" 表:
inner join:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName
结果集:
left join:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName
结果集:
right join:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName
结果集:
full join:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsFULL JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName
结果集:
12. sum与group by
"Orders" 表:
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
结果集类似这样:
group by
sum函数常常需要添加group by。
还是上面的orders表,如果我们想要得到每个客户的订单总额。
SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer
结果集类似这样:
- 主要SQL语句详解
- 常用SQL语句详解
- 常用SQL语句详解
- Informix SQL 语句详解
- sql连接语句详解
- 主要 SQL语句详解
- SQL Select语句详解
- Mysql SQL语句详解
- SQL语句详解
- 【详解】SQL语句
- SQL 语句详解
- sql关键语句详解
- SQL语句语法详解
- SQL语句详解大全
- SQL查询语句使用详解
- sql中like语句详解
- sql中的iif语句详解
- sql中like语句详解
- 设置APP图标和启动画面
- EAS BOS序时簿Query显示前字段值更新
- xlsx批量转为utf8的csv
- setjmp longjmp
- Android Design Support Library
- 【详解】SQL语句
- 第九课 输出语句
- nodejs 中socket的聊天室实例
- SQL Server 2008 数据库编程摘要一 : 函数篇
- CFBundleDisplayName 在IOS9中未设置会造成的问题
- iOS多线程编程详情(GCD、NSThread、NSOperation)
- jquery.validate.js的remote用法
- 录入学生信息
- UE4 Asynchronous Asset Loading