第1章、简单查询语句
一、基本查询语句
1、基本的语法格式:
【select(SQL关键字)[distinct(滤除重复记录)] * /列名称…… 别名 from table;】
2、书写SQL语句遵循的基本原则:①不区分大小写,除非特别指定;②可以写成一行或多行;③关键字不能简写或分割于多行;④子句通常单独行书写,便于编辑和提高可读性;⑤使用Tab和缩进提高程序可读性;⑥关键字最好使用大写,其他使用小写;⑦在SQL*Plus中,SQL语句是在SQL prompt状态下输入,并且每行都有编号。是SQL的缓冲区,任何时候在缓冲区中只会存放当前一条语句。
3、| | 表示列与列、列与算术表达式、列与常量之间的合成。
第2章、限定查询和排序语句
1、限定数据行的查询语法格式:
【select [distinct] */ 列名称…… 别名 from table where(限定条件)列名/表达式/常量/比较运算符;】
(其中比较运算符包括:=:等于、>:大于、>=:大于等于、<:小于、<=:小于等于、<>.!=.^=:不等于。
(要查询的列)between(下限)and(上限):两个值之间包括边界范围比较。 (要查询的列)in (集合,用逗号隔开):和多个值中任意一个匹配,相当于多个or并列在一起。 (要查询的列)like+‘通配符和查询的内容’:模糊查询、is null:是否是空值)
1.1、where子句中,字符串和日期数值必须用单引号引起来,数值型常量则不需要,字符型数据区分大小写,默认的日期形式是:DD-MON-YY。
1.2、like(模糊查询):把握不准查询确切的值,通过字形匹配来查询。可以使用通配符:%:表示0或更多任意的字符;_:代表一个字符。可以同时使用。当查询的内容包括%或_时,可以使用escape,即“/”转义符。
1.3、逻辑运算符:
and | True | Flase | Null |
True | T | F | N |
Flase | F | F | F |
Null | N | F | N |
or | true | False | Null |
True | T | F | T |
Flase | T | F | N |
null | T | N | N |
Not::如果条件为假则返回真值。
在where子句中。通过使用and和or在where中使用多个条件。
1.4运算符优先规则:算数运算符>连接符>比较运算符>not>and>or。
2、order by 子句:查询结果按照某种顺序排列显示。
order by 子句语法格式:
【select [distinct] */ 列名称…… 别名 from table
where(限定条件)列名/表达式/常量/比较运算符
Order by (要查询的列) asc(生序排列)/desc(降序排序);】
注意:order by子句必须放在select语句的最后,并且可以指定一个参与排序的表达式或别名。可使用别名进行排序。Select语句中只能有一个order by 子句。
2.1、默认的排序方式是升序,不同类型数据的升序排列原则:
☆ 数值型数据按照从小到大的顺序排列的;
☆ 日期型数据按照时间从早到晚的顺序排列的;
☆ 字符型数据按照字母顺序排列的;
☆ 空值在升序排列方式下排在最后,降序排列排在最前。
SQL运行过程:from首先运行,where其次运行,select再运行,order by 最后运行。对查询结果进行排序。
第3章、单行函数查询
1、单行函数的特点:
☆ 对查询返回的每一行都起作用。 ☆ 可以返回一个数据值或相对于原类型不同类型的数据值。
☆ 可以有一个或多个参数,参数可以是一列或一个表达式。 ☆ 每行返回一个结果。
☆ 可以用于select、where、order by子句,并且可以相互嵌套。 ☆ 只对一行进行操作。
2、单行查询语法格式:
【function_name(函数名称) column(列名)/ expression(字符串或计算表达式) [arg1(参数),arg2……]】
3、字符函数:接受字符输入并且返回字符或数值。
① 大小写转换函数:lower(需转换的内容):将字符串转换成小写。Upper(需转换的内容):将字符串转换成大写。initcap(需转换的内容):将每个单词的第一个字母转换成大写,其余字母转换成小写。
②字符处理函数:concat:将字符串连接在一起。substr:提取字符串的某一特定部分;参数:(字符串,截取起始点[负数:从右往前数,然后从前往后截取],截取个数[省略表示截取到最后])。 length:获得字符串的个数。instr:在字符串中查某个字串的位置;参数(字符串,要查的字符,从那个位置开始查[默认值为1,负数:一直从右往左数],第几次出现的位置)。lpad:以右对齐的方式填充字符型数据;参数:(字符串,填充长度,填充内容)。rpad:以左对齐的方式填充字符型数据(参数同上)。trim:去掉字符串头部或尾部,
如果被去除的字符串和被处理的字符串是原义字符串则必须使用单引号引起来;参数:(去掉的字符串 from 被去掉的字符串)。replase:替换;参数(字符串,被替换字符,替换的字符)。
4、数值函数:接受数值输入并返回数值。包括:round:四舍五入;参数:(数字,四舍五入后的小数点后位数[默认值为0,负数为从小数点往左边数])。trunc:截取;参数:(数字,截取后小数点后面的位数[同上,但无四舍五入功能])。mod:求余,多用于判断奇数偶数;参数:(被除数,除数)。
5、日期函数:对日期型进行操作,所有的日期函数都返回一个日期型数据,除了months_between函数,返回一个数值。
Oracel9i默认的显示和输入形式是DD-MON-RR。Oracel有效的日期范围是公元前4712年1月1日到公元9999年12月31日。日期的运算如下表:
操作 | 结果 | 描述 |
日期+数字 | 日期 | 在某日期的基础上加上一定的天数 |
日期-数字 | 日期 | 在某日期的基础上减去一定的天数 |
日期-日期 | 天数 | 一个日期减去另一个日期(相差天数) |
日期+数字/24 | 日期 | 在某日期的基础上加上小时 |
◇ Sysdate:当前系统时间。
◇ day:对星期的计算。
YY与RR的比较:
转换的时间 系统当前时间 | YY | RR | ||
0-49 | 50-99 | 0-49 | 50-99 | |
0-49 | 本世纪 | 本世纪 | 本世纪 | 上个世纪 |
50-99 | 本世纪 | 本世纪 | 下个世纪 | 本世纪 |
5.1常用日期函数:
日期函数 | 参数 | 含义 |
months_between (date1,date2) | date1、date2为 两个日期 | 两个日期相差的月份数量 结果可正可负 |
add_months (date,n) | date为一个日期 n为月数 | 向指定日期加上若干月数 n是整数。负数为累减 |
next_day (date,‘char’) | char:星期几或字符串 | date之后一周内的星期几或字符串 |
last_day (date) | date:某日期 | 求date所在月的最后一天 |
round (date[,‘fmt’]) | fmt:指定的格式,如month year等,默认为‘DD’ | 将date按照fmt的格式进行四舍五入,若不指定fmt则四舍五入为最近的天 |
trunc (date[,‘fmt’]) | fmt:指定的格式,如month year等,默认为‘DD’ | 将date按照fmt的格式进行截取,若不指定fmt则截取为最近的天 |
6、转换函数:从一种数据类型转换为另一种数据类型。
6.1数据类型的显示转换:
6.2数据类型转换函数包括如下:
转换函数 | 参数 | 含义 |
to_char (date/number[,format[,nlsparams]]) | format:日期格式参数(如下)。未指定的默认的格式为DD-MON-RR。 | 将date或number数据按照fmt形式转换成字符串 |
to_number (string[,format[,nlsparams]]) | format:数字格式参数(如下)。nlsprams:指定小数点或千位分隔符或货币符。 | 将String按照限定格式转换成number类型的数值 |
to_date (string[,format[,nlsparams]]) | format:日期格式参数(如下)。nlsprams:指定返回日期所使用的语言。 | 将String按照限定格式转换成date类型的数值 |
6.3日期、数字格式参数如下:
日期格式参数 | 含义 | 数字格式参数 | 含义 | |
yyyy | 完整的年份表示 | 9 | 表示一位数字 | |
year | 年份的英文表示 | 0 | 显示前导零,即占位 | |
mm | 2位数字表示月份 | $ | 显示美元符号 | |
monthsql语句查询不包含 | 月份的英文表示 | L | 显示本地货币号 | |
dy | 3个英文字符缩写表示星期几 | . | 显示小数点 | |
day | 星期几完整的英文表示 | , | 显示千位符 | |
dd | 几号的数字表示 | S | 为数据加前导或后继+、—号 | |
B | 小数点后数据用0显示 | |||
6.4使用日期模式时注意的问题:
☆ 必须用单引号引起来,对大小写敏感。 ☆ 可以包含任意的有效的日期元素。
☆ 可以用fm消除前导空格或前导0。 ☆ 使用‘,’与日期型数据分隔开。
7、通用函数:
nvl函数与decode函数如下:
通用函数 | 语法格式 | 参数 | 含义 |
nvl函数 | nvl(expr1 , expr2) expr1\expr2数据类型要一致 | expr1:包含空值的源或表达式 expr2:将null转换后的目标值 | 将null转换成一个实际的值 |
decode函数 | decode(col/expr,search1,result1 [,search2,result2…][,default]) | col/expr:列名或表达式 search1…searchi:比较条件 result1…resulti:返回值 | col/expr与searchi相比较,结果相同则返回resulti;若没有相匹配的结果则返回默认值default |
8、单行函数的嵌套:嵌套的函数是从里层向最外层的顺序依次计算的。
第四章、多表查询
1、连接:从多个表中获取数据时,需要使用连接条件。通过使用相对应列的公共值进行连接,需在where子句中写出连接条件。
1.1连接语法格式如下:
【 select table1.column, table2.column…
from table1,table2…
where table1.column1=table2.column2 】
注:table1.column:指明查询的数据来源的表名和列名;table1.column1:连接条件。连接条件的情况包括:等值连接(内部连接或简单连接),非等值连接,外部连接,和集合运算符。
1.2在编写访问多表的SQL语句时,需注意的问题:
☆ 用到表连接时,需要在列名之前标示出表名,以提高数据库的访问效率。
☆ 多个表中存在相同的列名时,列名之前必须用表名标示。
☆ n个表相连时,至少需要n-1个链接条件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论