Day 1 Introduction to SQL 1、Note:非过程化意味这是做什么而不是怎么做。 2、SQL可以帮助我们完成的工作: (1)、修改数据库的结构 (2)、改变数据库的安全设置 (3)、增加用户对于数据库或者表的访问权限 (4)、从数据库中得到自己需要的信息 (5)、更新数据的内容 3、Note:SQL--Structured Query Language 其实从2中谈到的我们可以看到SQL的功能已经远远超越了Query,学好SQL是学习数据库的第一步。
Day 2 Introduction to the Query:The Select Statement 1、Objectives: (1)、写SQL查询 (2)、从一个表中Select并且List所有行(有Where条件子句决定)和列(由Select决定) (3)、从一个表中Select并且List被Selected的列 (4)、从多个表中Select并且List被Selected的列 2、Note:SQL COMMANDS不区分大小写,但是需要注意数据库的内容却是区分的 For Example:SELECT * FROM USER_INFO WHERE NAME = 'Peter' 在这个语句中,需要注意的是Peter这个数据库表中存放的内容,它是大小写匹配的;其他则无此限制。 3、 Note:SQL Keyword和 clause 的区别:Keyword是单独的SQL元素,比如SELECT、FROM等等 ;而clause是SQL语句的一部分,比如SELECT column1,column2就是一个clause,合并一个 SELECT clause和FROM clause 就构成一个SQL语句。
Day 3 Expressions,Conditions, and Operators 1、Objectives (1)、明白Expression是什么和怎么使用 (2)、明白Condition是什么和怎么使用 (3)、熟悉Where clause的基本用法 (4)、学会使用算术、比较、字符和逻辑表达式来建立一个运算 (5)、学会将多种不同的运算混合在一起使用 2、Operators (1)、Arithmetic Operators plus(+), minus(-), divide(/), multiply(*), and modulo(%) 说明:modulo不能处理任何有小数部分的数据类型 如果表达式中没有圆括号控制这四种运算的优先级,那么它们的自然计算顺序是multiplication, division, modulo,addition, and subtraction plus(+):有作为加号和字符串连接符(并不是所有数据库都支持)的双重身份。 minus(-):作为负号和减号,其本质是一种运算 (2)、Comparison Operators 正如它的名字一样,Comparison Operators比较表达式并且返回三个值:True、False或者是Unknown。对Unknown说明一下:要想理解Unknown,首先必须清楚NULL的概念。在数据库中,NULL意味这没有数据,它既不是零也不是空格,零和空格都代表有值,NULL代表什么也没有。假如你做了一个这样的比较 NULL = 9,那么它的返回值就是Unknown,因为Unknown看上去不是让人很舒服,所以大部分SQL在被处理时都将Unknown转化为False,并且提供了一个特别的Operator:IS NULL 来做Comparison。 所以正确的写法是(查询没有填写地址信息的用户): SELECT * FROM USER_INFO WHERE ADD_INFO IS NULL; 而不是: SELECT * FROM USER_INFO WHERE ADD_INFO = NULL 因为 NULL = NULL 会返回Unknown被处理为False,从而得不到我们想要的结果。 Equal(=):注意大小写问题。 Greater Than(>) and Greater Than or Equal To(>=) Less Than(<) and Less Than or Equal To(<=) Inequalities (< > or !=) Comparison Operators可以用来操作任何数据类型。 (3)、Character Operators LIKE 查询相似匹配的记录 %:通配符,可以是匹配一个也可以是多个字符 _:通配符,只可以匹配一个字符 || 进行字符串的连接操作 有些数据库支持plus(+)完成此功能,但是Oacle不支持。 (4)、Logical Operators AND OR NOT
(5)、Set Operators UNION AND UNION ALL 取并集 UNION 就是把具有相同结构两部分数据和在一起并且再执行DISTINCT,即将相同的去除。 而UNION ALLL 则是只执行UNION的前部分功能,不去除相同的记录。 INTERSECT 取交集 MINUS (Difference) 取在第一个集合去除同第二个集合相同的记录 (6)、Miscellaneous Operators: IN and BETWEEN IN 取代 A = B OR A = D OR A = F; A IN (B,D,F) BETWEEN 取代 A < B AND A > D A BETWEEN B AND D
Day 4 Functions: Molding the Data You Retrieve 1、Objectives (1)、Aggregate functions(汇总函数) (2)、Date and time functions(日期和时间函数) (3)、Arithmetic functions(数学函数) (4)、Character functions(字符串函数) (5)、Conversion functions(转换函数) (6)、Miscellaneous functions(其它函数) 2、Aggregate Functions COUNT 返回满足条件行数 SUM 求和 AVG 求平均数 MAX 求最大值 MIN 求最小值 这五个函数都不能在where clause中使用,需要使用HAVING。 3、Date and Time Functions ADD_MONTHS 返回给定一日期加上给定的月数之后的日期 LAST_DAY 返回给定日期月份的最后一天 MONTHS_BETWEEN 返回给定两个日期之间相隔的月数 NEW_TIME 返回给定时区的时间. NEXT_DAY 返回给定日期之后最近一个给定星期几的日期 说得有些绕口,举个例子:NEXT_DAY(SYSDATE,1) 返回今天之后的第一个星期一的具体日期。 标准格式是:NEXT_DAY ( date , char ) 其中的date没有说明异议需要写入日期,对于后边的char怎么写?oracle的例子中是英文的星期几(如'Tuesday'),但是我在执行是却行不通,只能写数字。 问题已解决,是日期格式的原因。 alter session set nls_language='AMERICAN'; 然后就可以在char参数中写入星期的英文表示格式,而数字同样奏效。 4、Arithmetic Functions ABS 返回给定参数的绝对值 CEIL and FLOOR CEIL 返回大于或者等于给定参数的最小的整数,FLOOR与CEIL正相反,它返回小于或者等于给定参数的最大的整数。 COS, COSH, SIN, SINH, TAN, and TANH 几个三角函数 EXP 标准格式:EXP(n) 代表e(数学中的一个常量2.71818283...)的n次幂 LN and LOG MOD 求模函数,同% POWER 进行幂运算 SIGN SQRT 5、Character Functions CHR 标准格式:CHR(N) 返回数字N对应的字符。如67对应C CONCAT 同 || INITCAP 将参数字符串的第一个字符大写,其它小写。但是我在ORACLE中测试过,如果字符串中存在空格,则空格后的第一个字符也会大写。如INITCAP('how are you!') 返回How Are You! LOWER and UPPER:分别将所给的字符串全部小写和小写。 LPAD and RPAD 标准格式:LPAD( char1 , n [, char2] ) 意思:显示长度为n,如果char1不满n长度,那么左边用char2补齐 RPAD与LPAD不同的是右边用char2补齐。 LTRIM and RTRIM 标准格式:LTRIM ( char [, set] ),如果只有第一个参数,那么set默认未blank,函数会去除char左边的blank,如果填写了两个参数,那个函数会根据set去除char左边和set匹配的字符。需要几个例子说明一下:LTRIM(' xyxyxy')返回xyxyxy;LTRIM('xyxyxy','x')返回yxyxy;LTRIM('yxyxyx','x')没有影响返回yxyxyx。 RTRIM作用与LTRIM相似,不同的是它操作的是字符串的右边。 REPLACE 标准格式:REPLACE ( char , search_string [, replacement_string] ) If the thirdargument is left out or NULL, each occurrence of the search key on the string to be searched is removed and is not replaced with anything. SUBSTR 标准格式:SUBSTR( string , position [, substring_length] ) This three-argument function enables you to take a piece out of a target string. The first argument is the target string. The second argument is the position of the first character to be output. The third argument is the number of characters to show. Note: If start_position is 0, then substr treats start_position as 1 (ie: the first position in the string). If start_position is a positive number, then substr starts from the beginning of the string. If start_position is a negative number, then substr starts from the end of the string and counts backwards. If length is a negative number, then substr will return a NULL value. FOR EXAMPLE: SUBSTR('Thankyou',0) 返回Thankyou,把0 treat as 1. SUBSTR('Thankyou',2) 返回hankyou. SUBSTR('Thankyou',2,2) 返回ha SUBSTR('Thankyou',2,100) 返回hankyou SUBSTR('Thankyou',-2,3) 返回ou TRANSLATE 标准格式:TRANSLATE ( 'char' , 'from_string' , 'to_string' ) SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') "License" FROM DUAL;
License -------- 9XXX999 SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789') "Translate example" FROM DUAL;
Translate example ----------------- 2229 INSTR 标准格式:INSTR( string1, string2 [, start_position [, nth_appearance ] ] ) LENGTH LENGTH returns the length of its lone character argument 6、Conversion Functions TO_CHAR 用法丰富,具体参阅相关资料。 TO_NUMBER 7、Miscellaneous Functions GREATEST and LEAST USER You don't have to remember every function--just knowing the general types (aggregate functions, date and time functions, arithmetic functions, character functions,conversion functions, and miscellaneous functions) is enough to point you in the right direction when you build a query that requires a function.