下载此文档

第六章T-SQL语句基础.doc


文档分类:IT计算机 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
该【第六章T-SQL语句基础 】是由【帅气的小哥哥】上传分享,文档一共【8】页,该文档可以免费在线阅读,需要了解更多关于【第六章T-SQL语句基础 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第六章T--,*=。。Selectselect_listFromtable_list[wheresearch_conditions][orderbyorder_list[asc|desc]]语法说明:select_list:字段列表,样式为“,,,……,〞.如果查询单个表,表前缀可以省略,样式为“,,,……,〞table_list:查询表样式为表1,表2……,表N〞.search_conditions:由表字段组成的条件表达式或逻辑表达式。order_list:查询结果按照某字段排序的字段列表。asc|desc:asc表示升序,。常量:表示单个指定数据值得符号。一个常量由一个或多个字母、数字字符〔字母a~z、A~Z、数字0~9〕或符号〔!@#等〕组成。字母和datetime需要用单引号括起来,而二进制字符串和数字常量那么不需要。列名:表中列的名称,表达式中仅允许使用列的名称。{一元运算符}:仅有一个操作数的运算符,其中“+〞表示正数,“-“表示负数,〞~“表示补数运算符。{二元运算符}:将两个操作数组合执行操作的运算符。二元运算符可以是算术运算符、赋值运算符〔=〕、位运算符、比较运算符、逻辑运算符、字符串串联〔或连接〕运算符〔+〕或一元运算符。比较运算符及其含义见表6-1=等于,>大于,<小于,<=小于或等于,>=大于或等于,<>不等于,!=不等于,等同于<>,between指定值的包含范围〔包含边界〕。使用and分隔开始值和结束值,is[not]null根据使用的关键字,指定是否搜索空值或非空值。如果有任何一个操作数为null那么包含位运算符或算术运算符的表达式的计算结果为null,like模糊查询“像什么一样“,与指定字符串进行模式匹配,in是否在数据范围里面可以用这些运算符组成条件表达式。例如,编写以下条件表达式。Price>100Namelike‘李%‘,表示满足name姓名字段里姓李的所有姓名。Grade<>‘3’Pricebetween100and200,表示满足大于等于100并且小于等于200的price值。使用like运算符的T-SQL语句中还需要使用表6-2所示的通配符运算符。‘_’一个字符如:Alike’C_’:%任意长度的字符串如:Blike‘co_%’[]括号中所指定范围内的一个字符如:Clike’9W0[1-2]’[^]不在括号中所指定范围内的任意一个字符如Dlike’9W0[^1-2]’通配符经常与like关键字一起配合使用完成模糊查询。可以使用like和通配符来完成对表的一些特殊约束。例如,要求表中的电话号码列输入的格式为11位手机号,可以编写以下的约束:Telcodelike‘13[5-9][0-9][0-9][0-9][0-9][0-9][0-9]’在查询中也经常会用到like语句。注意:like指模糊查询符合特征的数据。-SQL支持的逻辑运算符有and、or和not,如表6-3所示。Not和其他操作符一起使用,取反的操作;and组合两个条件,并在两个条件都为true时取值为true;or组合两个条件,并在两个条件之一为true时取值为trueAnd和or运算符是连接条件表达式,not否认条件。And连接两个条件,,,首先求not的值,然后求and的值,最后再求or的值。例如采购订单表中的付款方式是信用卡,约束要求只能是牡丹卡、金穗卡、龙卡或者阳光卡,可以编写如下的约束表达式:〔付款方式=‘信用卡’〕and(信用卡in(‘牡丹卡‘,’金穗卡‘,’龙卡‘,’阳光卡‘))注意:IN关键字用来限制范围。在查询中经常会用到逻辑表达式和条件表达式。*fromt_news查询局部行列------条件查询例如查询t_news表中来源为“腾讯网〞的新闻标题和时间,T-SQL语句如下表示Selectnewstitle,newsdateFromt_newsWherenewsource=’腾讯网‘,只要不是腾讯网的新闻都显示出来,,newsdateFromt_newsWherenewsource<>‘腾讯网‘在查询中使用列名AS子句可以用来改变结果集列的名称,也可以为组合或者计算机的列指定名称,还有一种情况是让标题列的信息更易懂。例如,把newstitle列名查询后显示为“新闻标题“,newadate显示为〞新闻日期“。在T-SQL中重新命名列名可以使用AS子句,。SelectnewstitleAS新闻标题,newadate新闻日期Fromt_newsWherenewsource<>‘腾讯网‘还有一种情况时使用计算、合并得到新列的命名。例如,在查询新闻表t-news,将新闻标题与新闻来源合并为形式:“新闻标题〞来源于“新闻来源〞,可以执行以下查询语句。Selectnewstitle+’来源于‘+newsourceas新闻标题Fromt_news重新命名列名还有一种方法,就是采用“=〞来命名,例如:Select新闻标题=newstitle+’来源于‘+newsourceFromt_news查询空行在SQL语句中采用“isnull〞或者〞isnotnull〞来判断是否为空行。例如,如果查询所有新闻来源newsource为空null的新闻,可以使用以下查询语句。Usenews_manageSelectnewstitle,,这些新闻的新闻来源默认“北大青鸟〞,查询输出的语句:Selectnewstitleas新闻标题,‘北大青鸟’as新闻来源Fromt_newsWherenewasourceisnull查询输出多了一列“新闻来源〞,该列的所有数据都是“北大青鸟〞,,如果数据中有上万条记录,而只要检查前面10行数据是否有效就可以了,没有必要查询输出全部的数据,以提高查询速度,这时候就要用到限制返回行数的查询。在t_SQL语句中,限制行数使用top关键字来约束,例如要查询返回3条新闻标题可使用以下语句。,这时候还需要用到percent关键字来限制,例如要显示20%的新闻标题,。Selecttop20percentnewstitleas新闻标题Fromt_newsselect单表查询举例例如:查询新闻分类表t_class所有信息,主要操作如下。选择news_manage数据库,在查询编辑器里输入以下语句:Select*fromt_class其中,t_class为表名,“*〞是通配符,表示选择表中所有的列步骤:新建查询单击newquery(新建查询)按钮,。。3,执行查询单击execute(执行查询)按钮,,:只查询t_class表中的classid、classname列信息,那么可执行如下语句Selectclassid,。:查询新闻点击率大于10次以上的新闻,可以在查询编辑器里输入如下语句:Select*fromt_newswherehits>10其中,where子句是select语句的一局部,查询将根据指定的条件返回数据行。在工具栏中单击“执行〞按钮,,也可以指定其他操作符来返回想要的结果。例如:查询点击率在10到12之间的新闻,可以在查询编辑器里输入如下语句:Select*fromt_newswherehitsbetween10and12在工具栏中单击“执行〞按钮,。注意,与上一个例子相比,查询结果多了点击率为10的查询结果。例如:查找新闻来源是新浪的新闻,可以在查询编辑器里输入如下语句Select*fromt_newswherenewsourcelike‘新浪%‘其中,使用like关键字来匹配相似的值,like关键字包括两个通配符:下划线〔_〕通配符匹配单个字符,百分比〔%〕通配符匹配零到多个字符。在工具栏中单击“执行〞按钮,;返回按点击率从高到低排序的结果,输入如下语句:Selectnewstitle,newsdate,hitsfromt_newsOrderbyhitsdesc其中,使用Orderby子句排序select语句的查询结果。Desc关键字指示结果按降序排列。系统默认使用升序排列,’执行“按钮,。-。Insert[into]<表名>[列名]values<值列表〉其中:[into]是可选的,可省略。表名是必须的,表的列名是可选的,如果省略,.<值列表>中顺序与数据表中字段顺序保持一致多个列名和多个值列表用逗号分隔。例如,向新闻用户表中插入一行数据。Insertintot_news_user(username,userpassword,power)values(‘王兰‘,’oracle’,’true’)SQL语句的执行一般在查询窗口中进行,。检验SQL语句是否正确执行,可以再翻开表查看数据项是否正确添加,,,不可能只插入半行或者几列数据,如果违反字段的非空约束,,每个数据值的数据类型\精度和小数位数也必须与相应的列匹配Insert语句不能为identity标识列指定值,因为它的数字是自动增长的。对于字符类型的列,当插入数据的时候,用单引号将其引起来。尽管可以不指定列名,但是应养成好****惯,明确指定插入的列和对应的值。如果在设计表的时候指定某列不允许为空,那么该列必须插入数据,否那么将报告错误信息。插入的数据项要求符合检查约束的要求。插入用户王兰后,登录新闻发布系统,使用用户名“王兰〞登录,可以登录成功。例如,表t_news_user中的字段power只能输入true或者false,表示权限是管理员还是普通用户,如果输入“ORA〞,系统会提示错误。Insertintot_news_user(username,userpassword,power)values(‘王一男‘,’oracle','ora')执行语句后,将提示与表的约束相冲突插入失败,。6..,如果创立一张新表newsmost来存储最新的新闻信息,那么可以从新闻表中提取相关的数据,SQL语句如下。Insertintonewsmost(新闻标题,新闻日期,点击率)Selectnewstitle,newsdate,hitsFromt_newsWherenewsdate>cast(‘2024-06-01’asdatetimeSelect语句用于查询出并把新闻表中已经存在新闻标题newstitle、新闻日期newsdate、点击率hits的信息插入到新的newsmost表,防止了录入大量重复的数据项,..27所示Insertintonewsmost(新闻标题,新闻日期,点击率)Selectnewstitle,newsdate,hitsFromt_newsWherenewsdate>cast(‘2024-06-01’asdatetime3〕查看表newsmostNewsmost表的内容如图6..28所示注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致Newsmose表必须预先创立好,并且具有新闻标题、新闻日期和点击率三个字段。新闻id是identity列,系统会自动生成数据,不需要插入数据。,selectinto语句也是从表中选一些数据插入到新表中,所不同的是,这个新表是执行查询语句的时候创立的,不能够预先存在。例如,一下的SQL语句:Selectnewatitle,newadate,hitsintonewsmost1fromt_news将创立新表newsmost1,并把t_news表中的newstitle、newsdate、hits作为newsmost1表的新列,还要把查询到得数据全部插入到新表中,执行过程如下步骤所示数据库news_manage数据库中没有表newsmost1,),newadate,hitsintonewsmost1fromt_news3〕再看数据库news_manage数据库中生成新表newsmost1,〕,并且包含identity列,如何插入标识列?因为标识列的数据是不允许指定的,需要按如下语法创立一个新的标识列。Selectidentity(数据类型、表示种子、表示增长量)as列名into新表from原始表上例的语句可以修改为:Selectidentity(int,1,1)as新闻id,newatitleas新闻标题,newsdateas新闻日期,hitsas点击率intonewmost2fromt_news结果如图6..33所示。。不同的数据或查询结果要求数据个数、顺序、数据类型都一致,因此,当向表中屡次重复插入数据的时候,可以使用select….union来简化操作。例如,以下的SQL语句,union联合了自定义数据、t_news表数据、newsmost2表数据,放到数据newsmost中。Insertnewsmost(新闻标题,新闻日期,点击率)Select‘两会会议‘,’2024-03-06‘,100unionSelect‘‘,’2024-03-06‘,120unionSelectnewstitle,newadate,hitsFromt_newsUnionSelect新闻标题,新闻日期,-SQL更新数据使用T_SQL中的update语句可以更新数据。Update<表名>set<列名=更新值>[where<更新条件>]其中:Set后面可以紧随多个数据列的更新值,不限一个。Where子句是可选的,用来限制条件。如果不限制,那么整个表的所有数据行将被更新。注意:使用update语句,可能更新一行数据,也可能更新多行数据,也可能不会更新任何数据。例如,新闻用户表中,=’false’例如,把表t_news中所有新闻来源newsource为空null的记录,改为“北大青鸟〞。Updatet_newssetnewsource=’北大青鸟‘wherenewsourceisnull在T-SQL表达式中,可能需要将其列值统一加上数字或者字符串形成新的值。例如:将新闻的来源全部加上“来自:“。Updatet_newssetnewsource=‘来自:’+newsourcewherenewsourceisnotnull注意:在更新数据的时候,一般都有条件限制,因此,务必注意写where条件语句,否那么将更新表中所有行的数据,这就可能导致有效数据丧失。-SQL删除数据删除数据行也是经常会用到的操作,使用SQL语句来操作相比照拟简单。:deletefrom<表名>[where<删除条件>]例如:删除新闻来源是“新浪网〞的所有新闻的SQL语句如下:Deletefromt_newswherenewsourcelike‘%新浪%‘如果要删除的行的主键值被其他表引用,将不能被删除。例如:新闻表里都引用了用户表,如果删除被引用的用户记录,系统将提示错误,步骤如下所示。新建表t_news有外键引用用户表里的userid如图6..35所示输入SQL语句查看新闻表里的userid,如图6..=3的用户,因为新闻表引用了用户id为3的记录,删除失败Deletefromt_news_userWhereuserid=3执行结果失败,错误提示:与外键“FK_t_news_t_news_user〞冲突,删除失败。Thedetetestatementconflictedwiththereferenceconstraint“FK_t_news_t_news_user〞.urredindatabase“news_manage〞,Table“〞,column‘userid’注意:delete。。。from。。。是删除整条记录,不会只删除单个字段,所以在delete后不能出现字段名,例如以下语句:deleteuseridfromt_news。,功能上他类似于没有where子句的delete语句。例如,要删除新闻表中的所有记录行,可以使用如下语句truncatetablet_newstruncate与delete的区别如下truncatetable不带where子句,只能将整个表数据清空。而delete可以带where子句,允许按条件删除某些记录。truncatetable不记录事务日志,而delete无论删除多少记录,都会每删除一行记录一条事务日志。所以truncate删除数据后是无法通过事务日志恢复的。因为truncatetable不记录日志,不会激发表上的删除触发器,而delete会激发删除触发器。truncatetable删除表中所有行,标识列会重置为0,而delete不会重置标识列。truncatetable不能用于有外键约束引用的表,这种情况下,需要i使用delete语句。综上所述,truncatetable执行速度更快,在清空大数据量表作业时,DBA常用此命令。但是在执行此命令前要确保数据可以删除,否那么无法恢复。上机实验局部实验案例一:增加新闻网站用户实验案例二:查看新闻实验案例三:多行数据插入到其他表实验案例四:更新数据实验案例五:删除数据本章总结局部

第六章T-SQL语句基础 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息