zoukankan      html  css  js  c++  java
  • sql基础语句大杂烩

    (坑Open Office,这排版。。。)

    1distinct列出不同值,过滤掉相同的值


    例:company中有两个相同的值比如(appleapple)时,则只取出一个值
    SELECT DISTINCT Company FROM Orders 
    只会列出一个apple
    
    2、通配符


    通配符

    描述

    %

    替代一个或多个字符

    _

    仅替代一个字符

    [charlist]

    字符列中的任何单一字符

    [^charlist]

    或者

    [!charlist]

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


    3BETWEEN 操作符

    操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
    例:SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

    注:mysql会将adamscarter都放入结果集。

    如需使用上面的例子显示范围之外的人,请使用 NOT 操作符:

    SELECT * FROM Persons
    WHERE LastName
    NOT BETWEEN 'Adams' AND 'Carter'
    4、表连接

    1LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

    例:
    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
    说明:LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。 左表会全部列出,右表有则列出,没有则空。

    2RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

    例:

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

    说明:RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

    3FULL JOIN: 只要其中一个表中存在匹配,就返回行

    例:

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

    说明:FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

    4JOIN 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

    说明:INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。

    5union

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。w3c上:列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 但是依据实际操作如下图好像不需要数据类型相同,待深究!)

    union会过滤掉重复值,union all不会

    例: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
    当两张表结果集对应的列名不同时,结果集中列名为第一张表列名



    6SELECT INTO

    SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

    SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

    Select into 可以加where条件

    1、(1SELECT * INTO Persons_backup FROM Persons备份整张表

    2SELECT * INTO Persons IN 'Backup.mdb' FROM Persons 向另外一个数据库中copy

    2SELECT LastName,FirstName INTO Persons_backup FROM Persons只拷贝某些列

    3SELECT Persons.LastName,Orders.OrderNo INTO Persons_Order_Backup FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P 利用表连接copy表。

    7、表约束(Constraints

    (1)not null

    (2)PRIMARY KEY 拥有自动定义的 UNIQUE 约束

    例: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)

    )

    如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:

    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)
    )
    当表已被创建时,如需在 "Id_P" 列创建 UNIQUE 约束,请使用下列 SQL
    ALTER TABLE Persons ADD UNIQUE (Id_P)
    如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
    ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
    如需撤销 UNIQUE 约束,请使用下面的 SQL ALTER TABLE Persons DROP INDEX uc_PersonID
    (3)SQL PRIMARY KEY 约束(主键)
    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)
    )
    如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
    CREATE TABLE Persons(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
    )
    如果在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束,请使用下面的 SQL
    ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
    
    
    如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
    ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
    如果使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。
    
    如需撤销 PRIMARY KEY 约束,请使用下面的 SQLALTER TABLE Persons DROP PRIMARY KEY
    (4)SQL FOREIGN KEY 约束(外键)
    一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
    例:
    CREATE TABLE Orders(
    Id_O int NOT NULL,
    OrderNo int NOT NULL,
    Id_P int,
    PRIMARY KEY (Id_O),
    FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
    )
    5SQL CHECK 约束

    CHECK 约束用于限制列中的值的范围。

    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

    如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

    例:
    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)
    )
    
    
    8create index(创建索引)
    CREATE INDEX index_name ON table_name (column_name)
    创建唯一索引:CREATE UNIQUE INDEX index_name ON table_name (column_name)
    创建一个名为PersonIndex的索引 CREATE INDEX PersonIndex ON Person (LastName) 
    如果希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC CREATE INDEX PersonIndex ON Person (LastName DESC) 
    希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开: CREATE INDEX PersonIndex ON Person (LastName, FirstName)
    删除索引ALTER TABLE table_name DROP INDEX index_name
    9ALTER语句

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

    添加列: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



    
    
















  • 相关阅读:
    java图片加文字
    [转]NetBeans优化技巧 提升启动速度
    重建win7桌面图标缓存
    负载测试(Load Test)
    乐观锁与悲观琐的区别
    事物锁表问题
    建立silverlight安装环境
    持续集成ccnet
    C# AppDomain
    Windows Services
  • 原文地址:https://www.cnblogs.com/orlion/p/4810249.html
Copyright © 2011-2022 走看看