sql语句

    xiaoxiao2022-07-13  146

    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 LastName BETWEEN 'Adams' AND 'Carter'

    使用别名:

    别名使查询程序更易阅读和书写。

    SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS poWHERE 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
    最新回复(0)