首页 >>  正文

SQL数据库语句大全

来源:www.zuowenzhai.com    作者:编辑   日期:2024-06-16
sql查询语句大全

一、 简单查询   简单的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,然后再从中检索数据三) 使用WHERE子句设置查询条件  WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:   SELECT *  FROM usertable  WHERE age>20  WHERE子句可包括各种条件运算符:  比较运算符(大小比较):>、>=、=、、!>、!=10 AND age、>=、、!。  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。  例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:   SELECT *  FROM authors AS a INNER JOIN publishers AS p  ON a.city=p.city  又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):  SELECT a.*,p.pub_id,p.pub_name,p.country  FROM authors AS a INNER JOIN publishers AS p  ON a.city=p.city  (二)外连接  内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:   SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b  ON a.username=b.username  下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:   SELECT a.*,b.*  FROM city as a FULL OUTER JOIN user as b  ON a.username=b.username  (三)交叉连接  交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。 SELECT type,pub_name  FROM titles CROSS JOIN publishers  ORDER BY type

1. 查看数据库的版本

select @@version

2. 查看数据库所在机器操作系统参数

exec master..xp_msver

3. 查看数据库启动的参数

sp_configure

4. 查看数据库启动时间

select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1

查看数据库服务器名和实例名

print 'Server Name...............:' + convert(varchar(30),@@SERVERNAME)

print 'Instance..................:' + convert(varchar(30),@@SERVICENAME)

5. 查看所有数据库名称及大小

sp_helpdb

重命名数据库用的SQL

sp_renamedb 'old_dbname', 'new_dbname'

6. 查看所有数据库用户登录信息

sp_helplogins

查看所有数据库用户所属的角色信息

sp_helpsrvrolemember

修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程

更改某个数据对象的用户属主

sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'

注意:更改对象名的任一部分都可能破坏脚本和存储过程。

把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本

查看某数据库下,对象级用户权限

sp_helprotect

7. 查看链接服务器

sp_helplinkedsrvlogin

查看远端数据库用户登录信息

sp_helpremotelogin

8.查看某数据库下某个数据对象的大小

sp_spaceused @objname

还可以用sp_toptables过程看最大的N(默认为50)个表

查看某数据库下某个数据对象的索引信息

sp_helpindex @objname

还可以用SP_NChelpindex过程查看更详细的索引情况

SP_NChelpindex @objname

clustered索引是把记录按物理顺序排列的,索引占的空间比较少。

对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默认值。

查看某数据库下某个数据对象的的约束信息

sp_helpconstraint @objname

9.查看数据库里所有的存储过程和函数

use @database_name

sp_stored_procedures

查看存储过程和函数的源代码

sp_helptext '@procedure_name'

查看包含某个字符串@str的数据对象名称

select distinct object_name(id) from syscomments where text like '%@str%'

创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数

解密加密过的存储过程和函数可以用sp_decrypt过程

10.查看数据库里用户和进程的信息

sp_who

查看SQL Server数据库里的活动用户和进程的信息

sp_who 'active'

查看SQL Server数据库里的锁的情况

sp_lock

进程号1--50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.

spid是进程编号,dbid是数据库编号,objid是数据对象编号

查看进程正在执行的SQL语句

dbcc inputbuffer ()

推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句

sp_who3

检查死锁用sp_who_lock过程

sp_who_lock

11.查看和收缩数据库日志文件的方法

查看所有数据库日志文件大小

dbcc sqlperf(logspace)

如果某些日志文件较大,收缩简单恢复模式数据库日志,收缩后@database_name_log的大小单位为M

backup log @database_name with no_log

dbcc shrinkfile (@database_name_log, 5)

12.分析SQL Server SQL 语句的方法:

set statistics time {on | off}

set statistics io {on | off}

图形方式显示查询执行计划

在查询分析器->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形

文本方式显示查询执行计划

set showplan_all {on | off}

set showplan_text { on | off }

set statistics profile { on | off }

13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作

alter database [@error_database_name] set single_user

修复出现不一致错误的表

dbcc checktable('@error_table_name',repair_allow_data_loss)

或者可惜选择修复出现不一致错误的小型数据库名

dbcc checkdb('@error_database_name',repair_allow_data_loss)

alter database [@error_database_name] set multi_user

CHECKDB 有3个参数:

repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。

修复操作可以在用户事务下完成以允许用户回滚所做的更改。

如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。

如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。

修复完成后,请备份数据库。

repai*_**st 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。

这些修复可以很快完成,并且不会有丢失数据的危险。

repair_rebuild 执行由 repai*_**st 完成的所有修复,包括需要较长时间的修复(如重建索引)。

执行这些修复时不会有丢失数据的危险。

添加、删除、修改使用db.Execute(Sql)命令执行操作
╔--------------------╗
☆ 数据记录筛选 ☆
╚--------------------╝
注意:单双引号的用法可能有误(没有测式)

Sql = "Select Distinct 字段名 From 数据表"
Distinct函数,查询数据库存表内不重复的记录

Sql = "Select Count(*) From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")

sql="select * from 数据表 where 字段名 between 值1 and 值2"
Sql="select * from 数据表 where 字段名 between #2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。

select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。

Sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

Sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
模糊查询

Sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
查找数据库中前10记录

Sql="select top n * form 数据表 order by newid()"
随机取出数据库中的若干条记录的方法
top n,n就是要取出的记录数

Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

╔--------------------╗
☆ 添加数据记录 ☆
╚--------------------╝
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

sql="insert into 数据表 valuess (值1,值2,值3 …)"
不指定具体字段名表示将按照数据表中字段的顺序,依次添加

sql="insert into 目标数据表 select * from 源数据表"
把源数据表的记录添加到目标数据表

╔--------------------╗
☆ 更新数据记录 ☆
╚--------------------╝
Sql="update 数据表 set 字段名=字段值 where 条件表达式"

Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n "
没有条件则更新整个数据表中的指定字段值

╔--------------------╗
☆ 删除数据记录 ☆
╚--------------------╝
Sql="delete from 数据表 where 条件表达式"

Sql="delete from 数据表"
没有条件将删除数据表中所有记录)

╔--------------------------╗
☆ 数据记录统计函数 ☆
╚--------------------------╝
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。

╔-----------------------------╗
☆ 数据表的建立和删除 ☆
╚-----------------------------╝
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)

╔--------------------------╗
☆ 记录集对象的方法 ☆
╚--------------------------╝
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

SQL数据库语句大全:

1、选择:select * from table1 where 范围

2、插入:insert into table1(field1,field2) values(value1,value2)

3、删除:delete from table1 where 范围

4、更新:update table1 set field1=value1 where 范围

5、排序:select * from table1 order by field1,field2 [desc]

6、总数:select count as totalcount from table1

7、求和:select sum(field1) as sumvalue from table1



1 select * from 表名 where 部门ID = 20
2 select 员工号,员工名,部门号 from 表名 where 工种=CLERK
3 select * from 表名 where COMM>SAL
4 select * from 表名 where COMM>(SAL*0.2)
5 select * from 表名 where (部门ID = 10 and 工种=MANAGER) or(部门ID=20 and 工种=CLERK)
6 select * from 表名 where 工种!=MANAGER and 工种!=CLERK and 工资>1999
7 select 工种 from 表名 where 奖金 != null

select * from 职工信息表
select 员工号,员工名,部门号 from 表名 where 工种=CLERK
select * from 表名 where COMM>SAL

14 select * from 表名 where 姓名 like '%m%'

15 select * from 表名 where 姓名 like '?m%'

让其它人补吧,太多了


15283705299数据库中常用的sql语句有哪些
杭珍琦答:1.检索数据 SELECT prod_nameFROM Procts;检索单列 SELECT prod_id, prod_name, prod_;检索多列 SELECT * FROM Procts;检索所有列 SELECT _id FROMProcts;检索不同的值 SELECTprod_name FROM Procts LIMIT 5;返回不超过5行数据 SELECTprod_name FROM Procts LIMIT 5 OFFSET 5;返回从第5行起...

15283705299SQL数据库语句大全
杭珍琦答:SQL数据库语句大全:1、选择:select * from table1 where 范围 2、插入:insert into table1(field1,field2) values(value1,value2)3、删除:delete from table1 where 范围 4、更新:update table1 set field1=value1 where 范围 5、排序:select * from table1 order by field1,field2 [d...

15283705299数据库常用sql语句有哪些
杭珍琦答:,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分 ,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数 FROM SC 21、查询不同...

15283705299SQL数据库查询语句,包括增,删,改,查等所有语句详细。
杭珍琦答:1.使用insert插入单行数据:语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋','男','1980/6/15')注意:into可以省略;列名列值用逗号分开;列值用单引号因上;如果省略表名,将依次插入所有列 2.使用insert select语句将...

15283705299SQL 数据库中常用的一些语句。。。归类下
杭珍琦答:一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份 BACKUP DATABASE pubs ...

15283705299数据库sql语句大全
杭珍琦答:数据库sql语句有哪些呢?下面就让我们一起来了解一下吧:sql语句有很多,比较基本的sql语句有:选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查...

15283705299SQL数据库语句大全
杭珍琦答:经典SQL语句大全下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库CREATE DATABASE database-name 2、说明:...

15283705299SQL数据库常用命令及语法举例
杭珍琦答:sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"sql="select * from 数据表 where 字段名 between ...

15283705299常用的sql语句有哪些
杭珍琦答:DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。SQL语句语法大全连接对象.ExecuteSQL操作性语句[,RecordAffected][,Option]·RecordAffected为可选项,此出可放置一个变量...

15283705299通用SQL数据库查询语句精华使用简介
杭珍琦答:在包括多个查询的UNION语句中 其执行顺序是自左至右 使用括号可以改变这一执行顺序 例如 查询UNION (查询 UNION 查询 ) 三 连接查询 通过连接运算符可以实现多个表查询 连接是关系数据库模型的主要特点 也是它区别于其它类型数据库管理系统的一个标志 在关系数据库管理系统中 表建立时各数据之间的关系不必确定 ...


(编辑:巢矩刻)
联系方式:
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 作文摘要网