zoukankan      html  css  js  c++  java
  • SQLServer基础SQL语句学习

    【019】SQL 基础学习

    ---------------------------------------------------------------------------------------------------------

    ●·● 目录:

    A1 ………… SELECT 语句
    A2 ………… SELECT_DISTINCT 语句
    A3 ………… WHERE 语句
    A4 ………… AND_& OR 运算符
    A5 ………… ORDER_BY 子句
    A6 ………… INSERT_INTO 语句
    A7 ………… UPDATE 语句 
    A8 ………… DELETE 语句
    A9 ………… TOP 子句

    G1 ………… LIKE 操作符
    G2 ………… 通配符
    G3 ………… IN 操作符
    G4 ………… BETWEEN 操作符
    G5 ………… Alias(别名)
    G6 ………… JOIN 关键字
    G7 ………… INNER_JOIN 关键字
    G8 ………… LEFT_JOIN 关键字
    G9 ………… RIGHT_JOIN 关键字

    U1 ………… FULL_JOIN 关键字
    U2 ………… UNION 关键字
    U3 ………… SELECT_INTO 语句
    U4 ………… CREATE_DATABASE 语句
    U5 ………… CREATE_TABLE 语句
    U6 ………… CREATE_INDEX 语句
    U7 ………… DROP 语句
    U8 ………… ALTER_TABLE 语句

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A1个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● SELECT 语句

    1. SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。

    2. SELECT 语法:

    SELECT 列名称 FROM 表名称

      以及

    SELECT 列名称1, 列名称2 FROM 表名称

      以及

    SELECT * FROM 表名称

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A2个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● SELECT DISTINCT 语句

    1. 关键词 DISTINCT 用于返回唯一不同的值。

    2. SELECT DISTINCT 语法:

    SELECT DISTINCT 列名称 FROM 表名称

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A3个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● WHERE 语句

    1. 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

    2. WHERE 语法:

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

    ※ 运算符:=、<>、!=、>、<、>=、<=、BETWEEN、LIKE。

    ※ 我们在例子中的条件值周围使用的是单引号。

    文本值:

    这是正确的:
    SELECT * FROM Persons WHERE FirstName='Bush'

    这是错误的:
    SELECT * FROM Persons WHERE FirstName=Bush

    数值:

    这是正确的:
    SELECT * FROM Persons WHERE Year>1965

    这是错误的:
    SELECT * FROM Persons WHERE Year>'1965'

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A4个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● AND & OR 运算符

    1. AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。

    2. AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

    3. 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

    4. 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

    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'

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A5个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● ORDER BY 子句

    1. ORDER BY 语句用于根据指定的列对结果集进行排序。默认按照升序排序。如果按照降序排序,可以使用 DESC 关键字。

    2. ORDER BY 语法:

    SELECT 列名称 FROM 表名称 ORDER BY 列名称

      以及

    SELECT * FROM 表名称 ORDER BY 列名称1, 列名称2          --先按照 列名称1 来排序,相同的按照 类名称2 来排序!

    实例:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A6个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● INSERT INTO 语句

    1. INSERT INTO 语句用于向表格中插入新的行。
    2. INSERT INTO

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

      我们也可以指定所要插入数据的列:

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

    实例1:

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

    实例2:

    INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A7个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● UPDATE 语句

    1. Update 语句用于修改表中的数据。

    2. Update 语法:

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

    更新某一行中的一个列:

    UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' 

    更新某一行中的若干列:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A8个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● DELETE 语句

    1. DELETE 语句用于删除表中的行。

    2. DELETE 语法:

    DELETE FROM 表名称 WHERE 列名称 = 值

    删除所有行:

      可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

    DELETE FROM table_name

      或者:

    DELETE * FROM table_name

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第A9个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● TOP 子句

    1. TOP 子句用于规定要返回的记录的数目。

    2. SQL Server 中的 TOP 语法:

    SELECT TOP number|percent column_name(s)
    FROM table_name

    实例:

    SELECT TOP 2 * FROM Persons
    SELECT TOP 50 PERCENT * FROM Persons

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G1个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● LIKE 操作符

    1. LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

    2. LIKE 语法:

    SELECT column_name(s)
    FROM table_name
    WHERE column_name LIKE pattern

    实例一:

    SELECT * FROM Persons
    WHERE City LIKE 'N%'

    ※ "%" 可用于定义通配符(模式中缺少的字母)。

    ※ 通过使用 NOT 关键字,可以取反!

    ※ "_" 仅替代一个字符。

    实例二:

    SELECT * FROM Persons
    WHERE City NOT LIKE '%l_on%'

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G2个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● 通配符

    1. 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。

    通配符描述
    % 替代一个或多个字符
    _ 仅替代一个字符
    [charlist] 字符列中的任何单一字符

    [^charlist]

    或者

    [!charlist]

    不在字符列中的任何单一字符










    例子一:从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

    SELECT * FROM Persons
    WHERE City LIKE '[ALN]%'

    例子二:从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

    SELECT * FROM Persons
    WHERE City LIKE '[!ALN]%'

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G3个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● IN 操作符

    1. IN 操作符允许我们在 WHERE 子句中规定多个值。
    2. IN 语法:

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)

    实例:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G4个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● BETWEEN 操作符

    1. 操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
    2. BETWEEN 语法:

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

    实例一:SQL Server 返回边界及其中间的部分!

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

    实例二:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G5个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● Alias(别名)

    1. 通过使用 SQL,可以为列名称和表名称指定别名(Alias)。

    2. Alias 语法:

    SELECT column_name(s)
    FROM table_name
    AS alias_name

      列的语法:

    SELECT column_name AS alias_name
    FROM table_name

    实例一:使用别名

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

      不使用别名

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

    实例二:

    SELECT LastName AS Family, FirstName AS Name
    FROM Persons

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G6个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● JOIN 关键字

    1. join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
      数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

    实例一:

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

    实例二:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G7个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● INNER JOIN 关键字

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

    2. INNER JOIN 语法:

    SELECT column_name(s)
    FROM table_name1
    INNER JOIN table_name2
    ON table_name1.column_name=table_name2.column_name

    实例:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G8个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● LEFT JOIN 关键字

    1. LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

    2. LEFT JOIN 语法:

    SELECT column_name(s)
    FROM table_name1
    LEFT JOIN table_name2
    ON table_name1.column_name=table_name2.column_name

    实例:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第G9个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● RIGHT JOIN 关键字

    1. RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
    2. RIGHT JOIN 语法:

    SELECT column_name(s)
    FROM table_name1
    RIGHT JOIN table_name2
    ON table_name1.column_name=table_name2.column_name

    实例:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U1个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● FULL JOIN 关键字

    1. 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
    2. FULL JOIN 语法:

    SELECT column_name(s)
    FROM table_name1
    FULL JOIN table_name2
    ON table_name1.column_name=table_name2.column_name

    实例:

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

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U2个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● UNION 和 UNION ALL 关键字

    1. UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

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

    2. UNION 语法:

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

      UNION ALL 语法:

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

    实例一:合并相同的部分

    SELECT E_Name FROM Employees_China
    UNION
    SELECT E_Name FROM Employees_USA

    实例二:显示全部

    SELECT E_Name FROM Employees_China
    UNION ALL
    SELECT E_Name FROM Employees_USA

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U3个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● SELECT INTO 语句

    1. SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

    2. SELECT INTO 语法:把所有的列插入新表:

    SELECT *
    INTO new_table_name [IN externaldatabase]
    FROM old_tablename

      只把希望的列插入新表:

    SELECT column_name(s)
    INTO new_table_name [IN externaldatabase]
    FROM old_tablename

    实例一:

    SELECT *
    INTO Persons_backup
    FROM Persons

    实例二:

    SELECT LastName,Firstname
    INTO Persons_backup
    FROM Persons
    WHERE City='Beijing'

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U4个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● CREATE DATABASE 语句

    1. CREATE DATABASE 用于创建数据库。

    2. CREATE DATABASE 语法:

    CREATE DATABASE database_name

    实例:

    CREATE DATABASE my_db

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U5个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● CREATE TABLE 语句

    1. CREATE TABLE 语句用于创建数据库中的表。

    2. CREATE TABLE 语法:

    CREATE TABLE 表名称
    (
    列名称1 数据类型,
    列名称2 数据类型,
    列名称3 数据类型,
    ....
    )

    实例一:字符类型:

    复制代码
    CREATE TABLE Persons
    (
    Id_P int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    复制代码

    实例二:NOT NULL:

    复制代码
    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    复制代码

    实例三:UNIQUE:

    复制代码
    CREATE TABLE Persons
    (
    Id_P int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    复制代码

    实例四:PRIMARY KEY:

    复制代码
    CREATE TABLE Persons
    (
    Id_P int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    复制代码

    实例五:FOREIGN KEY:

    CREATE TABLE Orders
    (
    O_Id int NOT NULL PRIMARY KEY,
    OrderNo int NOT NULL,
    Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
    )

    实例六:CHECK:

    复制代码
    CREATE TABLE Persons
    (
    Id_P int NOT NULL CHECK (Id_P>0),
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    复制代码

    实例七:DEFAULT:

    复制代码
    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) DEFAULT 'Sandnes'
    )
    复制代码

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U6个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● CREATE INDEX 语句

    1. CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
    2. CREATE INDEX 语法:

    CREATE INDEX index_name
    ON table_name (column_name)

    实例一:

    CREATE INDEX PersonIndex
    ON Person (LastName)

    实例二:降序:

    CREATE INDEX PersonIndex
    ON Person (LastName DESC)

    实例三:多个列:

    CREATE INDEX PersonIndex
    ON Person (LastName, FirstName)

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U7个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● DROP(撤销索引、表以及数据库)

    1. 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。

    2. DROP INDEX 语法:

    DROP INDEX table_name.index_name

      DROP TABLE 语法:

    DROP TABLE 表名称

      DROP DATABASE 语法:

    DROP DATABASE 数据库名称

      如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?

    请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):

    TRUNCATE TABLE 表名称

    --------------------------------------------------------------------------------------------------------------

                ╔════════╗
    ╠════╣    第U8个    ╠══════════════════════════════════════════════════╣
                ╚════════╝

    ●·● ALTER TABLE 语句

    1. ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

    2. ALTER TABLE 语法:添加列:

    ALTER TABLE table_name
    ADD column_name datatype

      删除列:

    ALTER TABLE table_name 
    DROP COLUMN column_name



    作者:McDelfino 
    出处:http://www.cnblogs.com/alex-bn-lee/ 
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,谢谢!
  • 相关阅读:
    2018-06-20 利用随机数组进行36选7(不重复)
    2018-06-20 js字符串函数
    2018-06-19 js DOM对象
    2018-06-19 Javascript 基础2
    《我们应当怎样做需求分析》阅读笔记
    《软件需求模式》阅读笔记03
    《软件需求模式》阅读笔记02
    《软件需求模式》阅读笔记01
    java总结:double取两位小数的多种方法
    梦断代码阅读笔记03
  • 原文地址:https://www.cnblogs.com/khfang/p/5778785.html
Copyright © 2011-2022 走看看