1.按姓氏笔画排序:
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
2.数据库加密:
select encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
3.取回表中字段:
declare @list varchar(1000),@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
set @sql='select '+right(@list,len(@list)-1)+' from 表A'
exec (@sql)
4.查看硬盘分区:
EXEC master..xp_fixeddrives
5.比较A,B表是否相等:
if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'
6.杀掉所有的事件探察器进程:
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'
7.记录搜索:
开头到N条记录
Select Top N * From 表
-------------------------------
N到M条记录(要有主索引ID)
Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
----------------------------------
N到结尾记录
Select Top N * From 表 Order by ID Desc
8.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
9:获取当前数据库中的所有用户表
select Name from sysobjects where xtype='u' and status>=0
10:获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')
11:查看与某一个表相关的视图、存储过程、函数
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
12:查看当前数据库中所有存储过程
select name as 存储过程名称 from sysobjects where xtype='P'
13:查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
或者
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
14:查询某一个表的字段和数据类型
select column_name,data_type from information_schema.columns
where table_name = '表名'
[n].[标题]:
Select * From TableName Order By CustomerName
[n].[标题]:
Select * From TableName Order By CustomerName
------------------------------------------------------------------------------------------------------课上学习---------------------------------------------------------------------------------------------------------------------
1 获取MyStudents表中年龄最大的前5个人,和前20%
select TOP 5 * from MyStudents order by FAge DESC
select TOP 20 percent * from MyStudents order by FAge DESC
2 获取当前时间
select GETDATE()
3 去掉重复distinct
select distinct * from MyStudents
4 查询英语成绩最大,最小,总分和平均值
select
最高分=(select MAX(FEnglish) from MyStudents),
最低分=(select min(FEnglish) from MyStudents),
总分=(select SUM(FEnglish)from MyStudents),
平均分=(select AVG(FEnglish)from MyStudents)
5 查询班集总人数
select COUNT(*) as 总人数 from MyStudents
6 查询数学成绩为null的人数(在数据库中进行设置n各人的数学成绩为null看效果)
select * from MyStudents where FMath is null
7 男学生出生日期的最大值和最小值(设计出生日期字段)
select
最大生日=(select MAX(FBirthday) from MyStudents where FGender='男'),
最小生日=(select min(FBirthday) from MyStudents where FGender='男')
1手动添加[主键约束]PK_Employees_EmpId
alter table Employees add constraint PK_Employees_EmpId primary key(EmpId)
2手动为EmpName增加非空约束
alter table Employees alter column EmpName varchar(50) not null
3手动为EmpName增加唯一键约束
alter table Employees add constraint UQ_Employees_EmpName unique(EmpName)
4删除唯一键约束
alter table Employees drop constraint UQ_Employees_EmpName
5为性别增加默认约束,使默认值为"男"
alter table Employees add constraint DF_Employees_EmpGender
default('男') for EmpGender
6alter table Employees add constraint CK_Employees_EmpAge
check(EmpAge>=0 and EmpAge<=120)为年龄增加检测约束 0-120含0和120
7为性别增加检查约束 非 男 即 女
alter table Employees add constraint CK_Employees_EmpGender
check(EmpGender='男' or EmpGender='女')
8--为员工表增加外键约束
--首先,设置部门表中的DepId为主键,并且外键不能为空
alter table Department add constraint Pk_Deparment_DepId primary key(DepId)
alter table Employees add constraint FK_Employees_EmpDepId
foreign key(EmpDepId) references Department(DepId) on delete cascade
9一条语句删除多个约束
alter table Employees drop constraint FK_Employees_EmpDepId,
CK_Employees_EmpAge,
UQ_Employees_EmpName
10一条语句为表增加多个约束
alter table Employees add constraint
UQ_Employees_EmpName
unique(EmpName),
constraint
CKSSS
check(EmpAge>=0and EmpAge<=150)
1. -- 查询 MyStudents 数学成绩没有及格的学生
select
FName as 姓名,FMath as 数学成绩
from MyStudents
where 60<=FMath AND FMath<80
2. -- 查询年龄大于 20 的男学生
select Fname as 姓名,FAGE AS 年龄 from MyStudents where FAge>27 and FGender='男'
3. -- 查询年龄大于 27and 小于 33 的男学生
select Fname as 姓名,FAGE AS 年龄 from MyStudents where FAge>27 and Fage<33 and FGender='男'
---between ..and (between 27 and 30)
select Fname as 姓名,FAGE AS 年龄 from MyStudents where FAge between 27 and 30 and FGender='男'
4. -- 查询部门 1,4,5 中的员工
select EmpName as 姓名, EmpDepId AS 部门号 from Employees where DepId in(1,4,5)
5. -- 查询 mystudents 中所有姓张的同学 ,% 代表 0 个或多个任意字符
select * from MyStudents where FName like '张%'
6. -- 查询所有数学成绩为 null 的同学 , 并且将 null 替换为 ' 缺考 '
select FName as 姓名,FAge as 年龄,数学成绩=ISNULL( cast(FMath as varchar(50)),'缺考') from MyStudents where FMath is null
7. -- 按英语成绩排序
select *from MyStudents order by FEnglish desc
8. -- 查询学生表中的信息,显示 姓名,性别,英语成绩,数学成绩和 平均分 并按照平均分 降序排列
9. -- 统计学生表 mystudent 中男同学和女同学的人数
select 性别=FGender,COUNT (*) as 人数 from MyStudents group by FGender
10. -- 统计员工表中每个部门中男性员工的个数超过 3 人的人数
select 部门号=EmpDepId,部门男性人数=COUNT(*)from Employees where EmpGender='男'group by EmpDepId having COUNT(*)>3
11. 查询以下数据表 MyOrder :
(1) 统计一个热销商品排名表,即按照每种商品的销售数量统计。
select 商品名称,总销售数量=SUM(销售数量)from MyOrders group by 商品名称order by 总销售数量 desc
(2) 统计销售总价格超过 3000 元的商品名称和销售总价,并按照销售总价降序排列。
select SUM(销售数量)*avg(销售价格)as '销售总价',商品名称 from MyOrders group by 商品名称 having SUM(销售数量)*avg(销售价格)> 3000 order by 1 desc
(3) 统计各个客户对“可口可乐”的喜爱程度(即统计每个购买人对“可口可乐”的购买数量)
select 购买人,购买量=count(*),商品名称='可口可乐' from MyOrders group by 购买人 order by 购买量 desc select * from MyOrders