Archive for the ‘数据库’ Category

如何在SQL中先排序后分组

标题说的有点奇怪,换句话说是让order by比group by先执行。还不明白对吧? 举个例子:实现场景,要实现QQ空间的动态消息,首先要按最新的消息查到QQ好友排序,然后再按好友分别查询他们的动态消息 有如下的Feed表 id userid type msg who time 1 2 add_twitter hahah 1 2010-04-27 19:12:38 2 2 add_twitter 怎么啦 2 2010-04-27 19:12:44 3 4 add_twitter asddas 3 2010-04-27 19:20:26 4 2 reply_twitter 放大法 4 2010-04-27 19:24:09 5 5 reply_twitter 噶 5 2010-04-27 19:24:13 6 3 add_twitter saf 6 2010-04-27 19:35:48 7 2 [...]


Mysql指定编码创建数据库

mysql 创建数据库时指定编码很重要,一般都指定为统一的UTF-8编码,如果不指定编码,默认编码为lan1,插入中文时是会提示错误的,类似”\x22\x34″ CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci


MSSQL多个外键对应同一个表时查询外键的内容

当有一个表同时有多个外键同时指向某一个表时,需要通过外键来查询到相应的信息。 举个例子:这是一个订车票的 城市表 CityID CityName 1 广州 2 湛江 3 江门 4 肇庆 5 惠州 6 汕头 车次表 CarID CarName StartCityID EndCityID 1 G001 1 2 2 G002 1 3 这里的StartCityID和EndCityID分别是城市表的外键 解决方法 现在要把对应的始发城市和终点城市的名称取到,mssql语句可以这样 方法一: SELECT 始发站=c1.CityName,终点站=c2.CityName FROM car,City c1,City c2 WHERE StartCityID = c1.CityID AND EndCityID = c2.CityID 方法二: SELECT 始发站=c1.CityName,终点站=c2.CityName FROM car JOIN City [...]


MSSQL触发器基础(在触发器遍历所有数据)

最近很懒,也有忙的原因~~一些东西懒得发上来了·~~还是要写上来才可以,不然学到的东西以后我就忘记了 以下只保证在MSSQL下顺利执行~~可能在MySql不太一样。 最近在做作业的时候想用用数据库的触发器写写~发觉还不是一般的烦呀~~变量多了就觉得有点烦了~~不过语言还是挺容易上手的~~ 插播一句:ID自增的写法 CREATE TABLE ritem( id INT IDENTITY(1,1) ); 触发器的基本写法 CREATE TRIGGER 触发器名 ON 数据表名 FOR (INSERT|update|delete) AS BEGIN 在这里写代码 END 定义变量,并赋值 CREATE TRIGGER t_insert_ritem ON ritem FOR INSERT AS BEGIN DECLARE @id INT SELECT @id=id FROM inserted — 从插入的数据获得ID的值,还有一个deleted — inserted表示新的数据,deleted表示旧的数据(自己理解的,不知道对不对?)   SET @id = @id – 1 — 另一种赋值   PRINT [...]


MSSQL存储过程的用法:基础

创建存储过程的基本格式: CREATE PROCEDURE update_createtime @tbID INT AS UPDATE t_member SET createTime = GetDate() WHERE tbID = @tbID GO 添加返回值时就可以这样做 –Developer:zhihui Zhou –Date:New()as 2008-10-18 –Email:zhou5791759@163.com –QQ:297510342   CREATE PROCEDURE update_createtime @tbID INT, @createTime nvarchar(50) output AS UPDATE t_member SET createTime = GetDate() WHERE tbID = @tbID SET @createTime = (SELECT createTime FROM t_member WHERE tbID = [...]