SQL查询语句精华文章(1)
一、 简单查询
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的
表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
复制内容到剪贴板
代码:
SELECT `nickname`,`email`FROM `testtable`WHERE `name`=’张三’
(一) 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变
量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
复制内容到剪贴板
代码:
SELECT * FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
复制内容到剪贴板
代码:
SELECT nickname,email FROM testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名
列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列
标题:
复制内容到剪贴板
代码:
SELECT 昵称=nickname,电子邮件=email FROM testtable
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是
表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
复制内容到剪贴板
代码:
SELECT TOP 2 * FROM `testtable`
复制内容到剪贴板
代码:
SELECT TOP 20 PERCENT * FROM `testtable`
(二)FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,
它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应
使用下面语句格式加以限定:
复制内容到剪贴板
代码:
SELECT `username`,citytable.cityid
FROM `usertable`,`citytable`
WHERE usertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
(二) FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,
它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应
使用下面语句格式加以限定:
复制内容到剪贴板
代码:
SELECT `username`,citytable.cityid
FROM `usertable`,`citytable`
WHERE usertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
复制内容到剪贴板
代码:
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为:
复制内容到剪贴板
代码:
SELECT `username`,b.cityid
FROM usertable a,citytable b
WHERE a.cityid=b.cityid
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:
复制内容到剪贴板
代码:
SELECT a.au_fname+a.au_lname
FROM authors a,titleauthor ta
(SELECT `title_id`,`title`
FROM `titles`
WHERE ` ytd_sales`>10000
) AS t
WHERE a.au_id=ta.au_id
AND ta.title_id=t.title_id
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。
来自:http://bbs.phpchina.com/thread-39506-1-1.html
MSSQL2000清理日志文件和压缩数据库的方法
在处理一个网站的时候发现删除了90%的数据收缩数据库后,数据库的日志文件还是很大很大!
问其他人怎么解决也问不了,周围都是菜鸟,只有拿出我三脚猫的功夫+google
才搞出个用代码来清理日志文件和压缩数据库的方法,还是比较有用的。
在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:
第一步:清空日志
DUMP TRANSACTION databasename WITH NO_LOG
第二步:截断事务日志
BACKUP LOG databasename WITH NO_LOG
第三步:收缩数据库
DBCC SHRINKDATABASE(databasename)
批量替换 MySQL 指定字段中的字符串
批量替换 MySQL 指定字段中的字符串是数据库应用中很常见的需求,但是有很多初学者在遇到这种需求时,通常都是用脚本来实现;其实,MySQL 内置的有批量替换语法,效率也会高很多;想了解具体方法,继续阅读本文吧
批量替换的具体语法是:
Code:
UPDATE 表名 SET
指定字段 = replace(指定字段, ’要替换的字符串’, ’想要的字符串’)
WHERE 条件;
如果你想把 article 表中 ID 小于5000的记录,content 字段中“解决”替换成“解放”,那么语法就是:
Code:
UPDATE article SET
content = replace(content, ’解决’, ’解放’)
WHERE ID<5000;
数据库中的命名规则
数据库涉及字符规则
采用26个英文字母(区分大小写)和0 -9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。
据库对象命名规则
数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。前缀:使用小写字母
例如:
|
表 |
tb |
|
视图 |
vi |
|
存储过程 |
sp |
|
函数 |
fn |
实际名字
实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头。
例如:
|
表 |
User_Info |
|
视图 |
UserList |
|
存储过程 |
UserDelete |
因此,合法的对象名字类似如下。
|
表 |
tbUser_Info、tbMessage_Detail |
|
视图 |
vi_MessageList |
|
存储过程 |
sp_MessageAdd |
数据库表命名规则
字段由前缀和实际名字组成。实际名字中首单词一个系统尽量采取同一单词。
前缀:使用小写字母tb,表示表。
例如:tbMember
tbMember_Info
tbForum_Board
tbForum_Thread1
字段命名规则
数字、字符、日期/时间、lob(大对象)、杂项,字段由表的简称、下划线,实际名字加后缀组成。
后缀:使用小写字母,代表该字段的属性。
例如: User_Idint
User_Namestr
User_RegDatedtm
视图命名规则
字段由前缀和实际名字组成,中间用下划线连接。
前缀:使用小写字母vi,表示视图。
例如:vi_User
vi_UserInfo
存储过程命名规则
字段由前缀和实际名字组成,中间用下划线连接。
前缀:使用小写字母sp,表示存储过程。
例如:sp_User
数据库设计文档规则
所有数据库设计要写成文档,文档以模块化形式表达。大致格式如下:
‘——————————————-
‘ 表名: tbUser_Info
‘ 建立人:UAM_Richard
‘ 日期: 2004-12-17
‘ 版本: 1.0
‘ 描述: 保存用户资料
‘ 具体内容:
‘ UserId int,自动增量 用户代码
‘ UserName char(12) 用户名字
。
SQL2000数据库还原–选单用户才行!
今天下午还原公司的一个SQL2000数据库文件,一直提示,数据正在使用还原出错,试着停用sql再还原也不行!最后终于解决,以下是解决方法:首先 选中你要还原的数据库名–属性–选项–访问–选中单用户–确定然后再进行还原就可以了. 还原完成后记住要选择成多用户.

