SQL基础知识培训_第1页
SQL基础知识培训_第2页
SQL基础知识培训_第3页
SQL基础知识培训_第4页
SQL基础知识培训_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL根底知识培训二

设计事业部李红一些习题:1、往user库表插入一条记录:Usid=001,grid=01,ssex=f,usnm=liming,addr=beijing,otel=139,acbl=0.0;2、往user库表插入一条记录:Usid=002,grid=01,ssex=f,usnm=wanggang,acbl=100;3、从user库表取出所有的grid;4、从user库表取出所有的ssex,及其对应的记录条数和汇总ACBL,按照ssex升序排序;5、从user库表选知名字里带有〞李〞字的所有USNM;字段名称中文含义数据类型空USID用户号CHAR(8)NGRID组序号CHAR(8)NSSEX性别CHAR(1)NUSNM用户名CHAR(30)NADDR用户地址CHAR(30)OTEL联系电话CHAR(10)ACBL用户金额decimal目录大纲2.数据库表常用操纵语句 用来操纵数据库中的表中的数据.2.1插入INSERT2.2更新UPDATE2.3删除DELETE2.4查询SELECT简单查询语句 表达式、条件和操作符 函数 查询子句2.1插入INSERTINSERT语句用于将数据录入到数据库中。它可以划分为如下两语句:INSERT…VALUES和

INSERT…SELECTINSERT语句以一次一记录的方式录入数据,对于只和几条记录打交道的小规模操作很有用。它的语法如下: INSERTINTO表名(列1,列2…) VALUES(值1,值2…) 这是INSERT…VALUES语句的根本格式,用于给表增加一条记录,在使用时,必须遵守以下三条规那么: .用于插入的值必须和相应字段的数据类型一致。 .插入数据的大小尺寸必须在相应列的数据范围之内。 例如,一个有80个字符的字符串不能插入只有40个字符长度的列。 .在VALUES后面的值序列必须和前面的列的序列一一对应。例如:

INSERTINTO学生档案(学号,姓名,性别)VALUES('009','李刚','男') INSERTINTO学生档案 VALUES(‘010’,‘王刚’,‘男’,’20010101’)INSERTINTO学生档案 SELECT*FROM学生档案_OLD WHEREGRID=‘010’;2.2更新UPDATE UPDATE语句用于改变现有记录中字段的值,它的语法如下: UPDATE表名SET列1=值1,列2=值2WHERE搜索条件 例如: UPDATE学生档案SET班级='初二一班' 注意:因为省略了WHERE子句,表中的每条记录的相应字段都被更新。所以,一般情况下UPDATE语句应带WHERE子句。 例: UPDATE学生档案SET班级=‘初二三班’WHEREs_id=2;2.3删除DELETE DELETE语句从表中删除记录,它的语法如下: DELETEFROM表名WHERE条件例如: DELETEFROM学生档案WHEREs_id=2注意:和UPDATE一样,如果省略了WHERE子句,表中的所有记录将被删除。所以,一般情况下DELETE语句应带WHERE子句。例 DELETEFROM学生档案2.4查询SELECT SELECT语句的一般用法:

SELECT[ALL|DISTINCT]

[INTOnew_table]

FROMtable_source

[WHEREsearch_condition]

[GROUPBYgroup_by_expression]

[HAVINGsearch_condition]

[ORDERBYorder_expression[ASC|DESC]]

简单查询语句按顺序返回一条语句

select*fromauthors星号*告诉数据库返回由from指定的表的所有列,返回顺序由数据库决定。大小写不影响查询结果。

selectau_id,au_lname,au_fname,phone,address,city,state,zip,contractfromauthors

与前一条SQL语句有相同的结果改变列的顺序或者只选出感兴趣的列 改变列的顺序: selectau_id,phone,au_lname,au_fname,address,city,state,zip,contractfromauthors; 如果你只对某些列感兴趣,比方只想检索au_lname,au_fname,phone,address,就应该这样写SQL语句:selectau_lname,au_fname,phone,addressfromauthors选出结果不重复的列

selectcityfromauthors你会发现有相同的城市,两个人住在同一个城市这很正常,但如果你想看看到底有那几个城市在表中怎么办呢?试试这个:

selectdistinctcityfromauthors

SQL语法中还有一个和distinct对应的关键字all selectallcityfromauthors你会发现查询结果和上面的第一个SQL语句相同,既然如此,谁还想自找麻烦呢? 观察一下discount+0.5字段的标题是(无列名),太不好听了,我们把它改一改。键入: selectdiscounttype,stor_id,lowqty, highqty,discount+0.5新折扣fromdiscounts 很好,我们可以重新命名列标题。重新命名任意字段列标题的语法格式:列名别名〔注意它们之间有空格〕 加号还可以作为字符操作符,后面你将看到这种用法。

我们想把原来的折扣和新折扣加以对照,键入:

selectdiscounttype,stor_id,lowqty,highqty,discount旧折扣,discount+0.5新折扣fromdiscounts

我们不仅建立了一个新的列,还可以重新命名任意列标题。比较操作符 比较操作符比较两个表达式并返回如下三个值之一,TRUE,FALSE或NULL。 重要

不能将空值用于区分表中两行所需的信息〔例如,外键或主键〕。 如果数据出现空值,那么逻辑运算符和比较运算符有可能返回TRUE或FALSE以外的第三种结果UNKNOWN。需要三值逻辑是导致许多应用程序出错之源。Isnull操作符 我们来找出一列中值为NULL的记录: select*fromdiscountswherelowqtyisnull 执行的不错,现在如果用等号代替isnull: select*fromdiscountswherelowqty=null 会怎样呢?试试看吧,什么也没有,因为lowqty=null的比较结果是FALSE。 还有一个操作符是ISNOTNULL,你一看就明白是什么意思。比较操作符(=) 我们早就用过等号了: select*fromdiscountswherediscount=5上面字段discount的数据类型是数字型,对字符串类型的字段记得加上单引号: select*fromdiscountswherediscounttype='VolumeDiscount'比较操作符(>和>=)大于号像这样工作: select*fromdiscountswherediscount>5如果要包括5: select*fromdiscountswherediscount>=5字符也可以比较: select*fromdiscountswherediscounttype>='Vo'比较操作符(<和<=) 小于号像这样工作: select*fromdiscountswherediscount<6.7 如果要包括6.7: select*fromdiscountswherediscount<=6.7字符也可以比较: select*fromdiscountswherediscounttype<='Vo'比较操作符(<>或!=) 不等于可以这样写: select*fromdiscountswherediscount<>6.7 还可以这样写: select*fromdiscountswherediscount!=6.7字符也可以不等于: select*fromdiscountswherediscounttype<>'VolumeDiscount'比较操作符(in) in可以简化你已经学过的一些查询,或者说你不会用in也没关系,用前面学过的知识可以满足你的要求。我们看前面的一个例子: select*fromdiscountswherediscount=5ordiscount=6.7 我们用in来实现。 select*fromdiscountswherediscountin(5,6.7) 不仅语句更短了,而且更容易阅读,in也可用于字符类型的字段。比较操作符(between) between也用来简化你已经学过的一些查询,或者说你不会用between也没关系,用前面学过的知识可以满足你的要求。我们看前面的一个例子: select*fromdiscountswherediscount>=5anddiscount<10我们用between来实现。 select*fromdiscountswherediscountbetween5and10不仅语句更短了,而且更容易阅读,between也可用于字符类型的字段。字符操作符字符操作符(like和%)

如果你想查找不十分精确的数据,like很好用:

select*fromauthorswhereau_lnamelike'St%' 上面的操作选出au_lname的第一个字母是S的记录,试试小写

select*fromauthorswhereau_lnamelike'st%'大小写没关系。

%是通配符,代表多个字符。%也可以多个使用,见下面例子。字符操作符(_)

下划线是单个字符通配符:

select*fromauthorswhereziplike'946_9'

多个下划线使用:

select*fromauthorswhereziplike'9_6_8' _与%混合使用:

select*fromauthorswherephonelike'%9_6_8%'逻辑操作符逻辑操作符(and) 与(and)用于连接符两个表达式。只有当两个表达式都为TRUE时,and才返回TRUE,否那么返回FALSE。 select*fromdiscountswherediscount>=5anddiscount<10 很容易使用。逻辑操作符(or)或(or)也用于连接符两个表达式。当两个表达式中有一个为TRUE时,or就返回TRUE,只有两个表达式都为FALSE时才返回FALSE。

select*fromdiscountswherediscount=5ordiscount=6.7

也很容易使用。逻辑操作符(not) 非(not)是反运算。如果条件为TRUE,那么not运算后返回FALSE,反之返回TRUE。 select*fromdiscountswherenotdiscount=5也很容易使用。函数 聚集函数; 日期和时间函数; 数学函数; 字符函数; 函数非常多,我们不能一一举例,只能作一个常用示范性的介绍。聚集函数聚集函数(count) count函数返回符合select语句中的查询条件的行数。 例如:selectcount(*)fromdiscountswherediscount>=5anddiscount<10聚集函数(sum)

sum函数返回一列中所有值的和。

selectsum(discount)fromdiscountswherediscount>=5anddiscount<10只对数值类型字段有效。聚集函数(avg) avg函数计算一列的平均值。

selectavg(discount)fromdiscountswherediscount>=5anddiscount<10

只对数值类型字段有效。聚集函数(max) max函数找到一列的最大值。

selectmax(discount)fromdiscountswherediscount>=5anddiscount<10

可用于字符型字段。聚集函数(min) min函数找到一列的最小值。

selectmin(discount)fromdiscountswherediscount>=5anddiscount<10可用于字符型字段。

max函数和min函数可以一块儿使用,查出值所在的范围。

selectmin(discount),max(discount)fromdiscounts聚集函数(StDev) StDev函数计算标准差的平方—方差。

selectStDev(discount)fromdiscounts

只对数值类型字段有效。 如果符合查询条件的记录为两个以下时,StDev函数将传回一个Null值,该表示

不能计算标准差。

聚集函数(var) Var函数,计算指定字段之中符合查询条件的变异数估计值。

selectvar(discount)fromdiscounts

语法为Var(运算式)。运算式,可为字段名称、运算式、或一个函数,此函数可

以是一个内部或使用者定义的,但不能为其它的SQL函数。

如果符合查询条件的记录为两个以下时,Var函数将传回一个Null值,该表示不

能计算变异数。

日期和时间函数日期函数year()返回年份:Selectyear(opdt)fromdiscount;日期函数month()返回月份:Selectmonth(opdt)fromdiscount;日期函数day()返回年份:Selectday(opdt)fromdiscount;2.4.3.3数学函数数学函数abs(n) 返回绝对值,例如: selectabs(discount)fromdiscounts数学函数round(m,n) n表示字段m需要保存的小数位数,四舍五入。 selectround(discount,0)fromdiscounts; 那么返回的是各个discount的四舍五入整数值。数学函数trunc(m,n) n表示字段m需要保存的小数位数,直接舍去。 selecttrunc(discount,0)fromdiscounts; 那么返回的是各个discount的整数值。字符函数字符函数trim()

去空格。

selecttrim(cuno)fromuser;字符函数upper()

转换成大写字母

selectupper(cuno)fromuser;查询字句从混沌到有序Orderby子句 如果你需要把查询结果按顺序显示,可以使用orderby子句:

SELECT*fromtitles记录是按录入顺序显示的。 下面按价格从小到大排序:

SELECT*fromtitlesorderbyprice按价格从大到小排序:

SELECT*fromtitlesorderbypricedesc从小到大是升序排列,关键字是asc,系统默认排序为升序,所以asc可以省略。从大到小是降序排列,关键字是desc。orderby子句也可以用来对字符型数据排序。

SELECT*fromtitlesorderbytitleascorderby子句也可以按多列进行排序:

SELECT*fromtitlesorderbytitle,type,price

注意优先级:

SELECT*fromtitlesorderbyprice,type,titleGROUPBY字句 指定用来放置输出行的组,并且如果SELE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论