SQL复习 总结
2012-11-07 14:17
357 查看
新建数据库
删除数据库
新建数据表
create table Test
{
number varchar(10),
ammout float
}
drop table Test-----删除表
修改表字段(一列):
alter table Test alter column Number nvarchar(50)
插入数据:
insert into Test Number,ammout values()
修改表中的数据:
update Test set ammont=ammont+50 where Number=PK1
删除表中的数据
Delect from Test where ammout<0
插入多行
inset into Test
select union
聚合函数
Max Min Sum() Count() avg
分组
group by()
排序
order by
*******复制表结构,Copy表内容
4 复制表(只要表结构,不要数据)
(1)方法1
select *
into New2Teacher
from TblTeacher
where 1<>1
(2)方法2
use TestSchool
select top 0 *
into New3Teacher
from TblTeacher
5 把一个表的数据copy到另一个 已经用上面的方式生成的
表中。
set identity_insert New3Teacher on
insert into New3Teacher values('玉良',1,22,2000,'2010-10-10')
select* from TblTeacher
set identity_insert New3Teacher off
insert into TestDatatime (uname) values('战三')
----默认值绑定
转换日期类型
select GetDate()
print GetDate()
Print convert(varchar(50),getdate(),105)
**Print 以消息的方式输出
把‘2012-03-22’----转换为----‘201203’
Print convert (varchar(50),getdate(),105)
Print cast(getdate() as varchar(10))
3 dateadd 日期相加
算出100 天后的日期
Print dateadd(day,100,getdate())
算出200天后的日期
Print dateadd(day,200,getdate())
再转换一下
Print convert(varchar(50),dateadd(day,200,getdate()),111)
插入日期数据
update MyStudent set FBirthday='1992-03-22' where FBirthday is null
select * from Employees
order by EmpInTime
给入职超过一年的员工加薪1000
入职时间大于1 年,使用getdate和dateadd
入职日期+1年 还<当前日期
update Employees
set EmpSalary=EmpSalary+1000
where EmpInTime
DATEADD(year,1,EmpInTime)<GETDATE()
1983 年11月22日距现在相差多少年?(月)
datadiff() 相减
datadiff(year,'1983-11-22',getdate())
datadiff(month,'1983-11-22',getdate())
统计每年入职的人数
select year(EmpInTime) as 入职年份,
人数=count(*)
from Employees
group by year(EmpInTime)
---用year 获取时间的一部分
统计1991 年出生的学生 MyStudet
select * from MyStudents
where YEAR(FBirthday)='1991'
datepart 日期的一部分
print datapart(hour,getdate())
print datapart(minute,getdate())
print datapart(second,getdate())
print datapart(ms,getdate())
4.
select top 3 CallerNumber as 呼叫员编号,
count(*) 呼叫次数
from CallerRecords
where
group by CallerNumber
order by 呼叫次数 desc
更新时间
update CallRecords set StartDateTime=Dataadd(year,2,StartDateTime),
ENDDateTime=Dataadd(year,2,EndDateTime)
CASE函数
select scoreId,StudentId,english,
评级=
case(
when english>=90 then '优秀'
when english>=80 then '良好’
when english>=70 then '中等'
when english>=60 then '及格'
else'不及格'
)
end
from Score
一个表中,有AB两列,现在要求查询结果集中包含ABC三列。
如果A>B则
C列中的值为A,否则为B
create table 表名
(
A int,
B int
)
insert into values()
select A, B ,
C=
case
when A>B then A
else B
end
from 表名
-------------------------------------
USE Test
select * from MyOrders
select
salesAssistant as 销售员,
Sum(saveNumber*savePrice) as 销售总金额,
称号=
case
when Sum(saveNumber*savePrice) >6000 then '金牌'
when Sum(saveNumber*savePrice) >6000 then '银牌'
when Sum(saveNumber*savePrice) >6000 then '铜牌'
else '普通'
end
from MyOrders
group by salesAssistant
order by 销售总金额 desc
----------------------------------
cerate table TestCase2
(
Number varchar(50),
Amount float
)
insert into TestCase2 values('RK1',10)
insert into TestCase2 values('RK2',30)
insert into TestCase2 values(RK3',-20)
insert into TestCase2 values('RK4',-60)
select
number as 账号,
支出=
case
when Amont>0 then AMOUNT
else 0
end,
收入=
case
when Amount<=0 then abs(Amount)
else 0
end
from 表
删除数据库
新建数据表
create table Test
{
number varchar(10),
ammout float
}
drop table Test-----删除表
修改表字段(一列):
alter table Test alter column Number nvarchar(50)
插入数据:
insert into Test Number,ammout values()
修改表中的数据:
update Test set ammont=ammont+50 where Number=PK1
删除表中的数据
Delect from Test where ammout<0
插入多行
inset into Test
select union
聚合函数
Max Min Sum() Count() avg
分组
group by()
排序
order by
*******复制表结构,Copy表内容
4 复制表(只要表结构,不要数据)
(1)方法1
select *
into New2Teacher
from TblTeacher
where 1<>1
(2)方法2
use TestSchool
select top 0 *
into New3Teacher
from TblTeacher
5 把一个表的数据copy到另一个 已经用上面的方式生成的
表中。
set identity_insert New3Teacher on
insert into New3Teacher values('玉良',1,22,2000,'2010-10-10')
select* from TblTeacher
set identity_insert New3Teacher off
insert into TestDatatime (uname) values('战三')
----默认值绑定
转换日期类型
select GetDate()
print GetDate()
Print convert(varchar(50),getdate(),105)
**Print 以消息的方式输出
把‘2012-03-22’----转换为----‘201203’
Print convert (varchar(50),getdate(),105)
Print cast(getdate() as varchar(10))
3 dateadd 日期相加
算出100 天后的日期
Print dateadd(day,100,getdate())
算出200天后的日期
Print dateadd(day,200,getdate())
再转换一下
Print convert(varchar(50),dateadd(day,200,getdate()),111)
插入日期数据
update MyStudent set FBirthday='1992-03-22' where FBirthday is null
select * from Employees
order by EmpInTime
给入职超过一年的员工加薪1000
入职时间大于1 年,使用getdate和dateadd
入职日期+1年 还<当前日期
update Employees
set EmpSalary=EmpSalary+1000
where EmpInTime
DATEADD(year,1,EmpInTime)<GETDATE()
1983 年11月22日距现在相差多少年?(月)
datadiff() 相减
datadiff(year,'1983-11-22',getdate())
datadiff(month,'1983-11-22',getdate())
统计每年入职的人数
select year(EmpInTime) as 入职年份,
人数=count(*)
from Employees
group by year(EmpInTime)
---用year 获取时间的一部分
统计1991 年出生的学生 MyStudet
select * from MyStudents
where YEAR(FBirthday)='1991'
datepart 日期的一部分
print datapart(hour,getdate())
print datapart(minute,getdate())
print datapart(second,getdate())
print datapart(ms,getdate())
4.
select top 3 CallerNumber as 呼叫员编号,
count(*) 呼叫次数
from CallerRecords
where
group by CallerNumber
order by 呼叫次数 desc
更新时间
update CallRecords set StartDateTime=Dataadd(year,2,StartDateTime),
ENDDateTime=Dataadd(year,2,EndDateTime)
CASE函数
select scoreId,StudentId,english,
评级=
case(
when english>=90 then '优秀'
when english>=80 then '良好’
when english>=70 then '中等'
when english>=60 then '及格'
else'不及格'
)
end
from Score
一个表中,有AB两列,现在要求查询结果集中包含ABC三列。
如果A>B则
C列中的值为A,否则为B
create table 表名
(
A int,
B int
)
insert into values()
select A, B ,
C=
case
when A>B then A
else B
end
from 表名
-------------------------------------
USE Test
select * from MyOrders
select
salesAssistant as 销售员,
Sum(saveNumber*savePrice) as 销售总金额,
称号=
case
when Sum(saveNumber*savePrice) >6000 then '金牌'
when Sum(saveNumber*savePrice) >6000 then '银牌'
when Sum(saveNumber*savePrice) >6000 then '铜牌'
else '普通'
end
from MyOrders
group by salesAssistant
order by 销售总金额 desc
----------------------------------
cerate table TestCase2
(
Number varchar(50),
Amount float
)
insert into TestCase2 values('RK1',10)
insert into TestCase2 values('RK2',30)
insert into TestCase2 values(RK3',-20)
insert into TestCase2 values('RK4',-60)
select
number as 账号,
支出=
case
when Amont>0 then AMOUNT
else 0
end,
收入=
case
when Amount<=0 then abs(Amount)
else 0
end
from 表
相关文章推荐
- 数据库复习总结(6)-SQL语句入门(脚本、命令)
- 数据库系统概论复习总结3 --- 第二章关系数据库标准语言SQL
- SQL复习总结
- SQL--DML复习总结(一)
- T-SQL复习总结--用T-SQL创建,修改,管理,删除数据库
- SQL复习总结——DQL,聚合函数与分组
- T-SQL复习总结--用T-SQL创建,修改,管理,删除数据库
- sql 复习总结(参照博友)
- Oracle-SQL命令复习总结_1
- hibernate-查询总结、sql复习、HQL、criteria详解
- ADO.NET复习总结(3)--参数化SQL语句--防止sql注入式攻击
- 自己复习sql,然后总结的2种数据库类
- DB2 sql 重点难点复习总结
- mysql命令行中执行sql的几种方式总结
- 代码块,static的复习总结
- SQL总结(二)连表查询
- SQL小知识_长期总结
- 记录: Sql 常见分页方法总结
- SQL查询中用replace替换ntext,text字段的各种方法总结
- ORACLE SQL总结二:集合操作符合和DML语句