zoukankan      html  css  js  c++  java
  • SQL基础 关键字

    SQL语言类型

    数据定义:create/alter/drop table/trigger/index/function/存储过程/约束/…
    数据操纵:select/update/insert/delete
    数据控制:grant/revoke

    增删改查

    INSERT INTO 表名称 VALUES (值1, 值2,....)
    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    

    例子

    INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
    

    DELETE FROM 表名称 WHERE 列名称 = 值
    

    例子

    DELETE FROM Person WHERE LastName = 'Wilson' 
    

    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
    

    例子

    UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
    WHERE LastName = 'Wilson'
    

    SELECT 列名称 FROM 表名称
    SELECT * FROM 表名称
    

    查select

    distinct 去除重复项

    SELECT DISTINCT 列名称 FROM 表名称
    

    例子
    如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:

    SELECT Company FROM Orders
    

    "Orders"表:

    Company     OrderNumber            
    IBM           3532              
    W3School    2356          
    Apple       4698            
    W3School    6953          
    

    结果:

    Company
    IBM
    W3School
    Apple
    W3School
    

    请注意,在结果集中,W3School 被列出了两次。
    如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:

    SELECT DISTINCT Company FROM Orders 
    

    结果:

    Company
    IBM
    W3School
    Apple
    

    现在,在结果集中,"W3School" 仅被列出了一次。
    参考:http://www.w3school.com.cn/sql/sql_distinct.asp

    where

    SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
    eg.
    数值:

    SELECT * FROM Persons WHERE Year>1965
    

    文本值:

    SELECT * FROM Persons WHERE FirstName='Bush'
    

    and/or

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

    order by + desc,asc + top,percent

    eg.

    SELECT TOP 2 * FROM Persons         --查询前2个
    SELECT TOP 50 PERCENT * FROM Persons     --查询前百分之五十
    

    like/not like+通配符

    in+()

    eg.

    SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')
    

    between and

    模板

    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    BETWEEN value1 AND value2
    

    eg.

    SELECT * FROM Persons
    WHERE LastName
    BETWEEN 'Adams' AND 'Carter'
    

    Alias =as 别名,查询列名或者搜索表名的别名 可省略

    eg.

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

    join on

    join=inner join

    在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

    left join

    从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
    eg.

    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

    从右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

    full join

    只要其中某个表存在匹配(左右表匹配全部返回),FULL JOIN 关键字就会返回行。
    eg.我们希望列出所有的人,以及他们的订单,以及所有的订单,以及定购它们的人。(人一张表,订单一张表)

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    FROM Persons
    FULL JOIN Orders
    ON Persons.Id_P=Orders.Id_P
    ORDER BY Persons.LastName
    

    结果集:

    LastName    FirstName   OrderNo           
    Adams           John            22456         
    Adams           John            24562
    Carter          Thomas          77895           
    Carter          Thomas          44678          
    Bush            George                   
                                 34764      
    

    FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行
    如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
    转载自:http://www.w3school.com.cn/sql/sql_join_full.asp

    表连接 join

    1)内连接:只连接匹配的行

    select A.c1,B.c2 from A join B on A.c3 = B.c3;
    

    2)左外连接:包含左边表的全部行(不管右边的表中是否存在与它们匹配的行)以及右边表中全部匹配的行

    select A.c1,B.c2 from A left join B on A.c3 = B.c3;
    

    3)右外连接:包含右边表的全部行(不管左边的表中是否存在与它们匹配的行)以及左边表中全部匹配的行

    select A.c1,B.c2 from A right join B on A.c3 = B.c3;
    

    4)全外连接:包含左、右两个表的全部行,不管在另一边的表中是否存在与它们匹配的行

    select A.c1,B.c2 from A full join B on A.c3 = B.c3;
    

    5)非等连接:使用等值以外的条件来匹配左、右两个表中的行

    select A.c1,B.c2 from A join B on A.c3 != B.c3;     
    

    6)交叉连接:生成笛卡尔积——它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行一一匹配

    select A.c1,B.c2 from A,B;       
    

    union/union all

    用于合并两个或多个 SELECT 语句的结果集
    Union和Union All的区别之一在于对重复结果的处理,Union All会保留重复结果
    转载自:http://www.w3school.com.cn/sql/sql_union.asp

    select into

    从一个表中选取数据,然后把数据插入另一个表中
    常用于创建表的备份复件或者用于对记录进行存档
    转载自:http://www.w3school.com.cn/sql/sql_select_into.asp

    (auto) increment 自增长

    null

    NULL 值是遗漏的未知数据。
    默认地,表的列可以存放 NULL 值。
    eg.

    SELECT LastName,FirstName,Address FROM Persons
    WHERE Address IS NULL
    
    SELECT LastName,FirstName,Address FROM Persons
    WHERE Address IS NOT NULL
    

    having

    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
    

    eg.
    我们拥有下面这个 "Orders" 表:

    O_Id    OrderDate   OrderPrice  Customer            
    1        2008/12/29 1000            Bush            
    2        2008/11/23 1600            Carter          
    3        2008/10/05 700         Bush          
    4       2008/09/28  300         Bush           
    5      2008/08/06   2000            Adams           
    6      2008/07/21   100         Carter   
    

    现在,我们希望查找订单总金额少于 2000 的客户。
    我们使用如下 SQL 语句:

    SELECT Customer,SUM(OrderPrice) FROM Orders
    GROUP BY Customer
    HAVING SUM(OrderPrice)<2000       
    

    结果集类似:
    Customer SUM(OrderPrice)
    Carter 1700
    现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。
    转载自:http://www.w3school.com.cn/sql/sql_having.asp

    sql 不区分大小写

  • 相关阅读:
    [Exception] 当前 TransactionScope 已完成
    C# Lazy<T>(转)
    C# 基础概念之延迟加载
    .Net语言中关于AOP 的实现详解
    DataReader、Table、DataSet和Entity相互转化
    ASP.NET Core 2.0 : 五.服务是如何加载并运行的, Kestrel、配置与环境(转)
    ASP.NET Core 2.0 : 四. _Layout与_ViewStart(转)
    ASP.NET Core 2.0 : 三. 项目结构(转)
    ASP.NET Core 2.0 : 二. 开发环境(转)
    ASP.NET Core 2.0 : 一. 概述(转)
  • 原文地址:https://www.cnblogs.com/Lulus/p/7874244.html
Copyright © 2011-2022 走看看