资源描述:
《java面试sql习题集》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQL习题集数据库拆表原则1.简单字段中的复合字段:解决方法:向上打通,或拆成两表2.完全依赖:知道a就能知道b,返过来就不一定.实现:将同一个主题的东西放在一起.主题可以是一个实体、名词、概念。3.无传递依赖。将传递依赖转为直接依赖。原因:减少插入冗余。减少增删异常。4.当出现一对多时不能横拆,一定拆成两个表,特别的固定范围可以横拆(签到管理)5.多对多必有中间表6.代码表,大量重复的或枚举型可以用代码表.7.能计算的字段不要数据定义语句DDLcreatealterdrop数据控制语句DCLgrantdenyrevoke
2、数据操纵语句DMLselectupdateinsertdelete一.SQLServer2000Select变化集锦1.查询所有字段(效率低)查询所有的老师select*fromdbo.教师2.字段枚举查询教师的ID,及姓名两项select教师_ID,教师名fromdbo.教师3.字段取别名方法有二1)as可以省略select教师名asteacherfromdbo.教师2)selectteacher=教师名fromdbo.教师4.字段的可计算性1)简单字段计算教师工资的10%select工资*0.1fromdbo.教师2)
3、把一个检索结果作为查询字段本学校的师生比例select(selectcount(*)fromdbo.教师)/1.0/(selectcount(*)fromdbo.学生)f5 取检索结果的前几个selecttop3教师_IDfromdbo.教师6 取检索结果总数的百分比selecttop30percent教师_IDfromdbo.教师7去掉重复记录selectdistinct性别_IDfromdbo.教师8在聚合统计函数中统计不重复指定字段selectcount(distinct系_ID)fromdbo.教师9casewhe
4、nthenelseend在seelct中的应用从教师表中查询,将性别_id是1的显示为男,是2的显示为女select(casewhen性别_ID=1then'男'when性别_ID=2then'女'end)fromdbo.教师横向查询男女人数selectsum(casewhen性别_ID=1then1else0end)as'nan',sum(casewhen性别_ID=2then1else0end)as'nv'fromdbo.教师10可以重复列出表的的字段select*,*,*from教师11检索结果放常量select教师
5、名,'出生于',出生日期fromdbo.教师-----------------------------------From变化集锦1.从一个表中检索select*fromdbo.教师2从一个检索结果中再检索即从临时表中检索select*from(select教师_ID,教师名,出生日期,系_ID,性别_ID,职称_IDfromdbo.教师)lin–sqlserver2000中临时表通常要起别名wherelin.教师_ID<43.从多表中检索,构成迪卡尔乘积(效率低)selectdbo.教师.*,系名fromdbo.教师,d
6、bo.系wheredbo.教师.系_ID=dbo.系.系_ID4多表的联接查询1)左连接(尊重左边)select*fromdbo.系leftjoindbo.教师ondbo.系.系_ID=dbo.教师.系_ID2)右连接(尊重右边)select*fromdbo.系rightjoindbo.教师ondbo.系.系_ID=dbo.教师.系_ID3)内连接(都不尊重,即两边都得有)下例为两个以上表的连接写法select*fromdbo.系innerjoindbo.教师ondbo.系.系_ID=dbo.教师.系_IDinnerjoi
7、ndbo.教师认课ondbo.教师.教师_ID=dbo.教师认课.教师_ID4)全连接(都尊重)select*fromdbo.系fulljoindbo.教师ondbo.系.系_ID=dbo.教师.系_ID5.给被检索表起别名注意:起了别名就一定用别名引用字段错误的selectdbo.教师.教师名fromdbo.教师js正确的selectjs.教师名fromdbo.教师jswhere集锦1.常规关系运算>、>=、<、<=、!=、<>、=select教师_IDfromdbo.教师where教师_ID<>1只检索表结构不要任何数
8、据Select*Fromdbo.教师Where1!=12.常规逻辑运算not、and、orselect教师_IDfromdbo.教师wherenot(教师_ID>=1and教师_ID<=8)3.区间教师_ID>=1并且教师_ID<=8select教师_IDfromdbo.教师where教师_IDbetw