sql sever 基础 练习题
--1. 求半径2米,高3米的圆柱体体积。
1 declare r @hight float,@r float,@ratio float ,@ v float --声明变量
2 set @hight=3 --赋值
3 set @r=2
4 set @ratio =3.14
5 set @v=@hight*@r*@r*@ratio
6 print '体积为'+convert(varchar(20),@v)+'立方米' --输出的时候因为定义为浮点 无法一起输出 所以用convert改变数据类型
--2. 求字符串‘abcdefg’的长度。
1 select len('abcdefg') --求长度用len
--3. 显示pubs数据库中所有作家的au_lname的开头两个字母,大写显示。(字符函数)
1 select upper (left(au_lname,2)) from authors 转化为大写用upper()
--4. 取字符串‘abcdefg’的第2到第5个字母。(字符函数)
1 select substring ('abcdefg',2,5)
----5. 计算2001年9月11日到今天已经多少天了。(日期函数)
1 select datediff (DAY,'2001-09-11' , getdate()) as ' 天' 2 select datediff (month,'2001-09-11' , getdate()) as' 月' 3 select datediff (year,'2001-09-1', getdate()) as '年'
select datetime 指定日期中的部分字符串 因为今天做练习 我个废物游标循环 添加年代。。搞了2个多小时
--6. ,找出编号为BU7832的记录,如果类型为business 显示商业类型。(if语句
1 declare @type varchar(20) 2 select @type=type from titles where title_id='BU7832' 3 if(@type='business') 4 begin 5 print '商业类型为: business' 6 select *form titles where title_id='BU7832' 7 end
--7. 查询pubs数据库publishers表,获取出版商名称和所在的国家,如果国家名为USA Germany France分别显示其对应中文的形式使用case语句)
1 SELECT country, 国家 = CASE 2 WHEN country = 'USA' THEN '美国' 3 WHEN country = 'Germany' THEN '德国' 4 WHEN country = 'France' THEN '法国' 5 ElSE '' 6 7 END 8 FROM publishers
--8、 查询pubs数据库的employee表,如果表中雇员的平均服务时间长于10年,则打印信息:‘我们的雇员都很忠诚:)’,否则打印信息:‘我们的雇员经常跳槽:(’。
1 select datediff(year,hrie_date,getday())from employee as 'year' 2 into years 3 from employee 4 declare @time =avg(year) from years 5 if(@time>10) 6 begin 7 print '我们的雇员很忠诚' 8 end 9 else 10 begin 11 print '我们的雇员经常跳槽' 12 end 13 --想了下用别的写 多此一举啊
--9. 查询pubs数据库中employee表,显示相关雇员信息(id,姓名,服务时间等),其中增加一个‘雇员类型’列:如果雇佣时间长于18年,则显示他为‘新雇员’,否则显示他为‘老雇员’
1 select emp_id,fname,lname,hrie_date, 2 'year'= case 3 when datediff(year,hrie_date,gettime())>19 4 then '老雇员' 5 else '新雇员' 6 end 7 from employee
--只看题目不看逻辑 神他妈老员工