MySQL入门

简介:MySQL数据库简称MySQL,是一款由瑞典MySQL AB公司开发并且应用广泛的数据管理系统,MySQL数据库因其体积小、速度快、总体拥有成本低受到很多的热捧。现在,MySQL的所有者世界上最著名的数据库企业——Oracle所有。

MySQL的应用,在国内的企业包括:百度、阿里、腾讯、新浪、搜狐、网易等等企业,全部都在使用MySQL数据库。

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

    由于MySQL是开放源代码的,因此任何人都可以在GPL的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

  PHP与很多数据库结合都很紧密。由于,PHP和MySQL都是开源免费的。所以PHP一直对于MySQL等数据库都有很好的支持。

Oracle数据库的默认端口:1521

MySQL数据库的默认端口:3306

sqlserver数据库的默认端口号为:1433

1,数据库的五个基本单位

数据库服务器,数据库,数据表,数据字段,数据行

我们现在来对上面的五个基本单位进行说明:

数据库服务器:是指用来运行数据库服务的一台电脑。在中小型企业通常为一台。在数据存储量计算量很大的时候可以存在多台。多台数据库服务器共同来存储或计算。由于数据安全非常重要,我们经常会对数据库服务器里面的数据进经备份。

数据库:一个数据库服务器里面有可以有多个数据库。主要用来分类使用。我们可以建立交通信息数据库、游戏数据库、酒店开房数据库... ... 主要用来将各个不同用途的数据,按照业务进行大块的划分。

数据表:例如在游戏数据库中。根据这一款游戏又分为了不同的数据表。专门用来区分游戏不同的数据。例如:用户数据(用户、密码);人物数据;所有装备和装备信息;用户的充值信息;药品、魔力药水信息... ...等

数据字段:也叫数据列。就是我们日常所见表格里面的列。在表格中,我们会将一张用户表分成多个列。如下(表一)所示:用户编号、用户名、性别、年龄是字段。在真正的数据库中数据字段需要换成英文需要写成:id、username、sex、年龄。

数据行:真正的数据存在每一个表的行里面。字段(列)划分出来了一个表应该按照什么样的格式存数据。而行,是真正的数据。每一行需要遵循数据字段(列)的规范和要求进行存入数据。

2,Mysql连接数据库

方法一

安装后,可以在开始菜单的列表中找到MySQL Command Line 点击操作的命令行终端操作。效果如图:

方法二

如果加入到了windows的环境变量中,可以在命令行下直接操作。

在命令行下,通过以下命可以连接到数据库服务器:

mysql -h localhost -u root -p

上面的命令中: mysql 表示 mysql数据库启动工具。

参数说明

-h   表示数据库连接地址,连接本机可不填

-u    表示要登录的用户

-p     表示使用密码登录

一、创建数据库

基本语法create database +数据库名;

示例   create database php;

        创建 数据库

二、查看数据库

show databases;

显示  数据库

三、选中数据库

use php;

使用 库名

四、查看数据库中的表

show tables;

 显示表

五、删除数据库

drop database +库名;

示例 drop database php

1.2 Mysql数据表操作

一、创建表

create table 表名(字段名1字段类型,......字段名n 字段类型n);

示例create table user(usernamevarchar(20),password varchar(32));

示例说明 创建一个表名叫user的表,第一个字段为username、表的

字段类型位varchar长度为32个长度。第二个字段为password,类型

也为varchar,长度也为32个长度。

注释:

int,代表整型。float,代表浮点。char和varchar代表字符串即可。

其他示例:

mysql> create table emp(

ename varchar(10),

hiredate date,

sal float(10,2),

deptno int(2)


二、查看表的创建语句

show create table 表名\G;

示例show create table emp\G;


三、删除表

drop table 表名;

示例drop table emp;

1.3 Mysql数据字段操作

一、查看表结构

desc +表名;

示例desc emp;

二、修改表字段类型

 alter table表名modify 字段名varchar(20);

示例 alter table user modify username varchar(20);

示例说明       将user表的username的类型改为varchar(20)

三、增加表字段

alter table 表名add

column 字段名 类型;

示例 alter table user add column age int(3);

示例说明 添加一个字段为age ,类型为整型长度为3

四、增加字段时控制字段顺序

alter table 表名add 字段名字段类型after 字段名;

示例alter table user add email varchar(60) aftercreateip;

示例说明 user表中,在createip 后增加一个字段为email,

类型为varchar, 长度为60

五、删除表字段

  alter table表名drop

column 字段名;

 示例 alter table user dropcolumn age;

示例说明 在user 表中删除字段age

六、表字段改名

  alter table表名change 字段原名字段新名 字段类型;

示例 alter table user change email em varchar(60);

示例说明 在user 表中将字段中的email 字段名字改为em

七、修改表字段排列顺序

在前的字段增加和修改语句(add/change/modify)中,最后都可以加一个可选项 first|after。

       增加表字段时我们已经学过了如何调整顺序。我们现在来看看另外的change或modify如何来调整顺序

示例 alter table user modify em varchar(60) first;

八、修改表名

alter table 旧表名rename 新的表名;

示例       altertable user rename new_user;

示例说明       将user表名改为new_user




1.4 Mysql数据类型

整型

MySQL数据类型所占字节值范围

tinyint1字节-128~127

smallint2字节-32768~32767

mediumint3字节-8388608~8388607

int4字节范围-2147483648~2147483647

bigint8字节+-9.22*10的18次方

整型的长度不同,在实际使用过程也就不同。

 

浮点类型

MySQL数据类型所占字节值范围

float(m, d)4字节单精度浮点型,m总个数,d小数位

double(m, d)8字节双精度浮点型,m总个数,d小数位

decimal(m, d)decimal是存储为字符串的浮点数


字符类型

MySQL数据类型所占字节值范围

CHAR0-255字节定长字符串

VARCHAR0-255字节变长字符串

TINYBLOB0-255字节不超过255个字符的二进制字符串

TINYTEXT0-255字节短文本字符串

BLOB0-65535字节二进制形式的长文本数据

TEXT0-65535字节长文本数据

MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据

MEDIUMTEXT0-16 777 215字节中等长度文本数据

LOGNGBLOB0-4 294 967 295字节二进制形式的极大文本数据

LONGTEXT0-4 294 967 295字节极大文本数据

VARBINARY(M)允许长度0-M个字节的定长字节符串值的长度+1个字节

BINARY(M)M允许长度0-M个字节的定长字节符串


时间类型

MySQL数据类型所占字节值范围

date3字节日期,格式:2014-09-18

time3字节时间,格式:08:42:30

datetime8字节日期时间,格式:2014-09-18 08:42:30

timestamp4字节自动存储记录修改的时间

year1字节年份


复合类型

MySQL数据类型说明举例

set集合类型set(“member”, “member2″, …

  “member64″)

enum枚举类型enum(“member1″, “member2″,

  … “member65535″)

一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。

1.5 Mysql字符集

英文字符集:

字符集说明字节长度

ASCII美国标准信息交换代码单字节

GBK汉字内码扩展规范双字节

unicode万国码4字节

UTF-8Unicode的可变长度字符编码1到6个字节

注意:

 mysql在写utf-8的时候写的是utf8。不加中间的中横线。

1.6 Mysql索引

一、MySQL的索引类型

普通索引:最基本的索引,它没有任何限制

唯一索引:某一行启用了唯一索引则不准许这一列的行数据中有重复的值。针对这一列的每一行数据都要求是唯一的

主键索引:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引,常用于用户ID。类似于书中的页码

全文索引:对于需要全局搜索的数据,进行全文索引

 

普通索引

基本语法       altertable表  add index(字段)

示例       ALTERTABLE money ADD INDEX(username);

示例解释       为money表的username字段增加索引

唯一索引

类型       详细说明

基本语法       altertable表  addUNIQUE(字段)

示例       ALTERTABLE money ADD UNIQUE(email);

示例解释       为money表的email字段增加唯一索引


全文索引

类型       详细说明

基本语法       altertable表  addFULLTEXT(字段)

示例       ALTERTABLE money ADD FULLTEXT(content);

示例解释       为money表的content字段增加唯一索引


主键索引

类型       详细说明

基本语法       altertable表  addPRIMARY KEY(字段)

示例       ALTERTABLE money ADD PRIMARY KEY(id);

示例解释       为money表的id字段增加主键索引

创建表时也可以声明索引

创建表时可在创建表语句后加上对应的类型即可声明索引:


PRIMARY KEY(字段)

 INDEX [索引名] (字段)

 FULLTEXT [索引名] (字段)

 UNIQUE[索引名] (字段)

注:中括号中的索引名,代表可选。


整体示例如下:

CREATE TABLE test (


id INT NOT NULL , 


username VARCHAR(20) NOT NULL , 


password INT NOT NULL , 


content VARCHAR(20) , 

     PRIMARY KEY (

id), 

     INDEX pw (

password), 

     UNIQUE (

username),

     FULLTEXT (

content)

) ENGINE = InnoDB;

1.7增删改查之插入记录

一、插入记录有两种个基本语法

插入基本语法一

基本语法       insertinto表 values(值1,值2,值n);

示例       INSERTINTO user values(2,'php中文网','男')

示例说明       向user表中插入值id为2,姓名为李文凯,性别为男

插入基本语法二

基本语法       insertinto表(字段1,字段2,字段n) values(值1,值2,值n);

示例       INSERTINTO user(id,username,sex) values(213,'小沈阳',1);

示例说明       向user表中插入id为213,username为小沈阳,性别为1

说明:

基本语法1和基本语法2的区别是:

       基本语法1的插入语句,表中有多少个字段就必须要插入多少个值。

一个不能多,一个也不能少。若有默认值,不想传,可以写上null。

       基本语法2中,除非有必填字段必须要写入值外。如果有默认值的

不想写可以忽略不写。mysql会自动补主默认值。

基本语法2中,以user(id,username,sex)字段顺序为值的顺序。

二、基础查询

基本语法       select* from表;

示例       select* from money;

示例说明       查询money表中所有字段中的所有结果

注:”*” 是一种正则表达式的写法,表示匹配所有,上面的查询语句和下面的是等价:

三、指定字段查询

基本语法       select字段 from 表;

示例       selectid,username, balance from money;

示例说明       查询money表中id,username, balance字段中的所有结果

四、查询单个字段不重复记录distinct

基本语法       selectdistinct字段 from 表;

示例       selectdistinct age deptno from money;

示例说明       查询money表中年龄唯一的所有结果

五、条件查询where

基本语法       select  字段 from 表 where where条件;

示例       select* from money where age = 29;

示例说明       查询money表中年龄为29的所有结果

除此之外,还可以使用>、<、>=、<=、!=等比较运算符;

六、逻辑运算符

where多个条件还可以使用 or(或者) 、 and(并且) 等逻辑运算符进行多条件联合查询

七、结果集排序

基本语法       select字段 from 表order  by字段 排序关键词

示例       selectid,username, balance from money order by balance desc;

示例说明       查询money表中的id,username,balance字段,按照余额进行降序排序

排序用到的关键词:

asc  升序排列,从小到大(默认)

desc 降序排列,从大到小

八、结果集限制

       对于查询或者排序后的结果集,如果希望只显示一部分而不是全部,

使用 limit 关键字结果集数量限制。

基本语法       select字段 from 表  limit数量;

示例       selectid,username, balance from money limit 5;

示例说明       显示前五个用户

九、限制结果集并排序

基本语法       select字段 from 表order by 字段 关键词 limit 数量

示例       selectid,username, balance from money order by balance desc limit 5;

示例说明       按照钱来排序,显示前五个最有钱的用户

十、统计类函数使用

函数       说明

sum        求和

count     统计总数

max 最大值

min 最小值

avg  平均值

基本语法       select函数(字段) from 表

示例       selectcount(id) from money

示例说明       查询money表的id总数

你还可以给字段取别名哟!使用as关键字。


例如mysql> select count(id) as zongshu

from money;

十一、分组group by

基本语法       select* from表 group by 字段

示例       select* from money group by province;

示例说明       按照地区进行分组

统计分组(分类)各总数:

mysql> select deptno,count(1) from emp group by deptno;

统计省份数量后再进行分组显示

mysql> selectcount(province),province  from moneygroup by province;

在分组基础上进行统计

with rollup用的很少。这个知识点设置为了解级别。

它的主要功能是对于分组的数据进行统计后,再进行一次总数统计。

类别       详细解示

基本语法       select* from表 group by 字段withrollup

示例       selectcount(province),province  from moneygroup by province with rollup;

示例说明       对分组的数再次进行统计

在上面的基础上统计总数,下例结果中,最后多了一个12 NULL。

mysql> selectcount(province),province  from moneygroup by province with rollup;

结果再过滤having

having子句与where有相似之处但也有区别,都是设定条件的语句。

having 是筛选组 而where是筛选记录。

类别       详细解示

基本语法       select* from表 group by 字段 having 条件

示例       selectcount(province) as result ,province  frommoney group by province having result >2;

示例说明       对地区分组并统计总数,将分组结果中大于2的分组地区显示出来

mysql> select count(province) as result,province  from money group by provincehaving result >2;

整体使用SQL

       我们现在将语句进行整合后,配合使用一次。整体的SQL语句配合使用的语法结构如下:

SELECT

    [字段1 [as 别名1],[函数(字段2) ,]......字段n]

 FROM表名

 [WHERE where条件]

 [GROUP BY字段]

 [HAVING where_contition]

 [order条件]

 [limit条件]

注:上面的语句中可以[] 代表可选。最终的语法总结如下:

关键词   说明

select     选择的列

from       表

where     查询的条件

group by 分组属性  having分组过滤的条件

order by 排序属性

limit 起始记录位置,取记录的条数

我们进行一次整体的给合使用,查询money表字段:id,username,balance,province 要求id>1 余额大于50,使用地区进行分组。我们使用用户id进行降序,要求只准显示3条。最后将SQL语句写成,查询出来的结果如下:


mysql> selectid,username,balance,province from money where id > 1 and balance > 50group by province order by id desc limit 3;

1.8 Mysql多表联合查询

user表创建语句:

CREATE TABLE IF NOT EXISTS user (

  uid int(11) NOT NULL,

  username varchar(30) NOT NULL,

  password char(32) NOT NULL

 )ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS order_goods (

  oid int(11) NOT NULL,

  uid int(11) NOT NULL,

  name varchar(50) NOT NULL,

  buytime int(11) NOT NULL

 )ENGINE=InnoDB DEFAULT CHARSET=utf8;


user表数据:

INSERT INTO user(uid,username,password)values('1','jintian','123456');

INSERT INTO user(uid,username,password)values('2','zhangsha','1234f56');

INSERT INTO user(uid,username,password)values('3','wangwu','1234fs56');

INSERT INTO user(uid,username,password)values('4','lisi','123s456');

INSERT INTO user(uid,username,password)values('5','xiaotian','123d456');

INSERT INTO user(uid,username,password) values('6','wangfei','123f456');

INSERT INTO user(uid,username,password)values('7','oldboy','123w456');


order_goods数据如下:

INSERT INTOorder_goods(oid,uid,name,buytime) values('1','7','opper','12345622');

INSERT INTOorder_goods(oid,uid,name,buytime) values('2','2','iphone','1234356');

INSERT INTOorder_goods(oid,uid,name,buytime) values('3','4','xieli','12342s56');

INSERT INTOorder_goods(oid,uid,name,buytime) values('4','3','lisi','12322456');

INSERT INTOorder_goods(oid,uid,name,buytime) values('5','5','juzi','12344456');

INSERT INTOorder_goods(oid,uid,name,buytime) values('6','6','tianmiju','12322456');

INSERT INTOorder_goods(oid,uid,name,buytime) values('7','1','xiangjiao','12311456');

注意:在上表order_goods表中uid是指user表中的uid字段。上表中oid为1的数据行,uid为7的用户。为user表中uid为7的用户:oldboy。该用户购买了商品为xiangjiao。购买时间buytime为一个unix时间戳。

mysql> select u.uid ,u.username as

username,o.oid,o.uid,o.name as shopname from user u,order_goods o  where

u.uid = o.uid;

外连接

基本语法       select表1.字段 [as 别名],表n.字段  from表1 LEFT JOIN 表n on  条件;

示例       select*  from user left join order_goods  on user.uid = order_goods.uid;

示例说明       以左边为主,查询哪些用户未购买过商品,并将用户信息显示出来外连接又分为左连接和右链接,具体定义如下。


左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录

mysql> select *  from user left join order_goods  on user.uid = order_goods.uid;

右连接:包含所有的右边表中的记录甚至是右边表中没有和它匹配的记录

基本语法       select表1.字段 [as 别名],表n.字段  from表1 right JOIN 表n on  条件;

示例       select*  from user right join order_goods  on user.uid = order_goods.uid;

示例说明       查询商品表中哪些用户购买过商品,并将用户信息显示出来

mysql> select *  from user right join order_goods  on  user.uid= order_goods.uid;

 

 

子查询

       有时候,当我们查询的时候,需要的条件是另外一个select语句的结果,这时就需要使用子查询。用于子查询的关键字包括in、not in、=、!=、exists、not exists等。


基本语法       select字段  from表 where 字段 in(条件)

示例1    select*  from user where uid in (1,3,4);

示例1说明   按照id 查询指定用户

示例2    select*  from user where uid in (select uidfrom order_goods);

示例2说明   将购买过商品的用户信息显示出来

示例1:

mysql> select *  from user where uid in (1,3,4);

示例2:

mysql> select *  from user where uid in (select uid fromorder_goods);

记录联合

       使用 union 和 union all 关键字,将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示。两者主要的区别是把结果直接合并在一起,而 union 是将 union all 后的结果进行一次distinct,去除重复记录后的结果。

基本语法       select语句1 union[all] select语句2

示例       select*  from user where uid in (1,3,4);

示例说明       将商品表中的用户信息和用户表中的用户信息的结果组合在一起

mysql> select uid from user union selectuid from order_goods;

1.9 Mysql增删改查之更新记录

更新记录

       更新数据我们已经说过。需要修改内容,修改银行卡余额,修改装备信息的时候都需要使用到update,修改语句。

money表数据结构:

CREATE TABLE IF NOT EXISTS money (

  uid int(11) NOT NULL,

  username varchar(30) NOT NULL,

  balance DECIMAL(9,2) NOT NULL

 )ENGINE=InnoDB DEFAULT CHARSET=utf8;


money表数据:

INSERT INTO money(uid,username,balance)values('1','zhangsai','15000.22');

INSERT INTO money(uid,username,balance)values('2','zhangsa','16000.22');

INSERT INTO money(uid,username,balance)values('3','lisi','17000.22');

INSERT INTO money(uid,username,balance)values('4','wangwu','18000.22');


修改(也叫更新)语句的基本语语法如下:

基本语法       update表名 set 字段1=值1,字段2=值2,字段n=值n where 条件

示例       updatemoney set  balance=balance-500 whereuserid = 15;

示例说明       修改money表,将balance余额减500。要求userid为15

假设我们有下面这一个表,表结构如下:

mysql> select * from money where username='lisi';

使用update 语句进行记录更新

mysql> update money set balance=balance-500 where uid = 15;

同时对两个表进行更新

基本语法       update表1,表2 set 字段1=值1,字段2=值2,字段n=值n where 条件

示例       updatemoney m,user u m.balance=m.balance*u.age where m.userid=u.id;

示例说明       修改money,将money表的别名设置为m;user表的别名设置为u;将m表的余额改为m表的balance*用户表的age。执行条件是:m.userid = u.id

mysql> update money m,user um.balance=m.balance*u.password where m.uid=u.uid;

使用delete 删除记录

基本语法       DELETEFROM表 [where 条件];

示例       DELETEFROM user where id > 10;

示例说明       删除掉用户表中id大于10的所有用户

mysql> DELETE FROM money where uid='1';

 Query OK, 1 row affected (0.08 sec)

删除掉了id为1的记录。

清空表记录

       delete和truncate是一样的,但它们有一点不同,那就是DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。

       如果一个表中有自增字段,使用truncate table 这个自增字段将起始值恢复成1.

基本语法       TRUNCATETABLE表名;

示例       TRUNCATETABLE user;

示例说明       清空表的数据,并且让自增的id从1开始自增

【切记】

删除时一定要记住加上where条件,不然会清空掉整个表的记录。

删除重要数据前一定要备份、备份、备份。

2.0 Mysql 权限操作

添加权限

类别       详细解示

基本语法       grant权限 on 库.表 to '用户'@'主机'

identified by '密码';

示例       grantselect, insert on test.* to 'liwenkai'@'localhost' identified by '4311';

示例说明       给予liwenkai用户,在本机连接test库所有表的权限。操作的这些表具有查询和写入权限

注:可以针对一个用户增加多条权限。

删除权限

基本语法       revoke权限 on 库.表 from '用户'@'主机';

示例       revokeselect, insert on test.* to 'liwenkai'@'localhost' identified by '4311';

示例说明       给予liwenkai用户,在本机连接test库所有表的权限。操作的这些表具有查询和写入权限。

参数说明

grant all  在grant后接all说明给予所有权限

revoke all       在revoke后接all说明删除所有权限

权限on .       .所明给予所有库所有表的操作权限

'用户'@'主机' 主机里面若为%。任意来源的主机均可以使用这个用户来访问

创建数据库用户liwenkai ,具有对test数据库中所有标的 select / insert 权限


示例:增加权限

mysql> grant select, insert on test.* to'liwenkai'@'localhost' identified by '4311';

 Query OK, 0 rows affected (0.00 sec)


示例:移除权限

mysql> revoke insert on test.* from'liwenkai'@'localhost';

 Query OK, 0 rows affected (0.30 sec)

补充:

查看用户权限

查看当前用户权限:

show grants;

查看其它用户权限:

show grants for'test'@'localhost';

刷新权限

flush privileges;

2.1 PHP操作mysql数据库

注意:

       从PHP7开始默认不再支持mysql扩展,即不再支持mysql_*系列函数。请使用mysqli连接数据库。

       mysqli即支持php5也支持php7。

创建表结构:

CREATE TABLE IF NOT EXISTS users (

   idINT(10) NOT NULL,

  username varchar(30),

  password varchar(30),

  createtime date not null,

  createip binary(16)

);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269