declare @str varchar(8000),@sql varchar(8000)
set @str=''
select @str=@str+','+name from syscolumns WHERE ID=OBJECT_ID('表名') AND NAME!='要排除的列名'
set @str=stuff(@str,1,1,'')
set @sql='select '+@str+' from 表名'
exec (@sql) ......
试验目的:
一、学习查询结果的排序
二、学习使用集函数的方法,完成统计
等查询。
三、学习使用分组子句
一、学习查询结果的排序
1、查询全体学生信息,结果按照年龄降
序排序
select *
from student
order by sage desc
2、查询学生选修情况,结果先按照课程
号升序排序,再按成绩降序排序
select *
from sc
order by cno,grade desc
思考题:查询学生姓名,及其选修的课
程名和成绩,结果先按照课程名升序排
序,再按成绩降序排序
1、排序是对查询结果的排序,排序方法
有两种,升序(默认 asc)和降序
(desc)。
2、当排序的属性有多个时,优先排序的
放在前面,依次列出,中间用逗号隔开
。
3、当查询结果是多个表时,利用连接查
询(where 条件内把共同列相等),然
后对查询结果排序。
二、集函数的应用
1、查询student表内学生人数
select count(sno)
from student
select count(*)
from student
2、查询有选修课程的学生人数
select count(distinct sno)
from sc
3、查询3号课程的成绩总分
select sum(grade)
from sc
where cno='3'
4、查询学生年龄和
select sum(sage)
from student
5、查询学生200215122所选修的课 ......
网站数据库种马
数据库中很多表存在大量相同记录
经高人指点删除相同记录(仅保留一个)的SQL语句如下
declare @tmptb TABLE (
[ID] [int] NOT NULL ,
[SortName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[SortNote] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ParentID] [int] NULL ,
[SortPath] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Other] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
)
insert into @tmptb select distinct * from 表名
delete from 表名
insert into 表名 select * from @tmptb ......
首先说,顺序是insert为1,其次delete再者update
因为delete和update要涉及到全表扫描, update是最慢的,如果数据很多的时候最好使用delete+insert,而非update.即使表有索引,update也是最慢的!
谁再讲讲呗 我也是网上看到的这样说 晚上回家测测看 ......
包括安装时提示有挂起的操作、收缩数据库、压缩数据库、转移数据库给新用户以已存在用户权限、检查备份集、修复数据库等。
(一)挂起操作
在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:
到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
删除PendingFileRenameOperations
(二)收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
(三)压缩数据库
dbcc shrinkdatabase(dbname)
(四)转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
(五)检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
(六)修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
--CHECKDB 有3个参数:
--REPAIR_ALLOW_DATA_LOSS
-- 执行由 REPAIR_R ......
1、SQL逻辑查询处理中的各个阶级顺序
(8)SELECT (9) DISTINCT (11) <tOP_Specification> <select list>
(1)from <Left tables>
(3)<Join type>Join<Right_table>
(2) on <join conditions>
(4)WHERE <where conditions>
(5)GROUP BY <Group list>
(6)WITH {CUBE| Rollup}
(7)Having <Having conditions>
(10)ORDER BY
2、清除缓存
dbcc dropcleanbuffers --清空所以数据
dbcc freeproccache ---要从缓存中清除执行计划
dbcc flushprocindb(<db_id>)--清空数据库的执行计划
3、STATISTICS IO--返回IO信息
& ......