数据库使用命令.docx
《数据库使用命令.docx》由会员分享,可在线阅读,更多相关《数据库使用命令.docx(19页珍藏版)》请在冰点文库上搜索。
数据库使用命令
1.select*fromSYS_INFO——查询SYS_INFO表
wherename='name'——筛选查看name这一行的信息
updateSYS_INFOsetvalue='上海卓繁'——修改SYS_INFO表中value这一列的全部数值为“上海着樊”
wherename='name'——筛选查看name这一行的信息
基本语句
(1)数据记录筛选:
sql="select*from数据表where字段名=字段值orderby字段名[desc]"(按某个字段值降序排列。
默认升序ASC)
sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]"
sql="selecttop10*from数据表where字段名=字段值orderby字段名[desc]"
sql="selecttop10*from数据表orderby字段名[desc]"
sql="select*from数据表where字段名in('值1','值2','值3')"
sql="select*from数据表where字段名between值1and值2"
(2)更新数据记录:
sql="update数据表set字段名=字段值where条件表达式"
sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式"
(3)删除数据记录:
sql="deletefrom数据表where条件表达式"
sql="deletefrom数据表"(将数据表所有记录删除)
(4)添加数据记录:
sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"
sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表)
(5)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(*;字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="selectsum(字段名)as别名from数据表where条件表达式"
setrs=conn.excute(sql)
用rs("别名")获取统计的值,其它函数运用同上。
查询去除重复值:
selectdistinct*fromtable1
(6)数据表的建立和删除:
CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)
(7)单列求和:
SELECTSUM(字段名)FROM数据表
/*连接数*/
selectconnectnum=count(distinctnet_address)-1frommaster..sysprocesses
/*返回一组有关计算机和有关SQLServer可用资源及其已占用资源的有用杂项信息*/
select*fromsys.dm_os_sys_info
/*从操作系统返回内存信息*/
select*fromsys.dm_os_sys_memory
/*返回有关调用进程的虚拟地址空间中的页范围的信息*/
select*fromsys.dm_os_virtual_address_dump
/*命令提供了SQLServer的当前内存状态的快照,也可以作为我们分析内存瓶颈的重要依据*/
DBCCMemoryStatus
/*计数器视图,主要对缓冲区管理器和内存管理器的一些计数器进行监控,比如页面的生存周期、检查点、惰性写入器和缓冲命中率等指标*/
select*fromsys.dm_os_performance_counters
/*缓冲池内数据库缓冲池中各个数据库的分布情况*/
selectcasedatabase_idwhen32767then'resourceDb'elsedb_name(database_id)endasdatabase_name,count(*)ascached_pages_countfromsys.dm_os_buffer_descriptorsgroupbydb_name(database_id),database_idorderbycached_pages_countdesc;
/*返回数据和日志文件的I/O统计信息*/
select*fromsys.dm_io_virtual_file_stats(null,null)
/*当前缓存的哪些批处理或过程占用了大部分CPU资源*/
SELECTTOP50 SUM(qs.total_worker_time)AStotal_cpu_time, SUM(qs.execution_count)AStotal_execution_count, COUNT(*)AS number_of_statements, qs.sql_handleFROMsys.dm_exec_query_statsASqsGROUPBYqs.sql_handleORDERBYSUM(qs.total_worker_time)DESC
/*缓存计划所占用的CPU总使用率*/
SELECT total_cpu_time, total_execution_count, number_of_statements, s2.text --(SELECTSUBSTRING(s2.text,statement_start_offset/2,((CASEWHENstatement_end_offset=-1THEN(LEN(CONVERT(NVARCHAR(MAX),s2.text))*2)ELSEstatement_end_offsetEND)-statement_start_offset)/2))ASquery_textFROM (SELECTTOP50 SUM(qs.total_worker_time)AStotal_cpu_time, SUM(qs.execution_count)AStotal_execution_count, COUNT(*)AS number_of_statements, qs.sql_handle--, --MIN(statement_start_offset)ASstatement_start_offset, --MAX(statement_end_offset)ASstatement_end_offset FROM sys.dm_exec_query_statsASqs GROUPBYqs.sql_handle ORDERBYSUM(qs.total_worker_time)DESC)ASstats CROSSAPPLYsys.dm_exec_sql_text(stats.sql_handle)ASs2
/*CPU平均占用率最高的前50个SQL语句*/
SELECTTOP50total_worker_time/execution_countAS[AvgCPUTime],(SELECTSUBSTRING(text,statement_start_offset/2,(CASEWHENstatement_end_offset=-1thenLEN(CONVERT(nvarchar(max),text))*2ELSEstatement_end_offsetend-statement_start_offset)/2)FROMsys.dm_exec_sql_text(sql_handle))ASquery_text,*FROMsys.dm_exec_query_statsORDERBY[AvgCPUTime]DESC
/*查看CPU、计划程序内存和缓冲池信息*/
selectcpu_count,hyperthread_ratio,scheduler_count,physical_memory_in_bytes/1024/1024asphysical_memory_mb,virtual_memory_in_bytes/1024/1024asvirtual_memory_mb,bpool_committed*8/1024asbpool_committed_mb,bpool_commit_target*8/1024asbpool_target_mb,bpool_visible*8/1024asbpool_visible_mbfromsys.dm_os_sys_info
/*查询显示SQL等待分析和前10个等待的资源*/
selecttop10*fromsys.dm_os_wait_stats--wherewait_typenotin('CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE','SLEEP_TASK','SLEEP_SYSTEMTASK','WAITFOR')orderbywait_time_msdesc
/*计算可运行状态下的工作进程数量,来观察CPU压力*/
SELECTCOUNT(*)asworkers_waiting_for_cpuFROMsys.dm_os_workersWHEREo.state='RUNNABLE'GROUPBYs.scheduler_id
/*检查闩锁等待统计信息以确定I/O瓶颈*/
selectwait_type,waiting_tasks_count,wait_time_ms,signal_wait_time_ms,wait_time_ms/waiting_tasks_countfromsys.dm_os_wait_stats wherewait_typelike'PAGEIOLATCH%' andwaiting_tasks_count>0orderbywait_type
/*系统中的每个工作线程*/
select*fromsys.dm_os_workers
/*系统中的所有SQLOS工作线程*/
selectCOUNT(*)fromsys.dm_os_threads
/*SQLServer实例中的每个活动任务*/
select*fromsys.dm_os_tasks
/*连接的所有用户名*/
select hostname from master..sysprocesses where hostname<>'' group by hostname/*不同计算机连接的用户数*/select count(distinct(hostname)) from master..sysprocesses where hostname<>''/*所有连接的用户数*/select count(hostname) from master..sysprocesses where hostname<>''
sp_monitor
sp_who
Select*frommaster.dbo.spt_monitor
Select*fromsys.dm_os_tasks
Select*frommaster..sysprocesseswherehostname<>''
Selectcount(hostname)frommaster..sysprocesseswherehostname<>''
Select*fromsys.dm_os_tasks
Selectconnectnum=count(distinctnet_address)-1frommaster..sysprocesses
Selectconnectnum=count(distinctnet_address)-1frommaster..sysprocesses
select*frommaster.dbo.spt_monitor
常用
SQL
语句大全
一、基础
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 TO testBack
4
、说明:
创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A
:
create table tab_new like tab_old (
使用旧表创建新表
)
B
:
create table tab_new as select col1,col2
„
from tab_old definition only
5
、说明:
删除新表
DROP
table tabname
6
、说明:
增加一个列
Alter table tabname add column col type
注:
列增加后将不能删除。
DB2
中列加上后数据类型也不能改变,唯一能改变
的是增加
varchar
类型的长度。
7
、说明:
添加主键:
Alter table tabname add primary key(col)
说明:
删除主键:
Alter table tabname DROP
primary key(col)
8
、说明:
创建索引:
create [unique] index idxname on tabname(col
„
.)
删除索引:
DROP
index idxname
注:
索引是不可更改的,想更改必须删除重新建。
9
、说明:
创建视图:
create view viewname as select statement
删除视图:
DROP
view viewname
10
、说明:
几个简单的基本的
sql
语句
选择:
select * from table1 where
范围
插入:
insert into table1(field1,field2) values(value1,value2)
删除:
delete from table1 where
范围
更新:
update table1 set field1=value1 where
范围
查找:
select * from table1 where field1 like
’
%value1%
’
---like
的语法很精
妙,查资料
!
排序:
select * from table1 order by field1,field2 [desc]
总数:
select count as totalcount from table1
求和:
select sum(field1) as sumvalue from table1
平均:
select avg(field1) as avgvalue from table1
最大:
select max(field1) as maxvalue from table1
最小:
select min(field1) as minvalue from table1
11
、说明:
几个高级查询运算词
A
:
UNION
运算符
UNION
运算符通过组合其他两个结果表
(例如
TABLE1
和
TABLE2
)
并消去
表中任何重复行而派生出一个结果表。
当
ALL
随
UNION
一起使用时(即
UNION ALL
)
,
不消除重复行。
两种情况下,
派生表的每一行不是来自
TABLE1
就是来自
TABLE2
。
B
:
EXCEPT
运算符
EXCEPT
运算符通过包括所有在
TABLE1
中但不在
TABLE2
中的行并消除
所有重复行而派生出一个结果表。
当
ALL
随
EXCEPT
一起使用时
(EXCEPT
ALL)
,不消除重复行。
C
:
INTERSECT
运算符
INTERSECT
运算符通过只包括
TABLE1
和
TABLE2
中都有的行并消除所
有重复行而派生出一个结果表。
当
ALL
随
INTERSECT
一起使用时
(INTERSECT ALL)
,不消除重复行。
注:
使用运算词的几个查询结果行必须是一致的。
12
、说明:
使用外连接
A
、
left outer join
:
左外连接
(左连接)
:
结果集几包括连接表的匹配行,
也包括左连接表的所有行。
SQL:
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B
:
right outer join:
右外连接
(
右连接
)
:
结果集既包括连接表的匹配连接行,
也包括右连接表的所有
行。
C
:
full outer join
:
全外连接:
不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1
、说明:
复制表
(
只复制结构
源表名:
a
新表名:
b) (Access
可用
)
法一:
select * into b from a where 1<>1
法二:
select top 0 * into b from a
2
、说明:
拷贝表
(
拷贝数据
源表名:
a
目标表名:
b) (Access
可用
)
insert into b(a, b, c) select d,e,f from b;
3
、说明:
跨数据库之间表的拷贝
(
具体数据使用绝对路径
) (Access
可用
)
insert into b(a, b, c) select d,e,f from b in
‘具体数据库’
where
条件
例子:
..from b in '"&Server
.MapPath(".")&"\data.mdb" &"' where..
4
、说明:
子查询
(
表名
1
:
a
表名
2
:
b)
select a,b,c from a where a IN (select d from b )
或者
:
select a,b,c from a where a
IN (1,2,3)
5
、说明:
显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate
from table where table.title=a.title) b
6
、说明:
外连接查询
(
表名
1
:
a
表名
2
:
b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7
、说明:
在线视图查询
(
表名
1
:
a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8
、
说明:
between
的用法
between
限制查询数据范围时包括了边界值
not between
不包括