网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL练习资料

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为需要朋友们搜集整理了SQL练习资料相关资料,希望对各位网友有所帮助!


    SQL练习资料
    内容:1.最简单的SELECT语句;(查出所有信息,也可以只对某些字段的查询)Select…..from…..;也是从什么表中查出什么字段,也可以使用通配符“*”来表示,在使用“*”时,表中所有字段都被查出来。如:SELECT*fromemail_table也可以只查出表中的一个或多个字段,只需用“,”隔开就可以了。如:SELECTuser_namefromemail_tableSELECTuser_name,user_agefromemail_table同时也可以给所查的表起个别名,再用别名+“。”+字段名来表示。SELECTet.user_namefromemail_tableet为了更好地显示所得结果,我们也可以给所查的字段所在的结果显示表中的列起个列名,做法就是:<字段名>+as+<列名>如:SELECTet.user_nameas用户名,et.ageas年龄fromemail_tableet;练习:1)。从二级表中查找出所有的二级的信息;2)。从二级表中查找出所有的二级“名”和“号”;3).从JKCLASS表中查找出所有班级信息;4)。从STUDENTS表中查找出所有学生信息;5).从课程表中查出所有课程信息;6)从教研室表中查出各个教研室的名称和编号;2.带条件的查询。条件:WHERE。。。。。Where后面就是语句的限制条件的表达式;(1)比较:(=、<=,>=,<,>,!=)以数值的大小比较,来作为条件;如:SELECT*fromstudentstuwhereage>20;SELECT*fromstudentstuwhereage>=20;SELECT*fromstudentstuwhereage<20;SELECT*fromstudentstuwhereage<=20;SELECT*fromstudentstuwhereage=20;SELECT*fromstudentstuwhereage!=20;Selectcount(*)fromstudentstuwhereage>20;练习:
     从学生评价结果表中找出总分大于80分的记录信息;从学生评价结果表中找出总分不等于80分的记录信息;(2)区间范围:(between….and…;notbetween…and…)SELECT*fromstudentstuwhereage[not]between19and23;练习:从学生评价结果表中找出总分大于80分小于90分的记录信息;从学生评价结果表中找出总分小于80分或大于90分的记录信息;(3)集合范围:(in,notin)
    select*fromaawhereidnotin(selectidfrombb);
    selectid,ordernumberasAordernumber,liaohao,liaohao_id,number,danweifromorderFormDetailwhereliaohaonotin(selectliaohaofromwhereBordernumber=Aordernumber)orderbyiddescmake_workorderDetail
    selecta,b,cfromawhereaIN(1,2,3)练习:2008年度还没有参与评价的学生的信息;查找出某个教研室所有开设的课程信息;(3)是否为空值:null,isnotnull)(is也就是可以查找出某表中某字段的值为空或不为空的记录;Select*formstudentswherenameisnull;Select*formstudentswherenameisnotnull;Selectcount(*)formstudentswherena
    meisnull;Selectcount(*)formstudentswherenameisnotnull;练习:从教师表中找出职称为空的教师的信息;从教师表中找出职称不为空的教师的信息;从教师表中找出学历为空的教师的信息;查找出课程编号为空的课程信息,统计编号不为空的课程为数量;(4)逻辑运算:(and,or,not)And也就是同时符合两个或多个条件的查询,格式为:条件表达式1+and+条件表达式2[and+条件表达式3]如:Select*formstudentswhereage<20andage>16;Or就是只要满足所列出的两个或多个条件中的一个就可以了,格式为:条件表达式1+or+条件表达式2[or+条件表达式3]如:
     Select*formstudentswhereage=20orage=21;Not就是“非”的意思;Select*formstudentswhereage<20andnumberisnotnull;SELECTemailfromemail_tableWHEREname="BillGates"练习:从TEACHER(教师表)中查出所有男教师的信息;从TEACHER(教师表)中查出所有女教师的信息;从JKCLASS(班级表)中找出所有2007级的班级信息;统计各个班级的分组数;查找出所有理论课的信息;(ctype:1为理论课;2为实验课)查找出所有教理论课内容的老师的信息;(ctype:1为理论课;2为实验课)
    3.模糊查询使用“like”运算符可以进行模糊查询,也称字符串匹配查询。其格式为:<列名>[not]like<字符串常量>注意:1,<列名>必须为字符型;2,<字符串常量>中可使用通配符…..“—”(一个字)“%”;(多个字)‘[王张李]%’表示三个姓的人名;;‘[^王张李]%’表示不是这三个姓的人名;如:SELECTSITE_nameFROMsite_directoryWHEREsite_descLIKE?%tradingcark%?练习:查出所有姓李的学生的信息:查出所有中有“李”字的所有学生的信息;查出所有姓“李”的所有单名的学生的信息;查出所有姓是“李”或“张”的所有学生的信息;查出所有不是姓“李”或“张”的所有学生的信息;统计所有姓“李”的学生的数量;
    4.函数的使用Count(*);返回找到的行数count();返回满足select语句中指定的条件的记录数;sum();返回一个数字列或计算列的总和;格式:sum([distinct|all]<列名>)
     avg();对一个数字列计算平均值;max();最大值min();最小值。如:selectcount(*)as女生数量from学生表where性别=?女?;查询“学生表”中班级数;Selectcount(distinct所在班级)as班级数from学生表;SELECTMAX(net_amount)FROMSales;SELECTMin(OrderPrice)ASLargestOrderPriceFROMOrders练习:从teachroom(教研室)表中查找出设有教研室的二级数;统计学生评价结果表中2007年度所有学生评价结果的平均分;统计学生评价结果表2007年度学生评价的总数;统计学生评价
    结果表2007年度所有学生评价大于全体平均分的记录;统计学生评价结果表2007年度学生评价的总分;
    5.结果排序Asc为升序,DESC为降序Orderby<列名1>[asc|desc][,列2[asc|desc][,……]]如:select*from成绩表where课程号=?1001?orderby成绩desc;Selecttop[0,4]*from成绩表where课程号=?1001?orderby成绩desc;Selecttop30*from成绩表where课程号=?1001?orderby成绩desc;
    练习:从学生表(students)中查找出所有学生,并按照升序排序;从学生表(students)中查找出所有学生,并按照性别降序,升序排序;从学生表(students)中查找出所有学生,并按照降序排序;从学生评价结果表查询出2007年度总分降序排序(前20条)。
    6.分组;Groupby列名;如在成绩表中统计每一个学生所考课程的平均分。Select,avg(成绩)as平均分from成绩表gorupbySelect,snameas,count(*)as次数from学生评价结果表gorupbyhaving
     count(*)>=3;练习:从学生评价结果表查询出2007看度平均分的前20名教师的编号和;从学生评价结果表查询出2007看度总分最高的前20名教师的编号和;评价结果表查找出至少评价10次以上的学生的,,评价次数;高级查询1.连接查询*******************************************************************************2.1连接类型在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起。连接的全部意义在于在水平方向上合并两个数据集合(通常是表),并产生一个新的结果集合,其方法是将一个数据源中的行于另一个数据源中和它匹配的行组合成一个新元组。SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。连接类型定义内连接只连接匹配的行左外连接包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行全外连接包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。(H)(theta)连接使用等值以外的条件来匹配左、右两个表中的行交叉连接生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配在INFORMIX中连接
    表的查询如果FROM子句指定了多于一个表引用,则查询会连接来自多个表的行。连接条件指定各列之间(每个表至少一列)进行连接的关系。因为正在比较连接条件中的列,所以它们必须具有一致的数据类型。SELECT语句的FROM子句可以指定以下几种类型的连接FROM子句关键字相应的结果集CROSSJOIN笛卡尔乘积(所有可能的行对)INNERJOIN仅对满足连接条件的CROSS中的列LEFTOUTERJOIN一个表满足条件的行,和另一个表的所有行RIGHTOUTERJOIN与LEFT相同,但两个表的角色互换FULLOUTERJOINLEFTOUTER和RIGHTOUTER中所有行的超集2.2内连接(InnerJoin)内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。下面是ANSISQL-92标准select*
     fromt_institutioniinnerjoint_tellertoni.inst_no=t.inst_nowherei.inst_no="5801"其中inner可以省略。等价于早期的连接语法select*fromt_institutioni,t_tellertwherei.inst_no=t.inst_noandi.inst_no="5801"2.3外连接2.3.1左外连接(LeftOuterJion)select*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_no其中outer可以省略。2.3.2右外连接(RigtOuterJion)select*fromt_institutionirightouterjoint_tellertoni.inst_no=t.inst_no2.3.3全外连接(FullOuter)全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。在现实生活中,参照完整性约束可以减少对于全外连接的使用,一般情况下左外连接就足够了。在数据库中没有利用清晰、规范的约束来防范错误数据情况下,全外连接就变得非常有用了,你可以使用它来清理数据库中的数据。select*fromt_institutionifullouterjoint_tellertoni.inst_no=t.inst_no2.3.4外连接与条件配合使用当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到join子句时,SQLServer、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQLServer将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。下面的两个查询展示了条件放置位子对执行结果的影响:条件在join子句select*fromt_institutionileftouterjoint_tellert
     oni.inst_no=t.inst_noandi.inst_no=“5801”结果是:inst_noinst_name5801天河区5801天河区5802越秀区5803白云区条件在where子句select*fromt_instit
    utionileftouterjoint_tellertoni.inst_no=t.inst_nowherei.inst_no=“5801”结果是:inst_noinst_name5801天河区5801天河区
    inst_noteller_noteller_name58010001tom58010002david
    inst_noteller_noteller_name58010001tom58010002david
    2.4自身连接自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。下面例子是在机构表中查找本机构和上级机构的信息。selects.inst_nosuperior_inst,s.inst_namesup_inst_name,i.inst_no,i.inst_namefromt_institutionijoint_institutionsoni.superior_inst=s.inst_no结果是:superior_instsup_inst_name800广州市800广州市800广州市
    inst_noinst_name5801天河区5802越秀区5803白云区
    2.5交叉(无限制)连接交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一的每个行都要与数据集合二中的每一个行分别组成一个新的行。例如,如果第一个数据源中有5个行,而第二个数据源中有4个行,那么在它们之间进行交叉连接就会产生20个行。人们将这种类型的结果集称为笛卡尔乘积。大多数交叉连接都是由于错误操作而造成的;但是它们却非常适合向数据库中填充例子数据,或者预先创建一些空行以便为程序执行期间所要填充的数据保留空间。select*fromt_institutioni
     crossjoint_tellert在交叉连接中没有on条件子句
    3.子查询子查询(表名1:a表名2:b)selecta,b,cfromawhereaIN(selectdfromb)或者:selecta,b,cfromawhereaIN(1,2,3)练习:查出所有教体育课的教师信息;已经有课程内容的课程的信息有一个或多个课程内容超过10个课时的课程的课程名及其编号;*****************************************************************************
    4.合并结果集<语句块1>union<语句块2>如:(查找出选修了4号课程或5号课程的学生的)Selectfrom成绩表where课程号=?4?unionSelectfrom成绩表where课程号=?5?;**也可以通过or来实现;(使用Distinct可以取出不重复的记录!我在使用时遇到这个问题。selectdistinctnamefrommember)
    HAVING使用:用户在使用SQL语言的过程中可能希望解决的一个问题就是对由sum或其它集合函数运算结果的输出进行限制。例如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句。SELECTstore_name,SUM(sales)FROMStore_InformationGROUPBYstore_nameHAVINGSUM(sales)>1500注:SQL语言中设定
    集合函数的查询条件时使用HAVING从句而不是WHERE从句。通常情况下,HAVING从句被放置在SQL命令的结尾处一、表的操作(增加、删除、修改)新建表:createtable[表名]
     ([自动编号字段]intIDENTITY(1,1)PRIMARYKEY,[字段1]nVarChar(50)default'默认值'null,[字段2]ntextnull,[字段3]datetime,[字段4]moneynull,[字段5]intdefault0,[字段6]Decimal(12,4)default0,[字段7]imagenull,)删除表:Droptable[表名]插入数据:INSERTINTO[表名](字段1,字段2)VALUES(100,'51WINDOWS.NET')删除数据:DELETEFROM[表名]WHERE[字段名]>100更新数据:UPDATE[表名]SET[字段1]=200,[字段2]='51WINDOWS.NET'WHERE[字段三]='HAIWA'新增字段:ALTERTABLE[表名]ADD[字段名]NVARCHAR(50)NULL删除字段:ALTERTABLE[表名]DROPCOLUMN[字段名]修改字段:ALTERTABLE[表名]ALTERCOLUMN[字段名]NVARCHAR(50)NULL重命名表:(Access重命名表,请参考文章:在Access数据库中重命名表)sp_rename'表名','新表名','OBJECT'新建约束:ALTERTABLE[表名]ADDCONSTRAINT约束名CHECK([约束字段]<='2000-1-1')删除约束:ALTERTABLE[表名]DROPCONSTRAINT约束名新建默认值ALTERTABLE[表名]ADDCONSTRAINT默认值名DEFAULT'51WINDOWS.NET'FOR[字段名]
     删除默认值ALTERTABLE[表名]DROPCONSTRAINT默认值名四、数据库操作(创建,删除)createdatabase库名drop来删除数据库与数据表,
    access/mysql/mssql/db2/oracle删除表的方法都一样如:DROPTABLEtable_nameaccess/mysql/mssql/db2/oracle删除数据库的方法都一样如:DROPTABLEdatabase_name
    五、表数据操作(增加、删除、修改)UPDATE"表格"SET"栏位1"=[值1],"栏位2"=[值2]WHERE{条件}
    在某些情况下,我们会需要直接由数据库中去除一些资料。这可以藉由DELETEFROM指令来达成。它的语法是:DELETEFROM"表格名"WHERE{条件}INSERTINTO"表格名"("栏位1","栏位2",...)VALUES("值1","值2",...)
    
    
  • 下一篇资讯: SQL索引技巧
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师