mysql 基礎(chǔ)學(xué)習(xí)筆記

安裝

MacOS

Windows 10

Centos 7

SQL規(guī)范

  1. 不區(qū)分大小寫,但是建議大寫關(guān)鍵詞,小寫表名列名
  2. 每條SQL建議分號結(jié)尾
  3. 每條SQL根據(jù)需要進行換行縮進
  4. 注釋:
    單行:# --
    多行:/* */

類型

數(shù)值:
    整型:
    小數(shù):
        定點數(shù)
        浮點數(shù)
字符:
    短字符: char varcahr 
    長文本: text blob
日期:
    date        2020-02-03
    datetime    2020-02-02 02:02:02
    timesiamp   1594279093389
    time        02:02:02
    year        2020

常用SQL

use test; -- 選中 數(shù)據(jù)庫
show tables; -- 現(xiàn)實當(dāng)前選中的庫的所有表

show tables from mysql; # 查詢mysql下的tables

SHOW INDEX FROM stuinfo; # 顯示當(dāng)前的索引

select database(); # 查看當(dāng)前庫

/* create table table1(
    id int,
    name varchar(24)
); */

desc table1; -- 查看表結(jié)構(gòu)

select * from table1;

insert into table1 (id,name) values(1,'測試'); -- 插入

update table1 set name='我靠' where name='ces'; -- 修改

update table1 set id=0 where name='我靠'; -- 修改

delete from table1 where name='我靠'; -- 刪除


常見函數(shù)

單行函數(shù)

處理

字符函數(shù)

SELECT LENGTH('我是誰'); -- 根據(jù)當(dāng)前字符集 得到當(dāng)前字節(jié)長度

SELECT CONCAT('我','是','誰呀'); -- 拼接字符串

SELECT UPPER('Abc'); -- 轉(zhuǎn)換成大寫字符

SELECT LOWER('Abc'); -- 轉(zhuǎn)換成小寫

SELECT SUBSTR('abc123一二三',4,3); -- 從4開始截取3個 包含4 索引從1開始

SELECT SUBSTRING('abc123一二三',4,3); -- 從4開始截取3個 包含4 索引從1開始

SELECT INSTR('01234556','234'); -- 查找字符串出現(xiàn)的位置 沒找到就是0

SELECT TRIM(' A B C D '); -- 去除前后空格

SELECT TRIM('a' FROM 'aaaaA B  CaaaDaaaa' ); -- 去除前后的a

SELECT LPAD('abc123一二三',20,'*'); -- 左填充/保留左邊的
SELECT RPAD('abc123一二三',20,'*'); -- 右填充/保留左邊的

數(shù)學(xué)函數(shù)

SELECT ROUND(0.4); -- 四舍五入
SELECT ROUND(0.5);  -- 四舍五入
SELECT ROUND(-0.4);  -- 四舍五入
SELECT ROUND(-0.5);  -- 四舍五入

SELECT CEIL(0.2); -- 向上取整
SELECT FLOOR(0.9); -- 向下取整

SELECT RAND(); -- 隨機數(shù)

SELECT TRUNCATE(0.2345,3); -- 保留多少位小數(shù) 不進行處理

SELECT MOD(10,3); -- 取余

日期函數(shù)

SELECT NOW(); -- 返回當(dāng)前的日期時間

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

SELECT CURTIME(); -- 返回當(dāng)前時間

SELECT YEAR(NOW()) as `year`, MONTH(NOW()) as `month`, DAY(NOW()) as date as `day`; -- 年/月/日

SELECT STR_TO_DATE('2020-03-23 22:32:12','%Y-%m-%d %H:%i:%s'); -- 將字符串解析成時間

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'); -- 格式化時間

其他函數(shù)

SELECT VERSION(); -- 查看版本號

SELECT DATABASE(); -- 查看當(dāng)前的庫
 
SELECT USER(); -- 當(dāng)前用戶

流程控制函數(shù)

SELECT IF(10<5,'大','小'); -- if

SELECT `last_name`, IF(`commission_pct` IS NULL,TRUE,FALSE) AS isPct from `employees` ORDER BY `isPct` DESC; -- if 例子

# case 
SELECT `salary`,`department_id`,
CASE department_id
    WHEN 80 THEN
        salary * 1.2
        WHEN 40 THEN
        salary * 1.9
    ELSE
        salary * 0
END AS newMoney 
FROM `employees`
ORDER BY department_id DESC;

統(tǒng)計函數(shù)

統(tǒng)計

SELECT COUNT(*) FROM `employees`; -- 數(shù)量統(tǒng)計
SELECT SUM(`salary`) FROM `employees`; -- 相加和
SELECT AVG(`salary`) FROM `employees`; -- 平均值
SELECT MAX(`salary`) FROM `employees`; -- 最大值
SELECT MIN(`salary`) FROM `employees`; -- 最小值

SELECT COUNT(*) AS `count`, SUM(`salary`) AS `sum`, AVG(`salary`) AS `avg`, MAX(`salary`) as `max`, MIN(`salary`) as `min`
FROM `employees`;

# 注意
/*

*/

常見約束

一種限制,用于限制表中的數(shù)據(jù),用來保證表中數(shù)據(jù)的準(zhǔn)確和可靠性


分類:
    六大約束:
        NOT NULL: 非空,用于保證該字段的值不能為空
        DEFAULT: 默認(rèn)值
        PRIMARY KEY: 主鍵,用于保證該字段具有唯一性(非空)
        UNIQUE: 唯一(可空)
        CHECK: 檢查 (mysql 不支持)
        FOREIGN KEY: 外鍵,用于限制兩個表的關(guān)系,用于保證該字段必須來自關(guān)聯(lián)表的主鍵
    添加約束的時機:
        1. 創(chuàng)建表
        2. 修改表
    約束的添加分類:
        列級約束:
            六大約束語法上都支持,外鍵約束無效
        表級約束:
            除了非空和默認(rèn)其他都支持
            
主鍵和唯一的區(qū)別:
    主鍵:唯一、非空、只能一個
    唯一:唯一、可空、多個

外鍵:
    1. 從表設(shè)置外鍵關(guān)系
    2. 主從表類型一致/兼容
    3. 主表關(guān)聯(lián)鍵一般為主鍵或唯一
    4. 必須對應(yīng)主表數(shù)據(jù),刪除先刪除從表再刪除主表

DQL 數(shù)據(jù)查詢語言

常量、表達式、函數(shù)

SELECT 1; -- 常量值
SELECT 10*20; -- 表達式
SELECT VERSION(); -- 函數(shù)

別名

SELECT 1+2 as number;

去重

SELECT DISTINCT 
    `name`
FROM 
    `table`

+號

SELECT 1+2; -- 數(shù)字相加
SELECT 1+'123'; -- 字符串會強轉(zhuǎn)成數(shù)字非數(shù)字轉(zhuǎn)為0
SELECT 1 + Null; -- 與Null返回Null

字符串連接 concat

SELECT CONCAT('a','b','c'); -- 字符串拼接
SELECT CONCAT(`first_name`,`last_name`) as `name` FROM `employees`; -- 拼接字段

條件查詢

條件表達式

< > >= <= != <> <=>

# 等于
SELECT 
    CONCAT(`first_name`,`last_name`) as `name` 
FROM `employees` 
WHERE 
    `first_name`='Bruce'; 

# 安全等于 可查 Null

SELECT 
    CONCAT(`first_name`,`last_name`) as `name` 
FROM `employees` 
WHERE 
    `first_name`<=>'Bruce'; 

# 大于
SELECT 
    *
FROM `employees` 
WHERE 
    `department_id` > 60;

# 小于
SELECT 
    *
FROM `employees` 
WHERE 
    `department_id` <= 60;
    
# 不等于 
# != 不建議
SELECT 
    *
FROM `employees` 
WHERE 
    `department_id` <> 60;
邏輯表達式

&& || !
AND OR NOT

# 且查詢
# 不建議 &&
SELECT 
CONCAT(`first_name`,`last_name`) as `name`
FROM `employees` 
WHERE 
    `first_name`='Bruce' 
    AND 
    `last_name`='Ernst';

# 或
SELECT 
    CONCAT(`first_name`,`last_name`) as `name` 
FROM `employees` 
WHERE 
    `first_name`='Bruce' 
    OR 
    `last_name`='K_ing';
    
# 非
SELECT 
    CONCAT(`first_name`,`last_name`) as `name` 
FROM `employees` 
WHERE 
    NOT
    `first_name`='Bruce' 
模糊查詢
like 模糊查詢

%:任意多個字符
_: 任意單個字符
\: 轉(zhuǎn)義

# 包含 a
SELECT * FROM `employees` 
WHERE 
    `first_name` like '%a%'; 

# 定義轉(zhuǎn)義字符
SELECT * FROM `employees` 
WHERE 
    `last_name` like '%$_%' ESCAPE '$'; 

between and 范圍

在什么到什么之間,包含前后

# 查找100 到200 之間的數(shù)據(jù)
SELECT * FROM `employees` 
WHERE 
    `employee_id` BETWEEN 100 AND 200;
in 屬于

查詢是否屬于某些列表中的某一個

# 查詢是否屬于某些列表中的某一個
SELECT * FROM `employees` 
WHERE 
    `job_id` IN ('SH_CLERK','AD_ASST','AD_VP');
is null or is not null 是否為Null
# 查詢字段為空的
SELECT * FROM `employees`
WHERE
    `commission_pct` IS NULL;

# 查詢不為空的
SELECT * FROM `employees`
WHERE
    NOT `commission_pct` IS NULL;

SELECT * FROM `employees`
WHERE
    `commission_pct` IS NOT NULL;
<=> 安全等于

既可以判斷NULL 又可以判斷數(shù)值

SELECT * FROM `employees`
WHERE
    `commission_pct` <=> NULL;
order by 排序

ASC升序 DESC降序 默認(rèn) ASC

SELECT * FROM `employees` ORDER BY `salary` ASC; -- 升序
SELECT * FROM `employees` ORDER BY `salary` DESC; -- 降序

SELECT `salary` * IFNULL(`commission_pct`,0) + IFNULL(manager_id,0) as money,`salary`  FROM `employees` ORDER BY `money`; -- 表達式別名降序

SELECT LENGTH(`last_name`) as len FROM `employees` ORDER BY len; -- 按函數(shù)

SELECT * FROM `employees` ORDER BY `salary` DESC, `employee_id` ASC; -- 多個排序條件

分組查詢


# 每個工種的總工資
SELECT SUM(`salary`) AS `money`,`job_id` FROM `employees` GROUP BY `job_id` ORDER BY `money`;

# 每個工種的最高工資
SELECT MAX(`salary`) as `max`,`job_id` FROM `employees` GROUP BY `job_id` ORDER BY `max`;

# 查詢郵箱包含a的工種的最高工資
SELECT MAX(`salary`) as `max`, `job_id`
FROM `employees`
WHERE email LIKE '%a%' 
GROUP BY `job_id` 
ORDER BY `max`;

# 查詢郵箱包含a的工種的最高工資大于1萬的   HAVING
SELECT MAX(`salary`) as `max`, `job_id` 
FROM `employees`
WHERE email LIKE '%a%' 
GROUP BY `job_id`
HAVING `max` > 10000
ORDER BY `max`;

# 查詢名稱長度一樣的大于5個人的數(shù)據(jù)
SELECT LENGTH(`first_name`) AS `name`, COUNT(1) AS `count`
FROM `employees`
GROUP BY `name`
HAVING `count` > 5;

# 多字段分組
SELECT AVG(`salary`) AS `avg`,`department_id`,`job_id`
FROM `employees`
GROUP BY `department_id`,`job_id`
ORDER BY `department_id`,`job_id`

連接查詢

分類:
    按年代劃分:
        sql92標(biāo)準(zhǔn):只支持內(nèi)連接
        sql99標(biāo)準(zhǔn)【推薦】:支持內(nèi)連接+外來連接(左外、右外)+交叉連接
    按功能劃分:
        內(nèi)連接:
            等值連接
            非等值連接
            自連接
        外連接:
            左外連接
            右外連接
            全外連接
        交叉連接

sql92標(biāo)準(zhǔn)

# 等值連接
SELECT e.`first_name`,j.`job_title`,`j`.`job_id`
FROM `employees` as e,`jobs` as j
WHERE `e`.`job_id` = `j`.`job_id`;

# 非等值連接

# 自連接
SELECT e.last_name,m.employee_id,e.manager_id,m.last_name 
FROM `employees` AS e, `employees` AS m
WHERE `e`.employee_id = `m`.manager_id

sql99標(biāo)準(zhǔn)

# 等值連接
SELECT `last_name`,`department_name`
FROM employees
INNER JOIN departments
ON employees.`department_id` = departments.`department_id`

# 復(fù)雜的等值連接
SELECT department_name,COUNT('*') AS count,MAX(`salary`) AS max,min(`salary`) AS min
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id
WHERE last_name LIKE '%o%'
GROUP BY department_name
HAVING `count` BETWEEN 2 AND 10
ORDER BY `count`

# 多表等值連接
SELECT last_name,department_name,job_title
FROM employees
INNER JOIN departments
ON departments.department_id =employees.department_id
INNER JOIN jobs
ON employees.job_id = jobs.job_id;

子查詢

分類:
    按出現(xiàn)位置:
        select 后面:
            只支持標(biāo)量子查詢
        form 后面
            表子查詢
        where 和having后面 *
            標(biāo)量子查詢  *
            列子查詢    *
            行子查詢
        exists后面
            表子查詢
        
    按結(jié)果集的行列數(shù)不同:
        標(biāo)量子查詢(結(jié)果集只有一行一列)
        列子查詢(結(jié)果集只有一列多行)
        行子查詢(結(jié)果集只有多列一行)
        表子查詢(結(jié)果集一般多行多列)

where 和having后面

特點: 1. 放在小括號內(nèi) 2. 放在條件右側(cè) 3. 標(biāo)量子查詢:配合單行操作符。列子查詢:配合多行操作符。


# 查詢工資比Abel高的人
SELECT * FROM employees 
WHERE salary > (
    SELECT salary FROM employees 
    WHERE last_name = 'Abel'
);

# job_id與141號員工一樣且工資大于143號員工的員工
SELECT last_name,salary,employee_id FROM employees
WHERE job_id = (
    SELECT job_id FROM employees WHERE employee_id = 141
) AND salary > (
    SELECT salary FROM employees WHERE employee_id = 143
)

# 查詢比50號部門最低工資高的部門的最低工資
SELECT department_id, COUNT(*),MIN(salary) AS minsalary FROM employees 
GROUP BY department_id
HAVING minsalary > (SELECT MIN(salary) AS minsalary FROM employees WHERE department_id = 50)
ORDER BY minsalary DESC;

分頁查詢

SELECT *
FROM `employees` 
LIMIT (page-1)*size,size;

SELECT *
FROM `employees` 
LIMIT 10,10;

聯(lián)合查詢

# 無

DML 數(shù)據(jù)操作語言

插入

INSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES('p_a','撿垃圾1',200,6000);

INSERT INTO jobs 
VALUES('p_a1','撿垃圾1',200,6000),
('p_a2','撿垃圾2',200,6000);

INSERT INTO jobs SET job_id = 'ces',job_title="123"

INSERT INTO jobs SELECT 'ces1','444',200,6000

修改

# 簡單修改
UPDATE jobs
SET job_title = '2222'
WHERE job_id = 'ces1'

# 修改多表
UPDATE jobs
INNER JOIN employees
ON employees.job_id = jobs.job_id
SET jobs.job_title = CONCAT(jobs.job_title,'22222'),employees.job_id = 'ces1'
WHERE jobs.job_title = 'Public Accountant12322222'

刪除

# 單表刪除
DELETE FROM jobs
WHERE job_id = 'ces'

# 清空整表
TRUNCATE TABLE ttt;

# 多表刪除
DELETE employees
FROM employees
INNER JOIN jobs
ON jobs.job_id = employees.job_id
WHERE jobs.job_id = 'SA_MAN'

DDL 數(shù)據(jù)定義語言

1. 庫的管理
    創(chuàng)建\修改\刪除
2. 表的管理
    創(chuàng)建\修改\刪除

創(chuàng)建: create
修改: alter
刪除: drop

庫管理

# 創(chuàng)建 IF NOT EXISTS 進行容錯 CHARACTER SET  字符集
CREATE DATABASE IF NOT EXISTS books CHARACTER SET utf8;

# 修改 不能該了
RENAME DATABASE books TO newbook;

# 更改字符集
ALTER DATABASE books CHARACTER SET gbk;

# 庫的刪除
DROP DATABASE IF EXISTS books;

表的管理

創(chuàng)建表

USE books;
# 表的創(chuàng)建
/*
CREATE TABLE 表名(
    列名 列類型([長度]) [約束],
    列名 列類型([長度]) [約束],
    ...
)
*/
CREATE TABLE book (
    id INT,
    b_name VARCHAR(20),
    price DOUBLE,
    author_id INT,
    publish_date DATETIME
);

DESC book;

CREATE TABLE author(
    id INT,
    au_name VARCHAR(20),
    nation VARCHAR(10)
);

DESC author;

表的修改

/*
修改列:
ALTER TABLE 表名 [CHANGE|MODIFY|ADD|DROP] COLUMN 列名 類型|約束;
修改表名:
ALTER TABLE 表名 RENAME TO 新表名;
*/
# 修改列名
ALTER TABLE book CHANGE COLUMN publish_date publishDate DATETIME;
# 修改列類型約束
ALTER TABLE book MODIFY COLUMN publishDate TIMESTAMP;
# 添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;
# 刪除
ALTER TABLE author DROP COLUMN annual;
# 修改表名
ALTER TABLE author RENAME TO authers;

表的刪除

DROP TABLE IF EXISTS authers;

表的復(fù)制

# 復(fù)制表結(jié)構(gòu)
CREATE TABLE copy LIKE author;

# 復(fù)制整個表
CREATE TABLE copy2 
SELECT * FROM author;

約束

添加表時添加約束

# 列級約束
CREATE TABLE stuinfo(
    id INT PRIMARY KEY, # 主鍵
    stu_name VARCHAR(20) NOT NULL, # 非空
    gender CHAR(1) DEFAULT '男', # 默認(rèn)
    seat INT UNIQUE # 唯一
);

# 表級約束
CREATE TABLE stuinfo(
    id INT, # 主鍵
    stu_name VARCHAR(20), # 非空
    gender CHAR(1) , # 默認(rèn)
    seat INT, # 唯一
    majorid INT,
    
    CONSTRAINT pk PRIMARY KEY(id),# 主鍵
    CONSTRAINT uq UNIQUE(seat),# 唯一
    CONSTRAINT fk_stuiinfo_major FOREIGN KEY(majorid) REFERENCES major(id)# 外鍵
);

# 通用建議約束
DROP TABLE  IF EXISTS stuinfo;
CREATE TABLE stuinfo(
    id INT PRIMARY KEY, # 主鍵
    stu_name VARCHAR(20) NOT NULL, # 非空
    gender CHAR(1) DEFAULT '男', # 默認(rèn)
    seat INT UNIQUE, # 唯一
    majorid INT,
    -- 表級約束
    CONSTRAINT fk_stuiinfo_major FOREIGN KEY(majorid) REFERENCES major(id)# 外鍵
);


修改表時的約束

# 修改列約束
ALTER TABLE stuinfo MODIFY COLUMN stu_name VARCHAR(20) NOT NULL; 
# 表級約束
ALTER TABLE stuinfo ADD PRIMARY KEY(id);
ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCES major(id);
# 刪除外鍵
# ALTER TABLE stuinfo DROP PRIMARY KEY;

標(biāo)識列(自增長列)

AUTO_INCREMENT

CREATE TABLE stuinfo(
    id INT PRIMARY KEY AUTO_INCREMENT, # 主鍵
    stu_name VARCHAR(20) NOT NULL, # 非空
    gender CHAR(1) DEFAULT '男', # 默認(rèn)
    seat INT UNIQUE, # 唯一
    majorid INT,
    -- 表級約束
    CONSTRAINT fk_stuiinfo_major FOREIGN KEY(majorid) REFERENCES major(id)# 外鍵
);

TCL 事務(wù)控制語言

一個或一組sql語句組成一個執(zhí)行單位,要么全部執(zhí)行,要么全部失敗。

ACID: A: 原子性 C: 一致性 I: 隔離性 D: 持久性

# 提交表示完成,回滾代表異常
set autocommit = 0; -- 關(guān)閉自動事務(wù)
START TRANSACTION; -- 開始事務(wù)
UPDATE stuinfo SET stu_name = '12232' WHERE id = 3;
SAVEPOINT a; -- 保存節(jié)點
UPDATE stuinfo SET stu_name = '12332' WHERE id = 5;
ROLLBACK; -- 回滾事務(wù)
ROLLBACK TO a; -- 回滾事務(wù)到指定節(jié)點
COMMIT; -- 提交事務(wù) 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,107評論 2 375