SQL

/*

    约束

    

    primary key

    主键,拥有自定义的UNIQUE约束

    not null

    

    NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

    下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:

    CREATE TABLE Persons

    (

    Id_P int NOT NULL,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255)

    )

    

    unique 不能重复

    UIIQUE约束唯一标识数据库表中的每一条数据记录

    当表已经创建以后添加UNIQUE约束的方法:

    ALTER TABLE Person

    ADD UNIQUE (id_p)

                  删除UNIQUE约束的方法:

    ALTER TABLE Person

    DROP INDEX id_p

    

    foreing key 该字段做完另一个表的主键,联表查询

    外键

    下面的 SQL "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY

    MySQL:

    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)

    )

    

    check 该字段数据必须满足一定条件

    

    default 该字段数据可以给默认值

    id_P int NOT NULL DEFAULT '10'

    在表已经有的情况下

    ALTER TABLE Persons

    ALTER City SET DEFAULT 'ShangHai'

    撤销约束

    ALTER TABLE Persons

    ALTER City DROP DEFAULT

    

    autoincrement 如果该字段数据是整型就会自动加一

    MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。

    默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1

    要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:

    ALTER TABLE Persons AUTO_INCREMENT=10

    排序

    order  默认是正序  desc的倒序,asc是属正序

    eqSELECT Company, OrderNumber FROM orders ORDER By Company DESC, OrderNumber ASC;

    

    插入

    insert into

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

    //指定某些列中插入数据

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

    

    更新

    Update

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

    

    

    删除

    用于删除表中的行

    DELETE FROM 表名称 WHERE 列名称 =

    

    Top 选取前多少的数据

    SELECT TOP 2 * FROM table_name;//选取表中前2个数据

    SELECT TOP 50 PERCENT *FROM Persons//选取表中前50%的数据

    

    LIKE

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

    SELECT * FROM Persons WHERE City LIKE '%g'// 找出以“g”结尾的城市里的人

    SELECT * FROM Persons WHERE City LIKE 'g%'// 找出以“g”开头的城市里的人

    SELECT * FROM Persons WHERE City LIKE '%g%'// 找出城市名字中带有g的人

    

    通配符

    1_

    接下来,我们希望从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er"

    SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'

    

    2[]

    现在,我们希望从上面的 "Persons" 表中选取居住的城市以 "A" "L" "N" 开头的人:

    我们可以使用下面的 SELECT 语句:

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

    

    IN操作符

    IN 操作符允许我们在 WHERE 子句中规定多个值。

    现在,我们希望从上表中选取姓氏为 Adams Carter 的人:

    我们可以使用下面的 SELECT 语句:

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

    

    BETWEEN操作符

    BETWEEN AND

    如需以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人,请使用下面的 SQL

    SELECT * FROM Persons

    WHERE LastName

    BETWEEN 'Adams' AND 'Carter'

    

    NOT BETWEEN AND 在这个范围之外

    

    SQL Alias(别名)

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

    SQL Alias

    表的 SQL Alias 语法

    SELECT column_name(s)

    FROM table_name

    AS alias_name

    列的 SQL Alias 语法

    SELECT column_name AS alias_name

    FROM table_name

    

    

    JOIN

    SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

第一种方法

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

    FROM Persons, Orders

    WHERE Persons.Id_P = Orders.Id_P

    不用join,直接判断Persond主键等于Orders的副键两个键名一样

第二种方法

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

    FROM Persons

    INNER JOIN

    ON Persons.Id_P = Orders.Id_P

   

    INNER JOIN(内连接)

    下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

    JOIN: 如果表中有至少一个匹配,则返回行

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

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

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

    

    SQL UNION 操作符

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

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

    SQL UNION 语法

    SELECT column_name(s) FROM table_name1

    UNION

    SELECT column_name(s) FROM table_name2

    注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL

    

    INTO 备份 制作附件

    

    下面的例子会制作 "Persons" 表的备份复件:

    SELECT *

    INTO Persons_backup

    FROM Persons

    IN 子句可用于向另一个数据库中拷贝表:

    SELECT *

    INTO Persons IN 'Backup.mdb'

    FROM Persons

    如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:

    SELECT LastName,FirstName

    INTO Persons_backup

    FROM Persons

    

    SQL SELECT INTO 实例 - 被连接的表

    从一个以上的表中选取数据也是可以做到的。

    下面的例子会创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从 Persons Orders 两个表中取得的信息:

    SELECT Persons.LastName,Orders.OrderNo

    INTO Persons_Order_Backup

    FROM Persons

    INNER JOIN Orders

    ON Persons.Id_P=Orders.Id_P

    

    创建数据库

    CREATER BATABASE my_dataDase

    

    创建数据库表

    CREATER TABLE

    eq

    本例演示如何创建名为 "Person" 的表。

    该表包含 5 个列,列名分别是:"Id_P""LastName""FirstName""Address" 以及 "City"

    CREATE TABLE Persons

    (

    Id_P int,

    LastName varchar(255),

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255)

    )

    Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。

    

    CREATE INDEX语句

    

    DROP语句

    DROP TABLE 表名称

    DROP DATABASE 数据库名

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

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

    TRUNCATE TABLE 表名称

    

    

    VIEW 视图是可视化的表

    视图是可视化的表

    SQL CREATE VIEW 语法

    CREATE VIEW view_name AS

    SELECT column_name(s)

    FROM table_name

    WHERE condition

    注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

    

    Date

    

    NULL

    如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。

    NULL 值的处理方式与其他值不同。

    NULL 用作未知的或不适用的值的占位符。

    注释:无法比较 NULL 0;它们是不等价的。

    我们如何仅仅选取在 "Address" 列中带有 NULL 值的记录呢?

    我们必须使用 IS NULL 操作符:

    SELECT LastName,FirstName,Address FROM Persons

    WHERE Address IS NULL

    

    如果两个数相加如果其中一个是NULL 那么结果也是NULL,不过可以用函数解决

    

    函数Group By 

    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

    

    HAVING 子句

    SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。相当于WHERE关键字

 

    UCASE() 函数

    UCASE 函数把字段的值转换为大写。

 

    LCASE() 函数

    LCASE 函数把字段的值转换为小写。

    

    MID() 函数

    MID 函数用于从文本字段中提取字符。

    SQL MID() 语法

    SELECT MID(column_name,start[,length]) FROM table_name

    参数 描述

    column_name 必需。要提取字符的字段。

    start 必需。规定开始位置(起始值是 1)。

    length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

 

    LEN() 函数

    LEN 函数返回文本字段中值的长度。

    

    ROUND() 函数

    ROUND 函数用于把数值字段舍入为指定的小数位数。

    SQL ROUND() 语法

    SELECT ROUND(column_name,decimals) FROM table_name

    参数

    */

原文地址:https://www.cnblogs.com/naizui/p/5211587.html