SQL高級(jí)

**SQL TOP 子句

TOP 子句用于規(guī)定要返回的記錄的數(shù)目技健。

對(duì)于擁有數(shù)千條記錄的大型表來(lái)說(shuō),TOP 子句是非常有用的沮榜。

注意:并非所有的數(shù)據(jù)庫(kù)系統(tǒng)都支持 TOP 子句坎吻。

SQL Server 的語(yǔ)法:

SELECT TOP number|percent column_name(s)
FROM table_name

MySQL 和 Oracle 中的 SQL SELECT TOP 是等價(jià)的

MySQL 語(yǔ)法

SELECT column_name(s)
FROM table_name
LIMIT number

例子

SELECT *
FROM Persons
LIMIT 5

Oracle 語(yǔ)法

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

例子

SELECT *
FROM Persons
WHERE ROWNUM <= 5

現(xiàn)在,我們希望從 "Persons" 表中選取頭兩條記錄晓铆。
我們可以使用下面的 SELECT 語(yǔ)句:

SELECT TOP 2 * FROM Persons

SQL TOP PERCENT 實(shí)例
"Persons" 表中選取 50% 的記錄。

SELECT TOP 50 PERCENT * FROM Persons

SQL LIKE 操作符

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

SQL LIKE 操作符語(yǔ)法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

LIKE 操作符實(shí)例

現(xiàn)在骄噪,我們希望從上面的 "Persons" 表中選取居住在以 "N" 開(kāi)始的城市里的人:
我們可以使用下面的 SELECT 語(yǔ)句:

SELECT * FROM Persons
WHERE City LIKE 'N%'

提示:"%" 可用于定義通配符(模式中缺少的字母)。

接下來(lái)幅垮,我們希望從 "Persons" 表中選取居住在以 "g" 結(jié)尾的城市里的人:
我們可以使用下面的 SELECT 語(yǔ)句:

SELECT * FROM Persons
WHERE City LIKE '%g'

接下來(lái)腰池,我們希望從 "Persons" 表中選取居住在包含 "lon" 的城市里的人:
我們可以使用下面的 SELECT 語(yǔ)句:

SELECT * FROM Persons
WHERE City LIKE '%lon%'

![~$AFAR7DLUE%QDKWL%LC.png

注意:SQL是大小寫不敏感尾组。 '%lon%'中也不區(qū)分大小寫忙芒。

SQL 通配符

在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí)示弓,您可以使用 SQL 通配符。
SQL 通配符
在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí)呵萨,SQL 通配符可以替代一個(gè)或多個(gè)字符奏属。
SQL 通配符必須與 LIKE 運(yùn)算符一起使用。

{0_03LRRPPBG1G6V~AMH$HN.png

使用 [charlist] 通配符
例子 1
現(xiàn)在潮峦,我們希望從上面的 "Persons" 表中選取居住的城市以 "A" 或 "L" 或 "N" 開(kāi)頭的人:
我們可以使用下面的 SELECT 語(yǔ)句:

SELECT * FROM Persons
WHERE City LIKE '[ALN]%'
F83PSIG(TQLQIU_`{89}ZGE.png

例子 2
現(xiàn)在囱皿,我們希望從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開(kāi)頭的人:
我們可以使用下面的 SELECT 語(yǔ)句:

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

![%MNRL}YZWP]OGCJ$1AQT~%3.png](http://upload-images.jianshu.io/upload_images/1197462-6edcdc0464960afd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

SQL IN 操作符

IN 操作符允許我們?cè)?WHERE 子句中規(guī)定多個(gè)值。
SQL IN 語(yǔ)法

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

IN 操作符實(shí)例
現(xiàn)在忱嘹,我們希望從上表中選取姓氏為 Adams 和 Carter 的人:
我們可以使用下面的 SELECT 語(yǔ)句:

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

SQL BETWEEN 操作符

BETWEEN 操作符在 WHERE 子句中使用嘱腥,作用是選取介于兩個(gè)值之間的數(shù)據(jù)范圍。
BETWEEN 操作符
操作符 BETWEEN ... AND 會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍拘悦。這些值可以是數(shù)值齿兔、文本或者日期。

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
BNNDHT1B%4X%JG`PURIVYO9.png

BETWEEN 操作符實(shí)例
如需以字母順序顯示介于 "Adams"(包括)和 "Carter"(不包括)之間的人础米,請(qǐng)使用下面的 SQL:

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'
RFBZ_EIO4VDQMHILX5T4J47.png

SQL Alias(別名)

通過(guò)使用 SQL分苇,可以為列名稱和表名稱指定別名(Alias)。

表的 SQL Alias 語(yǔ)法

SELECT column_name(s)
FROM table_name
AS alias_name

列的 SQL Alias 語(yǔ)法

SELECT column_name AS alias_name
FROM table_name

Alias 實(shí)例:
使用表名稱別名
假設(shè)我們有兩個(gè)表分別是:"Persons" 和 "Product_Orders"屁桑。我們分別為它們指定別名 "p" 和 "po"医寿。
現(xiàn)在,我們希望列出 "John Adams" 的所有定單蘑斧。

我們可以使用下面的 SELECT 語(yǔ)句:

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

不使用別名的 SELECT 語(yǔ)句:

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

從上面兩條 SELECT 語(yǔ)句您可以看到靖秩,別名使查詢程序更易閱讀和書寫。

Alias 實(shí)例: 使用一個(gè)列名別名

SQL:

SELECT LastName AS Family, FirstName AS Name
FROM Persons

SQL JOIN

SQL join 用于根據(jù)兩個(gè)或多個(gè)表中的列之間的關(guān)系竖瘾,從這些表中查詢數(shù)據(jù)沟突。

Join 和 Key
有時(shí)為了得到完整的結(jié)果,我們需要從兩個(gè)或更多的表中獲取結(jié)果准浴。我們就需要執(zhí)行 join事扭。

數(shù)據(jù)庫(kù)中的表可通過(guò)鍵將彼此聯(lián)系起來(lái)。主鍵(Primary Key)是一個(gè)列乐横,在這個(gè)列中的每一行的值都是唯一的求橄。在表中,每個(gè)主鍵的值都是唯一的葡公。這樣做的目的是在不重復(fù)每個(gè)表中的所有數(shù)據(jù)的情況下罐农,把表間的數(shù)據(jù)交叉捆綁在一起。

引用兩個(gè)表

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

SQL JOIN - 使用 Join

除了上面的方法催什,我們也可以使用關(guān)鍵詞 JOIN 來(lái)從兩個(gè)表中獲取數(shù)據(jù)涵亏。
如果我們希望列出所有人的定購(gòu),可以使用下面的 SELECT 語(yǔ)句:
除了上面的方法,我們也可以使用關(guān)鍵詞 JOIN 來(lái)從兩個(gè)表中獲取數(shù)據(jù)气筋。

如果我們希望列出所有人的定購(gòu)拆内,可以使用下面的 SELECT 語(yǔ)句:

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

不同的 SQL JOIN

除了我們?cè)谏厦娴睦又惺褂玫?INNER JOIN(內(nèi)連接),我們還可以使用其他幾種連接宠默。
下面列出了您可以使用的 JOIN 類型麸恍,以及它們之間的差異。
JOIN: 如果表中有至少一個(gè)匹配搀矫,則返回行
LEFT JOIN: 即使右表中沒(méi)有匹配抹沪,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒(méi)有匹配,也從右表返回所有的行
FULL JOIN: 只要其中一個(gè)表中存在匹配瓤球,就返回行

SQL INNER JOIN 關(guān)鍵字

在表中存在至少一個(gè)匹配時(shí)融欧,INNER JOIN 關(guān)鍵字返回行。

INNER JOIN 關(guān)鍵字語(yǔ)法

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

內(nèi)連接(INNER JOIN)實(shí)例

現(xiàn)在卦羡,我們希望列出所有人的定購(gòu)噪馏。
您可以使用下面的 SELECT 語(yǔ)句:

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

SQL LEFT JOIN 關(guān)鍵字
LEFT JOIN 關(guān)鍵字會(huì)從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒(méi)有匹配的行虹茶。
LEFT JOIN 關(guān)鍵字語(yǔ)法

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

注釋:在某些數(shù)據(jù)庫(kù)中逝薪, LEFT JOIN 稱為 LEFT OUTER JOIN。

![A${KPSJ0]K5_C_@XI088AZ3.png](http://upload-images.jianshu.io/upload_images/1197462-be70c0c3525a0888.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
現(xiàn)在蝴罪,我們希望列出所有的人董济,以及他們的定購(gòu) - 如果有的話。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
%2CDQG}HDXAWAH35(})J8(O.png

LEFT JOIN 關(guān)鍵字會(huì)從左表 (Persons) 那里返回所有的行要门,即使在右表 (Orders) 中沒(méi)有匹配的行虏肾。

SQL RIGHT JOIN 關(guān)鍵字

RIGHT JOIN 關(guān)鍵字會(huì)右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中沒(méi)有匹配的行欢搜。

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

在某些數(shù)據(jù)庫(kù)中封豪,RIGHT JOIN稱為RIGHT OUTER JOIN

右連接(RIGHT JOIN)實(shí)例
現(xiàn)在炒瘟,我們希望列出所有的定單吹埠,以及定購(gòu)它們的人 - 如果有的話。
您可以使用下面的 SELECT 語(yǔ)句:

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 關(guān)鍵字會(huì)從右表 (Orders) 那里返回所有的行疮装,即使在左表 (Persons) 中沒(méi)有匹配的行缘琅。

SQL FULL JOIN 關(guān)鍵字

只要其中某個(gè)表存在匹配,FULL JOIN關(guān)鍵字就會(huì)返回行廓推。

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

注釋:在某些數(shù)據(jù)庫(kù)中刷袍, FULL JOIN 稱為 FULL OUTER JOIN。

全連接(FULL JOIN)實(shí)例
現(xiàn)在樊展,我們希望列出所有的人呻纹,以及他們的定單堆生,以及所有的定單,以及定購(gòu)它們的人雷酪。
您可以使用下面的 SELECT 語(yǔ)句:

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

![52RB]4{EH}DPF%BRD5_WVHO.png](http://upload-images.jianshu.io/upload_images/1197462-33b508a6c83eacb7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

SQL UNION 和 UNION ALL 操作符
SQL UNION 操作符
UNION操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集淑仆。

請(qǐng)注意,UNION 內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列太闺。列也必須擁有相似的數(shù)據(jù)類型糯景。同時(shí)嘁圈,每條 SELECT 語(yǔ)句中的列的順序必須相同省骂。

A_1L~1Q}0K_GC2QTK1_S_9B.png
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
EQNSJ%VZC7884P8G59OLOT.png

注釋:這個(gè)命令無(wú)法列出在中國(guó)和美國(guó)的所有雇員。在上面的例子中最住,我們有兩個(gè)名字相同的雇員钞澳,他們當(dāng)中只有一個(gè)人被列出來(lái)了。UNION 命令只會(huì)選取不同的值涨缚。

UNION ALL
UNION ALL 命令和 UNION 命令幾乎是等效的轧粟,不過(guò) UNION ALL 命令會(huì)列出所有的值。

SQL Statement 1
UNION ALL
SQL Statement 2

SQL SELECT INTO 語(yǔ)句

SQL SELECT INTO 語(yǔ)句可用于創(chuàng)建表的備份復(fù)件脓魏。
SELECT INTO 語(yǔ)句

SELECT INTO 語(yǔ)句從一個(gè)表中選取數(shù)據(jù)兰吟,然后把數(shù)據(jù)插入另一個(gè)表中。
SELECT INTO 語(yǔ)句常用于創(chuàng)建表的備份復(fù)件或者用于對(duì)記錄進(jìn)行存檔茂翔。

SQL SELECT INTO 語(yǔ)法
您可以把所有的列插入新表:

SELECT *
INTO new_table_name [IN externaldatabase] 
FROM old_tablename

或者只把希望的列插入新表:

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

SQL SELECT INTO 實(shí)例 - 制作備份復(fù)件
下面的例子會(huì)制作 "Persons" 表的備份復(fù)件:

SELECT *
INTO Persons_backup
FROM Persons

IN后面可以加數(shù)據(jù)庫(kù).

SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons

如果我們希望拷貝某些域混蔼,可以在 SELECT 語(yǔ)句后列出這些域:
就是某些字段:

SELECT LastName,FirstName
INTO Persons_backup
FROM Persons

SQL SELECT INTO 實(shí)例 - 帶有 WHERE 子句:

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

SQL SELECT INTO 實(shí)例 - 被連接的表

從一個(gè)以上的表中選取數(shù)據(jù)也是可以做到的。

下面的例子會(huì)創(chuàng)建一個(gè)名為 "Persons_Order_Backup" 的新表珊燎,其中包含了從 Persons 和 Orders 兩個(gè)表中取得的信息:

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P

SQL CREATE DATABASE 語(yǔ)句

CREATE DATABASE database_name

SQL CREATE TABLE 語(yǔ)句

CREATE TABLE 表名稱
(
列名稱1 數(shù)據(jù)類型,
列名稱2 數(shù)據(jù)類型,
列名稱3 數(shù)據(jù)類型,
....
)

數(shù)據(jù)類型(data_type)規(guī)定了列可容納何種數(shù)據(jù)類型惭嚣。下面的表格包含了SQL中最常用的數(shù)據(jù)類型:

圖片.png

SQL 約束 (Constraints)

約束用于限制加入表的數(shù)據(jù)的類型。
可以在創(chuàng)建表時(shí)規(guī)定約束(通過(guò)CREATE TABLE語(yǔ)句)悔政,或者在表創(chuàng)建之后也可以(通過(guò) ALTER TABLE 語(yǔ)句)晚吞。

NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
  1. SQL NOT NULL 約束:
    NOT NULL 約束強(qiáng)制列不接受 NULL 值。
    NOT NULL 約束強(qiáng)制字段始終包含值谋国。這意味著槽地,如果不向字段添加值,就無(wú)法插入新記錄或者更新記錄芦瘾。

  2. SQL UNIQUE 約束:

UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄捌蚊。
UNIQUEPRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動(dòng)定義的UNIQUE 約束旅急。
請(qǐng)注意逢勾,每個(gè)表可以有多個(gè) UNIQUE約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束藐吮。

SQL UNIQUE Constraint on ALTER TABLE

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD UNIQUE (Id_P)

如需命名 UNIQUE 約束溺拱,并定義多個(gè)列的 UNIQUE 約束逃贝,請(qǐng)使用下面的 SQL 語(yǔ)法:
MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

撤銷 UNIQUE 約束
如需撤銷 UNIQUE 約束,請(qǐng)使用下面的 SQL:
MySQL:

ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
  1. SQL PRIMARY KEY 約束

PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄迫摔。
主鍵必須包含唯一的值沐扳。
主鍵列不能包含 NULL 值。
每個(gè)表都應(yīng)該有一個(gè)主鍵句占,并且每個(gè)表只能有一個(gè)主鍵沪摄。

SQL PRIMARY KEY Constraint on CREATE TABLE

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

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

如果需要命名 PRIMARY KEY 約束,以及為多個(gè)列定義 PRIMARY KEY 約束纱烘,請(qǐng)使用下面的 SQL 語(yǔ)法:

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 pk_PersonID PRIMARY KEY (Id_P,LastName)
)
  1. SQL FOREIGN KEY 約束

一個(gè)表中的FOREIGN KEY 指向另一個(gè)表中的 PRIMARY KEY杨拐。

FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動(dòng)作。
FOREIGN KEY 約束也能防止非法數(shù)據(jù)插入外鍵列擂啥,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一哄陶。

SQL FOREIGN KEY Constraint on CREATE TABLE
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)
)

SQL Server / Oracle / MS Access:

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

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
  1. SQL CHECK 約束

CHECK 約束用于限制列中的值的范圍。
如果對(duì)單個(gè)列定義 CHECK 約束哺壶,那么該列只允許特定的值屋吨。
如果對(duì)一個(gè)表定義 CHECK 約束,那么此約束會(huì)在特定的列中對(duì)值進(jìn)行限制山宾。

SQL CHECK Constraint on CREATE TABLE

下面的 SQL 在 "Persons" 表創(chuàng)建時(shí)為 "Id_P" 列創(chuàng)建 CHECK 約束至扰。CHECK 約束規(guī)定 "Id_P" 列必須只包含大于 0 的整數(shù)。

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

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

如果需要命名 CHECK 約束资锰,以及為多個(gè)列定義 CHECK 約束敢课,請(qǐng)使用下面的 SQL 語(yǔ)法:
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')
)
SQL CHECK Constraint on ALTER TABLE

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CHECK (Id_P>0)
  1. SQL DEFAULT 約束

DEFAULT 約束用于向列中插入默認(rèn)值。
如果沒(méi)有規(guī)定其他的值台妆,那么會(huì)將默認(rèn)值添加到所有的新記錄翎猛。

SQL DEFAULT Constraint on CREATE TABLE

下面的 SQL 在 "Persons" 表創(chuàng)建時(shí)為 "City" 列創(chuàng)建 DEFAULT 約束:
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'
)

通過(guò)使用類似 GETDATE() 這樣的函數(shù),DEFAULT 約束也可以用于插入系統(tǒng)值:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
OrderDate date DEFAULT GETDATE()
)

MySQL:

ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES'

SQL CREATE INDEX 語(yǔ)句

CREATE INDEX 語(yǔ)句用于在表中創(chuàng)建索引接剩。
在不讀取整個(gè)表的情況下切厘,索引使數(shù)據(jù)庫(kù)應(yīng)用程序可以更快地查找數(shù)據(jù)。
索引

可以在表中創(chuàng)建索引懊缺,以便更加快速高效地查詢數(shù)據(jù)疫稿。
用戶無(wú)法看到索引,它們只能被用來(lái)加速搜索/查詢鹃两。

注釋:更新一個(gè)包含索引的表需要比更新一個(gè)沒(méi)有索引的表更多的時(shí)間遗座,這是由于索引本身也需要更新。因此俊扳,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引途蒋。

SQL CREATE INDEX 語(yǔ)法

在表上創(chuàng)建一個(gè)簡(jiǎn)單的索引。允許使用重復(fù)的值:

CREATE INDEX index_name
ON table_name (column_name)

注釋:"column_name" 規(guī)定需要索引的列馋记。

SQL CREATE UNIQUE INDEX 語(yǔ)法

在表上創(chuàng)建一個(gè)唯一的索引号坡。唯一的索引意味著兩個(gè)行不能擁有相同的索引值懊烤。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

CREATE INDEX 實(shí)例
本例會(huì)創(chuàng)建一個(gè)簡(jiǎn)單的索引,名為 "PersonIndex"宽堆,在 Person 表的 LastName 列:

CREATE INDEX PersonIndex
ON Person (LastName) 

如果您希望以降序索引某個(gè)列中的值腌紧,您可以在列名稱之后添加保留字 DESC:

CREATE INDEX PersonIndex
ON Person (LastName DESC) 

假如您希望索引不止一個(gè)列,您可以在括號(hào)中列出這些列的名稱畜隶,用逗號(hào)隔開(kāi):

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

SQL 撤銷索引壁肋、表以及數(shù)據(jù)庫(kù)

通過(guò)使用 DROP 語(yǔ)句,可以輕松地刪除索引籽慢、表和數(shù)據(jù)庫(kù)浸遗。

SQL DROP INDEX 語(yǔ)句
我們可以使用 DROP INDEX 命令刪除表格中的索引。

用于 Microsoft SQLJet (以及 Microsoft Access) 的語(yǔ)法:

DROP INDEX index_name ON table_name

用于 MS SQL Server 的語(yǔ)法:

DROP INDEX table_name.index_name

用于 IBM DB2 和 Oracle 語(yǔ)法:

DROP INDEX index_name

用于 MySQL 的語(yǔ)法:

ALTER TABLE table_name DROP INDEX index_name

SQL DROP TABLE 語(yǔ)句
DROP TABLE 語(yǔ)句用于刪除表(表的結(jié)構(gòu)嗡综、屬性以及索引也會(huì)被刪除):

DROP TABLE 表名稱

SQL DROP DATABASE 語(yǔ)句

DROP DATABASE 語(yǔ)句用于刪除數(shù)據(jù)庫(kù):

DROP DATABASE 數(shù)據(jù)庫(kù)名稱

SQL TRUNCATE TABLE 語(yǔ)句
如果我們僅僅需要除去表內(nèi)的數(shù)據(jù)乙帮,但并不刪除表本身,那么我們?cè)撊绾巫瞿兀?br> 請(qǐng)使用 TRUNCATE TABLE 命令(僅僅刪除表格中的數(shù)據(jù)):

TRUNCATE TABLE 表名稱

SQL ALTER TABLE 語(yǔ)句

ALTER TABLE 語(yǔ)句
ALTER TABLE 語(yǔ)句用于在已有的表中添加极景、修改或刪除列。

SQL ALTER TABLE 語(yǔ)法
如需在表中添加列驾茴,請(qǐng)使用下列語(yǔ)法:.

ALTER TABLE table_name
ADD column_name datatype

要?jiǎng)h除表中的列盼樟,請(qǐng)使用下列語(yǔ)法:

ALTER TABLE table_name 
DROP COLUMN column_name

注釋:某些數(shù)據(jù)庫(kù)系統(tǒng)不允許這種在數(shù)據(jù)庫(kù)表中刪除列的方式 (DROP COLUMN column_name)。
要改變表中列的數(shù)據(jù)類型锈至,請(qǐng)使用下列語(yǔ)法:

ALTER TABLE table_name
ALTER COLUMN column_name datatype

DROP COLUMN 實(shí)例

接下來(lái)晨缴,我們刪除 "Person" 表中的 "Birthday" 列:

ALTER TABLE Person
DROP COLUMN Birthday

SQL AUTO INCREMENT 字段

auto_increment 會(huì)在新記錄插入表中時(shí)生成一個(gè)唯一的數(shù)字。

AUTO INCREMENT 字段
我們通常希望在每次插入新記錄時(shí)峡捡,自動(dòng)地創(chuàng)建主鍵字段的值击碗。
我們可以在表中創(chuàng)建一個(gè) auto_increment 字段。

用于 MySQL 的語(yǔ)法

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

MySQL 使用 AUTO_INCREMENT 關(guān)鍵字來(lái)執(zhí)行 auto-increment 任務(wù)们拙。
默認(rèn)地稍途,AUTO_INCREMENT 的開(kāi)始值是 1,每條新記錄遞增 1砚婆。
要讓 AUTO_INCREMENT 序列以其他的值起始械拍,請(qǐng)使用下列 SQL 語(yǔ)法:

ALTER TABLE Persons AUTO_INCREMENT=100

要在 "Persons" 表中插入新記錄,我們不必為 "P_Id" 列規(guī)定值(會(huì)自動(dòng)添加一個(gè)唯一的值):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

SQL VIEW(視圖)

視圖是可視化的表装盯。
本章講解如何創(chuàng)建坷虑、更新和刪除視圖。

SQL CREATE VIEW 語(yǔ)句
什么是視圖埂奈?

在 SQL 中迄损,視圖是基于 SQL 語(yǔ)句的結(jié)果集的可視化的
視圖包含行和列账磺,就像一個(gè)真實(shí)的表芹敌。視圖中的字段就是來(lái)自一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中的真實(shí)的表中的字段共屈。我們可以向視圖添加 SQL 函數(shù)WHERE 以及 JOIN 語(yǔ)句党窜,我們也可以提交數(shù)據(jù)拗引,就像這些來(lái)自于某個(gè)單一的表。

注釋:數(shù)據(jù)庫(kù)的設(shè)計(jì)和結(jié)構(gòu)不會(huì)受到視圖中的函數(shù)幌衣、wherejoin 語(yǔ)句的影響矾削。

SQL CREATE VIEW 語(yǔ)法

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

視圖總是顯示最近的數(shù)據(jù)。每當(dāng)用戶查詢視圖時(shí)豁护,數(shù)據(jù)庫(kù)引擎通過(guò)使用 SQL 語(yǔ)句來(lái)重建數(shù)據(jù)哼凯。

SQL CREATE VIEW 實(shí)例
可以從某個(gè)查詢內(nèi)部、某個(gè)存儲(chǔ)過(guò)程內(nèi)部楚里,或者從另一個(gè)視圖內(nèi)部來(lái)使用視圖断部。通過(guò)向視圖添加函數(shù)join 等等班缎,我們可以向用戶精確地提交我們希望提交的數(shù)據(jù)蝴光。

樣本數(shù)據(jù)庫(kù) Northwind 擁有一些被默認(rèn)安裝的視圖。視圖 "Current Product List" 會(huì)從 Products 表列出所有正在使用的產(chǎn)品达址。這個(gè)視圖使用下列 SQL 創(chuàng)建:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

我們可以查詢上面這個(gè)視圖:

SELECT * FROM [Current Product List]

SQL Date 函數(shù)

SQL 日期

NOW()
返回當(dāng)前的日期和時(shí)間

CURDATE()
返回當(dāng)前的日期

CURTIME()
返回當(dāng)前的時(shí)間

DATE()
提取日期或日期/時(shí)間表達(dá)式的日期部分

EXTRACT()
返回日期/時(shí)間按的單獨(dú)部分

DATE_ADD()
給日期添加指定的時(shí)間間隔

DATE_SUB()
從日期減去指定的時(shí)間間隔

DATEDIFF()
返回兩個(gè)日期之間的天數(shù)

DATE_FORMAT()
用不同的格式顯示日期/時(shí)間

SQL Date 數(shù)據(jù)類型

MySQL 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫(kù)中存儲(chǔ)日期或日期/時(shí)間值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
YEAR - 格式 YYYY 或 YY
SQL Server 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫(kù)中存儲(chǔ)日期或日期/時(shí)間值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: 唯一的數(shù)字

SQL 日期處理

如果不涉及時(shí)間部分蔑祟,那么我們可以輕松地比較兩個(gè)日期!

我們使用如下 SELECT 語(yǔ)句:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

SQL NULL 值

NULL 值是遺漏的未知數(shù)據(jù)沉唠。
默認(rèn)地疆虚,表的列可以存放 NULL 值。
本章講解 IS NULLIS NOT NULL 操作符满葛。

SQL NULL 值
如果表中的某個(gè)列是可選的径簿,那么我們可以在不向該列添加值的情況下插入新記錄或更新已有的記錄。這意味著該字段將以 NULL 值保存嘀韧。
NULL 值的處理方式與其他值不同篇亭。
NULL 用作未知的或不適用的值的占位符。
注釋:無(wú)法比較 NULL0乳蛾;它們是不等價(jià)的暗赶。

SQL IS NULL

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

SQL NULL 函數(shù)

SQL ISNULL()、NVL()肃叶、IFNULL() 和 COALESCE() 函數(shù)

圖片.png

假如 "UnitsOnOrder" 是可選的蹂随,而且可以包含 NULL 值。
我們使用如下 SELECT 語(yǔ)句:
SELECT ProductName,UnitPrice(UnitsInStock+UnitsOnOrder)
FROM Products
在上面的例子中因惭,如果有 "UnitsOnOrder" 值是 NULL岳锁,那么結(jié)果是 NULL。
微軟的 ISNULL() 函數(shù)用于規(guī)定如何處理 NULL 值蹦魔。
NVL(), IFNULL() 和 COALESCE() 函數(shù)也可以達(dá)到相同的結(jié)果激率。
在這里咳燕,我們希望 NULL 值為 0。
下面乒躺,如果 "UnitsOnOrder" 是 NULL招盲,則不利于計(jì)算,因此如果值是 NULL 則 ISNULL() 返回 0嘉冒。
SQL Server / MS Access
SELECT ProductName,UnitPrice
(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
Oracle
Oracle 沒(méi)有 ISNULL() 函數(shù)曹货。不過(guò),我們可以使用 NVL() 函數(shù)達(dá)到相同的結(jié)果:
SELECT ProductName,UnitPrice(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
MySQL
MySQL 也擁有類似 ISNULL() 的函數(shù)讳推。不過(guò)它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同顶籽。
在 MySQL 中,我們可以使用 IFNULL() 函數(shù)银觅,就像這樣:
SELECT ProductName,UnitPrice
(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
或者我們可以使用 COALESCE() 函數(shù)礼饱,就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products

SQL 數(shù)據(jù)類型

這里只講MySQL的數(shù)據(jù)類型:
在 MySQL 中,有三種主要的類型:文本究驴、數(shù)字日期/時(shí)間類型镊绪。

圖片.png
圖片.png

![Upload 圖片.png failed. Please try again.]

SQL 服務(wù)器 - RDBMS

現(xiàn)代的 SQL 服務(wù)器構(gòu)建在 RDBMS 之上。

DBMS - 數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System)
數(shù)據(jù)庫(kù)管理系統(tǒng)是一種可以訪問(wèn)數(shù)據(jù)庫(kù)中數(shù)據(jù)的計(jì)算機(jī)程序纳胧。
DBMS使我們有能力在數(shù)據(jù)庫(kù)中提取镰吆、修改或者存貯信息。
不同的 DBMS 提供不同的函數(shù)供查詢跑慕、提交以及修改數(shù)據(jù)。

RDBMS - 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)

關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS) 也是一種數(shù)據(jù)庫(kù)管理系統(tǒng)摧找,其數(shù)據(jù)庫(kù)是根據(jù)數(shù)據(jù)間的關(guān)系來(lái)組織和訪問(wèn)數(shù)據(jù)的核行。
20 世紀(jì) 70 年代初,IBM 公司發(fā)明了 RDBMS蹬耘。
RDBMS 是 SQL 的基礎(chǔ)芝雪,也是所有現(xiàn)代數(shù)據(jù)庫(kù)系統(tǒng)諸如 Oracle、SQL Server综苔、IBM DB2惩系、Sybase、MySQL 以及 Microsoft Access 的基礎(chǔ)如筛。

SQL 函數(shù)

SQL 擁有很多可用于計(jì)數(shù)和計(jì)算的內(nèi)建函數(shù)堡牡。

函數(shù)的語(yǔ)法
內(nèi)建 SQL 函數(shù)的語(yǔ)法是:

SELECT function(列) FROM 表

函數(shù)的類型
在 SQL 中,基本的函數(shù)類型和種類有若干種杨刨。函數(shù)的基本類型是:

Aggregate 函數(shù)
Scalar 函數(shù)

aggregate:集合晤柄;合計(jì)
scalar: 標(biāo)量;數(shù)量

1)合計(jì)函數(shù)(Aggregate functions)

Aggregate 函數(shù)的操作面向一系列的值妖胀,并返回一個(gè)單一的值芥颈。
注釋:如果在 SELECT 語(yǔ)句的項(xiàng)目列表中的眾多其它表達(dá)式中使用 SELECT 語(yǔ)句惠勒,則這個(gè) SELECT 必須使用 GROUP BY 語(yǔ)句!

  1. Scalar 函數(shù)
    Scalar 函數(shù)的操作面向某個(gè)單一的值爬坑,并返回基于輸入值的一個(gè)單一的值纠屋。

SQL AVG 函數(shù)

AVG 函數(shù)返回?cái)?shù)值列的平均值。NULL 值不包括在計(jì)算中盾计。

SELECT AVG(column_name) FROM table_name
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
圖片.png

現(xiàn)在售担,我們希望找到 OrderPrice 值高于 OrderPrice 平均值的客戶。
我們使用如下 SQL 語(yǔ)句:

SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
圖片.png

SQL COUNT() 函數(shù)
COUNT()函數(shù)返回匹配指定條件的行數(shù)闯估。

SQL COUNT() 語(yǔ)法

SQL COUNT(column_name) 語(yǔ)法
COUNT(column_name) 函數(shù)返回指定列的值的數(shù)目(NULL 不計(jì)入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT() 語(yǔ)法
COUNT(
) 函數(shù)返回表中的記錄數(shù):

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 實(shí)例

SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

SQL FIRST() 函數(shù)

FIRST() 函數(shù)
FIRST()函數(shù)返回指定的字段中第一個(gè)記錄的值贰锁。

SELECT FIRST(column_name) FROM table_name

SQL LAST() 函數(shù)
LAST() 函數(shù)返回指定的字段中最后一個(gè)記錄的值烦租。
提示:可使用 ORDER BY 語(yǔ)句對(duì)記錄進(jìn)行排序。

SELECT LAST(column_name) FROM table_name

SQL MAX() 函數(shù),SQL MIN() 函數(shù)

MAX 函數(shù)返回一列中的最大值。NULL 值不包括在計(jì)算中郑叠。

SELECT MAX(column_name) FROM table_name
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

SQL SUM() 函數(shù)

SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

SQL GROUP BY 語(yǔ)句

合計(jì)函數(shù) (比如 SUM) 常常需要添加 GROUP BY 語(yǔ)句。

GROUP BY語(yǔ)句用于結(jié)合合計(jì)函數(shù)钥屈,根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組涛贯。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
圖片.png

現(xiàn)在,我們希望查找每個(gè)客戶的總金額(總訂單)侠姑。
我們想要使用 GROUP BY 語(yǔ)句對(duì)客戶進(jìn)行組合创橄。
我們使用下列 SQL 語(yǔ)句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
圖片.png

讓我們看一下如果省略 GROUP BY 會(huì)出現(xiàn)什么情況:

SELECT Customer,SUM(OrderPrice) FROM Orders
圖片.png

GROUP BY 一個(gè)以上的列

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate

SQL HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用莽红。

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

注意:WHERE 關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用妥畏。
我們希望查找訂單總金額少于 2000 的客戶。
我們使用如下 SQL 語(yǔ)句:

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

SQL UCASE() 函數(shù), SQL LCASE() 函數(shù)

UCASE 函數(shù)把字段的值轉(zhuǎn)換為大寫安吁。
SQL LCASE() 函數(shù) 轉(zhuǎn)小寫醉蚁。

SQL UCASE() 語(yǔ)法

SELECT UCASE(column_name) FROM table_name
圖片.png

現(xiàn)在,我們希望選取 "LastName" 和 "FirstName" 列的內(nèi)容鬼店,然后把 "LastName" 列轉(zhuǎn)換為大寫网棍。
我們使用如下 SQL 語(yǔ)句:

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

SQL MID() 函數(shù)
MID 函數(shù)用于從文本字段中提取字符。
Oracle是substr(xxx,0,10) 這樣

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

參數(shù) 描述
column_name 必需妇智。要提取字符的字段滥玷。
start 必需。規(guī)定開(kāi)始位置(起始值是 1)巍棱。
length 可選惑畴。要返回的字符數(shù)。如果省略拉盾,則 MID() 函數(shù)返回剩余文本桨菜。

現(xiàn)在,我們希望從 "City" 列中提取前 3 個(gè)字符。(從第一個(gè)字符開(kāi)始)

SELECT MID(City,1,3) as SmallCity FROM Persons

SQL LEN() 函數(shù)
LEN 函數(shù)返回文本字段中值的長(zhǎng)度倒得。

SELECT LEN(column_name) FROM table_name

SQL ROUND() 函數(shù)

ROUND 函數(shù)用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)泻红。

SELECT ROUND(column_name,decimals) FROM table_name

column_name 必需。要舍入的字段霞掺。
decimals 必需谊路。規(guī)定要返回的小數(shù)位數(shù)。

圖片.png
SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
圖片.png

SQL NOW() 函數(shù)
NOW 函數(shù)返回當(dāng)前的日期和時(shí)間菩彬。
如果您在使用 Sql Server 數(shù)據(jù)庫(kù)缠劝,請(qǐng)使用 getdate() 函數(shù)來(lái)獲得當(dāng)前的日期時(shí)間。

SELECT NOW() FROM table_name
SELECT ProductName, UnitPrice, Now() as PerDate FROM Products

SQL FORMAT() 函數(shù)
FORMAT 函數(shù)用于對(duì)字段的顯示進(jìn)行格式化骗灶。

SELECT FORMAT(column_name,format) FROM table_name

column_name 必需惨恭。要格式化的字段。
format 必需耙旦。規(guī)定格式脱羡。

SQL FORMAT() 實(shí)例

SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products

·

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市免都,隨后出現(xiàn)的幾起案子锉罐,更是在濱河造成了極大的恐慌,老刑警劉巖绕娘,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脓规,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡险领,警方通過(guò)查閱死者的電腦和手機(jī)侨舆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绢陌,“玉大人态罪,你說(shuō)我怎么就攤上這事∠旅妫” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵绩聘,是天一觀的道長(zhǎng)沥割。 經(jīng)常有香客問(wèn)我,道長(zhǎng)凿菩,這世上最難降的妖魔是什么机杜? 我笑而不...
    開(kāi)封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮衅谷,結(jié)果婚禮上椒拗,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好蚀苛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布在验。 她就那樣靜靜地躺著,像睡著了一般堵未。 火紅的嫁衣襯著肌膚如雪腋舌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天渗蟹,我揣著相機(jī)與錄音块饺,去河邊找鬼。 笑死雌芽,一個(gè)胖子當(dāng)著我的面吹牛授艰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播世落,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼淮腾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了岛心?” 一聲冷哼從身側(cè)響起来破,我...
    開(kāi)封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忘古,沒(méi)想到半個(gè)月后徘禁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡髓堪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年送朱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片干旁。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驶沼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出争群,到底是詐尸還是另有隱情回怜,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布换薄,位于F島的核電站玉雾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏轻要。R本人自食惡果不足惜复旬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冲泥。 院中可真熱鬧驹碍,春花似錦壁涎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至洽损,卻和暖如春庞溜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碑定。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工流码, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人延刘。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓漫试,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碘赖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驾荣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容