SQL简明教程

在平时,SQL可以为你提供各种查询和统计功能。
当遇到刷贴、爆坛等恶性事件时,SQL是你紧急处理的最佳利器。
目前,SQL也是虎绿林实现论坛版块管理和版主设置的唯一方法。
因此,我制作了这个教程。
SQL(Structured Query Language,结构化查询语言)是一种通用数据库查询语言,用于存储、查询、更新和管理关系型数据库。PHP支持的几乎所有关系型数据库都是使用SQL操作的。
那么什么是关系型数据库呢?简单地说,关系型数据库有以下特点:
1.每个数据库中有一张或多张表
2.每张表中有一个或多个字段
3.不同表中的字段并不是独立的,而是相互关联的。
例:绿虎论坛的用户数据库是wap/db/user.db3,它里面有一张名为user的表,表里有以下字段:
uid 用户id(自增字段) 
name 用户名 
pass md5加密后的密码
sid 你知道它是什么
mtime sid过期时间(unix时间戳)
qianm 个性签名
lianx 联系方式
extra 附加信息
而论坛的贴子保存在bbs.db3的tz表里,它有以下字段:
id 贴子id(自增字段)
bkid 贴子所在版块id
uid 用户id
title 贴子标题
nr 内容
fttime 发贴时间戳
hftime 最后回复时间戳
ztn 贴子状态字符串
youxian 贴子显示优先级(置顶或固底用)
rdcount 点击次数统计
这其中,uid字段和user.db3中user表的uid字段是对应的。
bkid字段和bbs.db3中bk表中id字段是对应的,bk表的结构如下:
id 版块id(自增字段)
name 版块名称
bzid 一系列逗号分隔的版主uid
这里的bzip又和user表的uid建立了对应关系。
这里的对应关系,正是“关系型数据库”名字的由来。也因此,我们可以很方便地对数据进行存储和访问。比如,当我们得到贴子id,就可以去查询bbs.db3里的tz表,得到贴子标题、内容、版块id和uid等信息。得到uid后,我们又可以查询user.db3里的user表得到用户名称。得到版块id后,我们可以查询bbs.db3的bk表得到版块名。
同样的,如果我们得到了用户名,我们也可以通过查询user得到uid,再查询tz,就可以得到该用户的所有贴子了。而且,通过添加查询条件,我们还可以得到用户在某个版块内某段时间发的贴子等更多更细的信息。
下面我们就开始吧。看看用SQL怎样实现我们想要的一切。
一、SELECT,查询
SELECT 字段列表 FROM 一个或多个表 [WHERE 一系列条件] [ORDER BY 用于排序的字段列表] [LIMIT [开始位置],结果条数]
所有[]里的内容都是可以省略的。
回复列表(14|隐藏机器人聊天)
添加新回复
回复需要登录