ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:293.67KB ,
资源ID:7880012      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7880012.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(J数据库查询语言.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

J数据库查询语言.docx

1、J数据库查询语言数据库查询语言1.SQL,The party split into two distinct groups.该党分裂成两个截然不同的团体。Select Distinct SignId from doc_Meet;选择不同的值在列SignId中注意字段的名字不能和关键字冲突,如from to,第一个内置函数select Count( DISTINCT Content) from Mes;Distinct 以那个字段的值作为标准,显示不同,结果是3,除去Distinct 关键字就是6.Dintinct 仅仅输出后面字段的值,其他的值忽略了.这里我们发现将distinct放在第一位,

2、那么对后面的每一个属性(字段),都要保持不同,所以它输出了所有的值将distinct放在后面报错,放在where中同样报错,如果Conten列中有null的那么去要才除去select Count( Content) from Meswhere Content is NOT NULL;结果显示6,第7个被过滤掉In关键字表示我们确定这个值的一个范围select Content from Meswhere Content in(会议1,会议三); Count() 统计结果数目,Between限定数据的连续范围,而In是限定几个离散值Select *from StuWhere Snum betwee

3、n 10 and 40;Order by snum; 注意空格order by snum DESC默认是从小到大,descending 从大到小等同于 order by Sales DESC.,Like 关键字,同in between 平行,表示模糊查询, “A_ B”表示匹配三个字符,开头结尾是A,B此时无法匹配, 会”议”2要匹配它时候注意用单引号尽量在表格中不要填入单双引号Where Content like %会 表示任意以会字结尾的;%会% 中间是”会” 字的会%,打头的下划线匹配一个字符我们选择数据总是以列的值作为参考,计数是计算行的总数,函数也是计算符合条件的Max(),Min(

4、),Count(),AVG(平均值),SUM()最大最小值,还支持运算符,+-*/ ,对于字符串也支持一些运算.下面看分组,group by ,表示依照值的内容若相同则列为一组,Select Count(Content) from Mesgroup by Contentorder by id;分了五组,前4个id两两行一组,后因为内容不同各自三组,依照id排序,发现我们的返回的是一个系列的值,因为有很多个Content,人为的将表,打散为若干个行,但是表头不变,如果有很多表的Content表的值为null那么就统一的算一个因为null=nullGroup by 有一个原则就是select后面的

5、所有列中没有使用聚合函数的列,必须出现在group by后面!排除了哪些使用聚合函数的字段名字,其他的都作为分组标准一个query.config的一条查询语句是:使用了链接就可能出现多条主键id,如果主表记录和附表是一对多关系。 可以发现 order by 字段也要出现在我们的group by 中,distinct 关键字是为了防止多个doc_Signing.ObjId对应一个doc_File.Id,那么最终内联的结果就是出现了多个Id看到两个96,一条公文产生多个签收条目。比如我想知道一个班级同龄人的个数,那么Select age,Count(id) as 同龄人个数 from Stugro

6、up by ageorder by id;表示显示的列名字,是个临时的名字where子句的作用是在对查询结果进行分组前,将不符合条件的行去掉,(去行),select可以去掉你不想看到的列,在分组之前过滤数据,(择列)having子句的作用是赛选满足条件的组,再分组之后过滤数据,条件中经常包含聚合函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组,group by又优先于order by如果我们想要找出同龄人数超过三个的Select age ,count(id) as 同龄个数 from Stugroup by agehaving Count(age)2,只看超过两个以上同龄

7、人order by id;每当age的值相同就会并为一组,统计每组的count(id)个数,有多少个不同的age就会产生多少个不同行,,();如果我们表的名字不理想,可以使用别名,就是 from后面加一个名字就是别名Select Student.age ,count(id) as 同龄个数 from Stu Studentgroup by Student.agehaving Count(Student.age)2order by id;也可以链接两个表的时候字段重名的冲突,一个表的时候也可以定义别名但是不使用之前的也是表示别名的意思用字段链接两个表;select *from SignStatE

8、 s,stu stuwhere s.MesID=stu.ID这里就是左边的MesId和stu.Id的相连接,发现总的列数是两个表的和,猪八戒出现两次,因为MesId的3出现了两次,select Count(*) 关联后表的总行数from SignState s,stu stuwhere s.MesID=stu.ID关联表后所有age不同的个数用select Count(distinct age) age的不同个数from SignState s,stu stuwhere s.MesID=stu.ID,三个43岁,一个12岁当然是2个,select Count(distinct age) age

9、的不同个数,agefrom SignState s,stu stuwhere s.MesID=stu.IDSelect添加一个age表示同时显示列age,我们看到只是显示了一个值12岁,统计的结果数目不应当和具体统计项目放在一起如果where子句错误可能会产生笛卡尔链接上述链接称为内连接,寻找两个表中字段值相同的行,合成一张表,可以再where和form子句链接,外部左链接:是即使没有匹配左边的表的所有行也被输出,只不过右边的表的项目会产生值,select *from SignState 左边表left join stu 右边表on SignState.id=stu.idSignState有四

10、行,所以无论如何都会产生四行结果,换成:select *from stuleft join SignStateon SignState.id=stu.id这里没有出错,左边表有行,无论如何都用行结果右链接,同样如此还有一个全连接表示,左右统统链接,select stu.sname+tea.tnamefrom stu,tea表示链接两个字符串,作为一个结果列()获取子字符串,/1表示从第一个字符开始Select substring(Product.name,1,10)+” as sortnameFrom Product结果:Alice Mutt. Aniseed Sy. Boston Cra.

11、Camembert . Carnarvon . Chai. Chang. ()移除字符串的字头空白()或者字尾的空白使用inner join 的方法,From tabAInner join tabBON tabA.name=tabB.id用两个字段将两个表连接起来,符合where和having子句的那些两个表的字段(name和id)都相同的行会被返回.连接三个表,左边表是一个()From (tabAInner join tabBON tabA.name=taB.id)Inner join tab3 On tabA.name=tab3.id四个表From (tabAInner join tabB

12、ON tabA.name=taB.id)Inner join tab3 On tabA.name=tab3.id)Inner join tab4On tabA.name=tab4.id就是将on 表.字段=表.字段 加上括弧,一直到from前面现在有四个表学生表,课程表课程号码,课程名字,老师的id教师表成绩表,id,学生号,课程号,分数问题1.选出1,2号课程平均分高于70的学生的学号和姓名,显然需要avg(score),还要关联两个表,这里必须使用group by用学号进行分组,select stuid,avg(score),stu.snamefrom sc inner join stu

13、on stu.id=sc.stuidwhere courseid in(1,2)group by stuid,stu.snamehaving avg(score)70发现select用于选择显示的属性列,where用于赛选元组行,group by 会分开计算,having 对分组进行过滤,也就是最后的一个显示过滤没有having 将显示全部,问题2求所有学生学习的科目数,和总分情况逆向思维,只不过在学生表中增加了两列,count(score)和count(sc.id),显然需要连接,Stu和SC表通过学生的idselect stu.id,stu.sname,count(sc.id) as 门数

14、,sum(score) as 总分from stu left join sc on stu.id=sc.stuidgroup by stu.id,stu.sname左连接可以保证所有的人都有统计结果哪怕上官宇什么都没有选择,having 门数5,就可以将我们最后一个数据踢出问题3统计姓黄的老师或者教数学的老师的人数.:只是一列select count(1)from tea left join course on tea.id=course.teaidwhere Tname like 黄% or course.Cname=数学问题4查询没有上过”郭靖”老师课的学生的学号姓名(只是知道老师的名字不

15、知道他带什么课程)将老师和学生链接起来的是两张表,成绩表中的SC.courseid关联到下面的course.Id,而下面的course.Teaid关联老师的主键select stu.id,stu.snamefrom stu Where id not in(select distinct(sc.stuid) from sc,course,tea where sc.courseid=course.id and course.teaid=tea.id and tea.tname=郭靖)用where子句就可以关联三个表,最终到达tea.Tname=郭靖sc.courseid=course.id and

16、 course.teaid=tea.id and tea.tname=郭靖因为SC表包含了我们想要的学生的主键id,只不过多次出现需要用distinct,还可以在最后一个where子句中加入Sname!=刘涛来限制最后表的结果,where子句是通过单元格的值来限制行的出现.问题5查询学过白老师教过的所有课程的学生的学号姓名,:从老师表中拿到白老师的id,在course表中查到teaid=白老师的所有主键,(一个课程号的集合)再回到SC表中的courseid,找到所有的stuidSelect stu.id,stu.snameFrom stuWhere id in (A)A= Select dis

17、tinct(stuid) from sc where sc.courseid in (select course.id from course,tea where course.teaid=tea.id and tea.tname=白云霄)注意标点符号从word中复制到db软件中会出现错误,记得看字体的颜色, 用两个嵌套的子查询,学生的id来自SC表,SC的课程号码courseid来自course表中teaid都指向白老师的哪些课程号.问题6查询1号课程成绩比2号成绩高的学生的学号,姓名首先尝试着列出所有学生的一号和二号课程的成绩,select stu.id,stu.sname,(select

18、 sc.score from sc where sc.stuid=stu.id and sc.courseid=1) as score1,(select sc.score from sc where sc.stuid=stu.id and sc.courseid=2) as score2 from stu两个select子句包含在第一个select语句中,就是添加了连个列Select stu.id.stu.sname ,(select),(select)其中这两个select子句必须返回一列值,分别代表各个学生的得分,这里还是循环迭代,取出每一个stu.id进入(select)子句中,匹配出一

19、个符合条件的分数再返回.再加上一句: where score1score2就搞定.如果要通过课程的名字来限定,那么就要根据Course表从cname 确定idand sc.courseid in (select course.id from course where ame=数学)一个表中如果id和另一个属性列有同样的唯一性,那么他们是可以相互替代的,因为这是一个一对一的关系,通过”数学”二字检索出id问题7查出 没学课程数目大于2个的学生的信息:select stu.id,stu.snamefrom stu,scwhere stu.id=sc.stuidgroup by stu.id,stu

20、.snamehaving count(sc.courseid)10问题12 Update 更新数据一次更新多个值update Tea set TName=就是他 where Id in (10,14,9)就是在where做限定。问题13 删除字段,数据库定义语言,修改了表结构。ALTER table Tea DROP column TNum增加字段alter table docdsp add Tnum char(200)问题14 用like 搜索关键词百分号就需要转义Mysql 中select * from home_feed where OriginalContent like %order by -DateCreatedSql server 中select * from Stu where SName like %其他关键字符如_ ?等等同样处理。问题15 使用stuff函数合并字段Stuff函数问题16

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1