SQL Server查询准备数据库和数据,并进行简单查询

来源:互联网 发布:淘宝文案的标题怎么写 编辑:程序博客网 时间:2024/05/17 02:25

1:创建数据库表:仓库

      

create table 仓库(  仓库ID int identity(1, 1) primary key,  仓库号 varchar(50) unique,  城市 varchar(50) default '青岛',  面积 int default 800 check(面积 >= 800 and 面积 <=1800),  创建时间 datetime)insert into 仓库(仓库号, 城市, 面积, 创建时间) values('wh1', '北京', 900, '2003-04-02')insert into 仓库(仓库号, 城市, 面积, 创建时间) values('wh2', null, 600, '2003-04-09')insert into 仓库(仓库号, 城市, 面积, 创建时间) values('wh3', '上海', 1203, '2003-05-02')insert into 仓库(仓库号, 城市, 面积, 创建时间) values('wh4', '北京', 1000, '2004-04-05')insert into 仓库(仓库号, 城市, 面积, 创建时间) values('wh5', '济南', 900, '2004-05-05')

2:创建数据库表:职工

create table 职工(   职工ID int identity(1, 1) primary key,   职工号 varchar(50) unique,   仓库号 varchar(50) references 仓库(仓库号),   姓名  varchar(50) not null,   性别 varchar(10) check(性别='女' or 性别='男') default '男',   工资 int)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg1', 'wh1', '刘刚', '女', 1250)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg2', 'wh1', '林安平', null, 1310)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg3', 'wh3', '张可', '女', 2050)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg4', 'wh1', '吴平台', '男', 1850)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg5', 'wh3', '王峰', '男', 1962)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg6', 'wh3', '吴艳萍', '女', 1830)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg7', 'wh4', '张亮', '男', 1850)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg8', 'wh1', '刘或生', '男', 1750)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg9', 'wh3', '王静', '女', 1250)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg10', 'wh4', '李明', '男', 1850)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg11', 'wh1', '潘萍', '女', 1550)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg12', 'wh3', '李宁', '男', 2000)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg13', 'wh4', '吴忠诚', '男', 2900)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg14', 'wh1', '周围', '女', 2509)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg15', 'wh3', '林林', '男', 10000)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg16', 'wh4', '王东', '男', 2598)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg17', 'wh1', '吴生亮', '男', 1850)insert into 职工(职工号, 仓库号, 姓名, 性别, 工资) values('zg18', 'wh3', '王平峰', '男', 1962)

3:创建供应商表

      

create table 供应商( 供应商ID int identity(1, 1) primary key, 供应商号 varchar(50) unique, 供应商名 varchar(50), 城市     varchar(50), 联系方式 varchar(50), 电子邮件 varchar(100) check(电子邮件 like '%@%.%') default 'capinfotech@163.com')insert into 供应商(供应商号, 供应商名, 城市, 联系方式, 电子邮件) values('s1', '青岛三元电子厂', '青岛', '0532-8369000', 'test1@163.com')insert into 供应商(供应商号, 供应商名, 城市, 联系方式, 电子邮件) values('s2', '济南轻工业集团', '济南', '0531-8369001', 'test1@163.com')insert into 供应商(供应商号, 供应商名, 城市, 联系方式, 电子邮件) values('s3', '济南电子元件公司', '济南', '0531-8369002', 'test1@163.com')insert into 供应商(供应商号, 供应商名, 城市, 联系方式, 电子邮件) values('s4', '上海天桥厂', '上海', '0531-8369003', 'test1@163.com')insert into 供应商(供应商号, 供应商名, 城市, 联系方式, 电子邮件) values('s5', '青岛天桥厂', '青岛', '0531-8369004', 'test1@163.com')

4:创建订购单表

  

create table 订购单(  订购单ID int identity(1, 1) primary key,  供应商号 varchar(50) references 供应商(供应商号),  职工号 varchar(50) references 职工(职工号),  订购单号 varchar(50) unique,  订购日期 datetime,  金额  int)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg1', 'or1', '2003-09-02', 5000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s1', 'zg2', 'or2', '2004-09-03', 8600)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s1', 'zg1', 'or3', '2003-09-02', 12000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg2', 'or4', '2004-09-02', 5000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg1', 'or5', '2005-09-02', 16000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s3', 'zg11', 'or6', '2003-09-02', 15000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s4', 'zg13', 'or7', '2004-09-02', 6000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s1', 'zg15', 'or8', '2005-09-02', 7999)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg4', 'or9', '2003-09-02', 8600)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg8', 'or10', '2004-09-02', 9000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s4', 'zg8', 'or11', '2005-09-02', 9700)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg10', 'or12', '2003-09-02', 6500)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg9', 'or13', '2004-09-02', 9790)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg9', 'or14', '2005-09-02', 16009)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s4', 'zg7', 'or15', '2003-09-02', 8120)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg18', 'or16', '2004-09-02', 9120)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg5', 'or17', '2005-09-02', 9500)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg5', 'or18', '2003-09-02', 9600)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s4', 'zg5', 'or19', '2004-09-02', 9700)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg15', 'or20', '2005-09-02', 8800)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s5', 'zg16', 'or21', '2003-09-02', 12000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg16', 'or22', '2004-09-02', 12500)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s4', 'zg17', 'or23', '2005-09-02', 13000)insert into 订购单(供应商号, 职工号, 订购单号, 订购日期, 金额) values('s2', 'zg18', 'or24', '2003-09-02', 13500)

5:建立基本的查询

--select 城市 from 仓库--select 城市,面积 from 仓库--select 姓名,工资, 工资*0.08 as '奖金' from 职工select 姓名,工资,(CAST(工资*0.08 as decimal(18,2))) as '奖金' from 职工  --定义奖金小数点之后的位数


select 姓名, 工资, 工资*5.0/1000 as 代扣税, 工资*0.08 as 奖金,       工资-(工资*5.0/1000) + (工资*0.08) as 应发工资 from 职工



可以使用cast为应发工资指定小数点的位数:

select 姓名, 工资, 工资*5.0/1000 as 代扣税, 工资*0.08 as 奖金,       cast(工资-(工资*5.0/1000) + (工资*0.08) as decimal(20, 2)) as 应发工资 from 职工



使用case when end显示评语信息

select 姓名, 工资, 职工评语=  case       when 工资>2000 then '优秀'     when 工资>=1800 and 工资<=2000 then '优良'     when 工资>=1500 and 工资<1800 then '一般'     when 工资<1500 then '差'  endfrom 职工



连接列值,由于工资字段是数值型的,无法与字符串直接连接,要把该字段类型转换为字符串类型,可以使用cast函数转换

select 姓名 + '的工资是:' + CAST(工资 as varchar(10)) as 工资说明 from 职工



select 姓名 + '的评语是:' + (   case       when 工资>2000 then '优秀'     when 工资>=1800 and 工资<=2000 then '优良'     when 工资>=1500 and 工资<1800 then '一般'     when 工资<1500 then '差'     end ) as 职工评语说明  from 职工

效果图:



--select * from 职工 where 姓名='林安平'--select * from 订购单 where 职工号 in(select 职工号 from 职工 where 姓名='林安平')--select * from 仓库 where 仓库号 in(select 仓库号 from 职工 where 姓名='林安平')--select * from 仓库 where not(城市='上海' or 城市='济南')--select * from 职工 where 工资 between 1500 and 1800select * from 职工 where 职工号 in('zg1', 'zg2', 'zg11', 'zg15')



5:like模糊查询

         

      通配符

             含义

      %

           包含多个或者多个字符

     _(下划线)

           包含一个字符

       []

           指定范围(如[a-z])

       [^]

           不属于指定范围,如[^a-z]


--select * from 职工 where 姓名 like '%平%'--select * from 职工 where 姓名 like '%平'--select * from 职工 where 姓名 like '%平%' and 姓名 not like '%平'--select * from 职工 where 姓名 like '_平' or 姓名 like '平_'--select * from 职工 where 工资 like '[1-2][2-7]%'--select * from 职工 where 工资 like '_[2-6]_[0-9]'--select * from 职工 where 工资 like '_[2-9]%'--select * from 职工 where 职工号 + 仓库号 like '%3%'--select * from 职工 where 职工号 like '%3%' or 仓库号 like '%3%'

6: 汉字排序

--汉字排序--先按笔画进行排序

select * from 职工 order by 姓名 collate chinese_prc_stroke_cs_as_ks_ws asc;



利用姓名进行升序排序显示职工信息,按音序进行排序

select * from 职工 order by 姓名 collate chinese_prc_cs_as asc



显示部分记录的排序

 

select top 3 * from 职工 order by 工资 desc



显示工资最低的前20%条职工信息

 

select top 20 percent * from 职工 order by 工资 asc






原创粉丝点击