SQL高级

一、SQL TOP子句

    注释:并非所有的数据库系统都支持TOP子句。

    1、MySQL的语法
        SELECT column_name(s) FROM table_name LIMIT number

    2、SQL Server语法
        SELECT TOP number|percent column_name(s) FROM table_name

    3、ORACLE语法
        SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

二、SQL LIKE操作符

    1、SQL LIKE操作符语法
        SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern

三、SQL通配符
    通配符        描述
    %               替代一个或多个字符
    _                仅替代一个字符
    [charlist]     字符列中的任何单一字符
    [^charlist]
    或者           不在字符列中的任何单一字符
    [!charlist]

四、IN操作符

    1、SQL IN语法
        SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)

五、SQL BETWEEN操作符

    1、SQL BETWEEN语法
        SELECT column_name(s) FROM table_name WHERE column_name (NOT) BETWEEN value1 AND value2

    重要事项:不同的数据库对BETWEEN…AND操作符的处理方式是有差异的。某些数据库会列出介于”value1”和”value2”之间的值,但不包括”value1”和”value2”;某些数据库会列出介于”value1”和”value2”之间并包括”value1”和”value2”的值;而另一些数据库会列出介于”value1”和”value2”之间的人,包括”value1”但不包括”value2”。

六、SQL Alias(别名)

    1、表的SQL Alias语法
        SELECT column_name(s) FROM table_name AS alias_name

    2、列的SQL Alias语法:
        SELECT column_name AS alias_name FROM table_name

七、SQL JOIN

    1、不同的SQL JOIN
        ·JOIN:如果表中有至少一个匹配,则返回行
        ·INNER JOIN:如果表中有至少一个匹配,则返回行
        ·LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
        ·RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
        ·FULL JOIN:只要其中一个表中存在匹配,就返回行

八、SQL INNER JOIN关键字

    1、INNER JOIN关键字语法
        SELECT column_name(s)
        FROM table_name1
        INNER JOIN table_name2
        ON table_name1.column_name=table_name2.column_name

九、SQL LEFT JOIN关键字

    1、LEFT JOIN关键字语法
        SELECT column_name(s)
        FROM table_name1
        LEFT JOIN table_name2
        ON table_name1.column_name=table_name2.column_name

十、SQL RIGHT JOIN关键字

    1、RIGHT JOIN关键字语法
        SELECT column_name(s)
        FROM table_name1
        RIGHT JOIN table_name2
        ON table_name1.column_name=table_name2.column_name

十一、SQL FULL JOIN关键字

    1、FULL JOIN关键字语法
        SELECT column_name(s)
        FROM table_name1
        FULL JOIN table_name2
        ON table_name1.column_name=table_name2.column_name

十二、SQL UNION和UNION ALL操作符

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

    1、SQL UNION语法
        SELECT column_name(s) FROM table_name1
        UNION
        SELECT column_name(s) FROM table_name2

    2、SQL UNION ALL语法
        SELECT column_name(s) FROM table_name1
        UNION ALL
        SELECT column_name(s) FROM table_name2

十三、SQL SELECT INTO语句

    SQL SELECT INTO语法:

    1、您可以把所有的列插入新表
        SELECT *
        INTO new_table_name [IN externaldatabase]
        FROM old_tablename

    2、或者只把希望的列插入新表
        SELECT column_name(s)
        INTO new_table_name [IN externaldatabase]
        FROM old_tablename

十四、SQL CREATE DATABASE语句

    1、SQL CREATE DATABASE语法
        CREATE DATABASE database_name

十五、SQL CREATE TABLE语句

    1、SQL CREATE TABLE语法
        CREATE TABLE表名称
        (
            列名称1 数据类型,
            列名称2 数据类型,
            列名称3 数据类型,
            …
        )

    2、SQL中最常用的数据类型(data_type)
        数据类型                   描述
        Integer(size)             仅容纳整数。在括号内规定数字的最大位数。
        int(size)
        smallint(size)
        tinyint(size)
        decimal(size,d)        容纳带有小数的数字。
        numeric(size,d)        “size”规定数字的最大位数。”d”规定小数点右侧的最大位数。
        char(size)                容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符串的长度。
        varchar(size)           容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。
        date(yyyymmdd)      容纳日期

十六、SQL约束(Constraints)

    可以在创建表时规定约束(通过CREATE TABLE语句),或者在表创建之后也可以(通过ALTER TABLE语句)。

    几种约束:
        ·NTO NULL
        ·UNIQUE
        ·PRIMARY KEY
        ·FOREIGN KEY
        ·CHECK
        ·DEFAULT

十七、SQL NOT NULL约束

    实例:
        CREATE TABLE Persons
        (
            Id_P int NOT NULL,
            LastName varchar(255) NOT NULL,
            FirstName varchar(255),
            Address varchar(255),
            City varchar(255)
        )

十八、SQL UNIQUE 约束

    1、SQL UNIQUE Constraint on CREATE TABLE

        A、MySQL
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255),
                UNIQUE (Id_P)
            )

        B、SQL Server / Oracle / MS Access
            CREATE TABLE Persons
            (
                Id_P int NOT NULL UNIQUE,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255)
            )

       C、MySQL / SQL Server / Oracle / MS Access
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255),
                CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
            )

    2、SQL UNIQUE Constraint on ALTER TABLE

        A、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ADD UNIQUE (Id_P)

        B、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

    3、撤销 UNIQUE 约束

        A、MySQL:
             ALTER TABLE Persons
             DROP INDEX uc_PersonID

        B、SQL Server / Oracle / MS Access:
             ALTER TABLE Persons
             DROP CONSTRAINT uc_PersonID

十九、SQL PRIMARY KEY 约束

    1、SQL PRIMARY KEY Constraint on CREATE TABLE

        A、MySQL
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255),
                PRIMARY KEY (Id_P)
            )

        B、SQL Server / Oracle / MS Access
            CREATE TABLE Persons
            (
                Id_P int NOT NULL PRIMARY KEY,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255)
            )

        C、MySQL / SQL Server / Oracle / MS Access
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255),
                CONSTRAINT uc_PersonID PRIMARY KEY (Id_P,LastName)

            )

    2、SQL PRIMARY KEY Constraint on ALTER TABLE

        A、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ADD PRIMARY KEY (Id_P)

        B、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

    3、撤销 PRIMARY KEY 约束

        A、MySQL
            ALTER TABLE Persons
            DROP PRIMARY KEY

        B、SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            DROP CONSTRAINT pk_PersonID

二十、SQL FOREIGN KEY 约束

    1、SQL FOREIGN KEY Constraint on CREATE TABLE

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

        B、SQL Server / Oracle / MS Access
            CREATE TABLE Orders
            (
                O_Id int NOT NULL PRIMARY KEY,
                OrderNo int NOT NULL,
                Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
            )

        C、MySQL / SQL Server / Oracle / MS Access
            CREATE TABLE Orders
            (
                O_Id int NOT NULL,
                OrderNo int NOT NULL,
                Id_P int,
                PRIMARY KEY (O_Id),
                CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
                REFERENCES Persons(Id_P)
            )

    2、SQL FOREIGN KEY Constraint on ALTER TABLE

        A、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Orders
            ADD FOREIGN KEY (Id_P)
            REFERENCES Persons(Id_P)

        B、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Orders
            ADD CONSTRAINT fk_PerOrders
            FOREIGN KEY (Id_P)
            REFERENCES Persons(Id_P)

    3、撤销 FOREIGN KEY 约束

        A、MySQL
            ALTER TABLE Orders
            DROP FOREIGN KEY fk_PerOrders

        B、SQL Server / Oracle / MS Access
            ALTER TABLE Orders
            DROP CONSTRAINT fk_PerOrders

二十一、SQL CHECK 约束

    1、SQL CHECK Constraint on CREATE TABLE

        A、My SQL
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255),
                CHECK (Id_P>0)
            )

        B、SQL Server / Oracle / MS Access
            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)
            )

        C、MySQL / SQL Server / Oracle / MS Access
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255),
                CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
            )

    2、SQL CHECK Constraint on ALTER TABLE

        A、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ADD CHECK (Id_P>0)

        B、MySQL / SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

    3、撤销 CHECK 约束

        A、MySQL
            ALTER TABLE Persons
            DROP CHECK chk_Person

        B、SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            DROP CONSTRAINT chk_Person

二十二、SQL DEFAULT 约束

    1、SQL DEFAULT Constraint on CREATE TABLE

        A、My SQL / SQL Server / Oracle / MS Access
            CREATE TABLE Persons
            (
                Id_P int NOT NULL,
                LastName varchar(255) NOT NULL,
                FirstName varchar(255),
                Address varchar(255),
                City varchar(255) DEFAULT 'Sandnes'
            )

    2、SQL DEFAULT Constraint on ALTER TABLE

        A、MySQL
            ALTER TABLE Persons
            ALTER City SET DEFAULT 'SANDNES'

        B、SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ALTER COLUMN City SET DEFAULT 'SANDNES'

    3、撤销 DEFAULT 约束

        A、MySQL
            ALTER TABLE Persons
            ALTER City DROP DEFAULT

        B、SQL Server / Oracle / MS Access
            ALTER TABLE Persons
            ALTER COLUMN City DROP DEFAULT

二十三、SQL CREATE INDEX 语句

    1、SQL CREATE INDEX 语法
        CREATE INDEX index_name
        ON table_name (column_name)

    2、SQL CREATE UNIQUE INDEX 语法
        CREATE UNIQUE INDEX index_name
        ON table_name (column_name2[DESC][ ,column_name2])

二十四、SQL DROP 撤销索引、表以及数据库

    1、SQL DROP INDEX 语句

        A、用于 MySQL 的语法
            ALTER TABLE table_name DROP INDEX index_name

        B、用于 Microsoft SQLJet (以及 Microsoft Access) 的语法
            DROP INDEX index_name ON table_name

        C、用于 MS SQL Server 的语法
            DROP INDEX table_name.index_name

        D、用于 IBM DB2 和 Oracle 语法
            DROP INDEX index_name

    2、SQL DROP TABLE 语句
        DROP TABLE 表名称

    3、SQL DROP DATABASE 语句
        DROP DATABASE 数据库名称

    4、SQL TRUNCATE TABLE 语句
         TRUNCATE TABLE 表名称

二十五、SQL ALTER TABLE 语句

    SQL ALTER TABLE语法:

    1、如需在表中添加列,请使用下列语法
        ALTER TABLE table_name
        ADD column_name datatype

    2、要改变表中列的数据类型,请使用下列语法
        ALTER TABLE table_name
        ALTER COLUMN column_name datatype

    3、要删除表中的列,请使用下列语法
        ALTER TABLE table_name        DROP COLUMN column_name
        注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。

二十六、SQL AUTO INCREMENT 字段

    1、用于 MySQL 的语法

        CREATE TABLE Persons
        (
            P_Id int NOT NULL AUTO_INCREMENT,
            LastName varchar(255) NOT NULL,
            FirstName varchar(255),
            Address varchar(255),
            City varchar(255),
            PRIMARY KEY (P_Id)
        )

        ALTER TABLE Persons AUTO_INCREMENT=100

    2 、用于 SQL Server 的语法
        CREATE TABLE Persons
        (
            P_Id int PRIMARY KEY IDENTITY,
            LastName varchar(255) NOT NULL,
            FirstName varchar(255),
            Address varchar(255),
            City varchar(255)
        )

    3、用于 Access 的语法
        CREATE TABLE Persons
        (
            P_Id int PRIMARY KEY AUTOINCREMENT,
            LastName varchar(255) NOT NULL,
            FirstName varchar(255),
            Address varchar(255),
            City varchar(255)
        )

    4、用于 Oracle 的语法

        CREATE SEQUENCE seq_person
        MINVALUE 1
        START WITH 1
        INCREMENT BY 1
        CACHE 10
        INSERT INTO Persons (P_Id,FirstName,LastName)

        VALUES (seq_person.nextval,'Lars','Monsen')

二十七、SQL VIEW(视图)

    1、SQL CREATE VIEW 语法
        CREATE VIEW view_name AS
        SELECT column_name(s)
        FROM table_name
        WHERE condition

    2、SQL 更新视图
        SQL CREATE OR REPLACE VIEW Syntax
        CREATE OR REPLACE VIEW view_name AS
        SELECT column_name(s)
        FROM table_name
        WHERE condition

    3、SQL 撤销视图
        SQL DROP VIEW Syntax
        DROP VIEW view_name

二十八、SQL Date 函数

二十九、SQL NULL ISNULL值

    1、SQL IS NULL:
        SELECT LastName,FirstName,Address FROM Persons
        WHERE Address IS NULL

    2、SQL IS NOT NULL
        SELECT LastName,FirstName,Address FROM Persons
        WHERE Address IS NOT NULL

三十、SQL IFNULL COALESCE ISNULL NVL函数

    1、MySQL
        SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
        FROM Products
        SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
        FROM Products

    2、SQL Server / MS Access
        SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
        FROM Products

    3、Oracle
        SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
        FROM Products

三十一、SQL 数据类型

三十二、SQL 服务器 – RDBMS

    1、DBMS - 数据库管理系统(Database Management System)
        数据库管理系统是一种可以访问数据库中数据的计算机程序。DBMS 使我们有能力在数据库中提取、修改或者存贮信息。不同的 DBMS 提供不同的函数供查询、提交以及修改数据。

    2、RDBMS - 关系数据库管理系统(Relational Database Management System)
        关系数据库管理系统 (RDBMS) 也是一种数据库管理系统,其数据库是根据数据间的关系来组织和访问数据的。20 世纪 70 年代初,IBM 公司发明了 RDBMS。RDBMS 是 SQL 的基础,也是所有现代数据库系统,诸如 Oracle、SQL Server、IBM DB2、Sybase、MySQL 以及 Microsoft Access 的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值