sql相关
简单的查:
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
去重复:
SELECT DISTINCT 列名称 FROM 表名称
Where:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
SELECT * FROM Persons WHERE FirstName='Thomas' AND
LastName='Carter'
SELECT * FROM Persons WHERE firstname='Thomas' OR
lastname='Carter'
查询结果排序:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
如果加DESC,则逆序排序
插入数据:
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
更新数据:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
删除表中的行:
DELETE FROM 表名称 WHERE 列名称 = 值
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
规定要返回的记录的数目:
mysql:
SELECT *
FROM Persons
LIMIT 5
oracle:
SELECT *
FROM Persons
WHERE ROWNUM <= 5
模糊查询:
SELECT * FROM Persons
WHERE City LIKE 'N%'
SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'
IN 操作符允许我们在 WHERE 子句中规定多个值:
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')
BETWEEN ... AND 会选取介于两个值之间的数据范围:
SELECT * FROM Persons WHERE LastNameBETWEEN
'Adams'AND
'Carter'
使用别名:
别名使查询程序更易阅读和书写。
SELECT po.OrderID, p.LastName, p.FirstName FROM PersonsAS p
, Product_OrdersAS po
WHERE p.LastName='Adams' AND p.FirstName='John'
内连接inner join:
INNER JOIN 关键字在表中存在至少一个匹配时返回行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
左联接left join:
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
右连接right join:
RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
全连接full join:
返回所有的行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
合并结果集:
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
创建索引:
您可以在表中创建索引,以便更加快速高效地查询数据。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
CREATE INDEX PersonIndex
ON Person (LastName)
删除索引:
mysql:
ALTER TABLE table_name DROP INDEX index_name
oracle:
DROP INDEX index_name
删除表:
DROP TABLE 表名称
删除数据库:
DROP DATABASE 数据库名称
添加列:
ALTER TABLE table_name
ADD column_name datatype
删除列:
ALTER TABLE table_name
DROP COLUMN column_name
改变表中列的数据类型:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
对结果集进行分组:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000