相关链接:
oracle简单学习总结(一)——sql
http://www.2cto.com/database/201210/159545.html
一、建表
CREATE TABLE userInfor(id int NOT NULL primary key,name varchar(50) NULL,birthday dateNOTNULL,ageint NOT NULL,sex int NOT NULL);
二、查询
1、查询指定表的所有数据
sql: SELECT * FROM userInfor;
说明:查询usertable中所有的数据信息
2、查询指定字段的数据
sql: select name ,birthdayfromuserInfor;
说明:结果只包含2列name和birthday。在语句中给出要显示的列名,列名之间用“,”分隔。表头的显示默认为全部大写。
3、显示行号
sql: SELECT *,ROWNUM FROM userInforwhere id>3;
说明:每个表都有一个虚列ROWNUM,它用来显示结果中记录的行号
问题:rowid 与 ROWNUM 区别
答:rowid和rownum都是虚列。rowid是物理地址,用于定位oracle中具体数据的物理存储位置,而rownum则是sql的输出结果排序;不能对rownum用">",这也就意味着,如果你想用 select * from emp where rownum > 5 则是失败的。同样道理,rownum如果单独用=,也只有在rownum=1时才有用。正确语句:select * from(select rownum no ,id,name from student) where no>2;
在查询语句中可以有算术表达式,它将形成一个新列,用于显示计算的结果,通常称为计算列。表达式中可以包含列名、算术运算符和括号。括号用来改变运算的优先次序。
常用的算术运算符包括:
+:加法运算符。 -:减法运算符。 *:乘法运算符。 /:除法运算符。
sql:SELECT name,age,age*(10) age2 FROMuserInfor ;
说明:age*(10) age2指明增加一列计算出年龄的十倍,并把此列命名为age2(见5),它不是表中存在的列,而是计算产生的结果,称为计算列
5、使用别名
可以为表的列起一个别名,好处是,可以改变表头的显示。特别是对于计算列,可以为它起一个简单的列别名以代替计算表达式在表头的显示。
sql:SELECT name as 姓名,age userage,age*(10)"年龄(10倍)" FROMuserInfor ;
说明:在列名和别名之间要用AS分隔,如name和它的别名“姓名”之间用AS隔开。AS也可以省略,如age和它的别名“userage”之间用空格分割,用空格分割,要区别好前面为列名,后面是别名。别名如果含有空格或特殊字符或大小写敏感,需要使用双引号将它引起来。
6、连接运算符
sql:SELECT name 姓名,age 年龄,name||' IS '||age||' age' AS "用户年龄" FROM userInfor ;
说明:连接运算符是双竖线“||”。通过连接运算可以将两个字符串连接在一起。
7、使用的关键字DISTINCT消除重复显示
sql:SELECT DISTINCT sex FROM userInfor ;
说明:关键字DISTINCT消除重复显示
8、查询结果的排序
升序:asc
sql:SELECT * FROM userInfor ORDER BY sexASC;
降序:desc
sql:SELECT * FROMuserInfor ORDER BY sexDESC;
多字段排序:
sql:SELECT * FROM userInfor ORDER BYsex desc , birthday asc;
说明:ORDER BY 从句出现在SELECT语句的最后,后跟要排序的列。ASC表示升序排序,DESC表示降序排序。默认的排序顺序为升序。可以按多列进行排序,先按第一列,然后按第二列、第三列......。
9、简单条件查询
运算符
功 能
实 例
>,<
大于,小于
Select * from userInfor where age>10
>=.<=
大于等于,小于等于
Select * from userInfor where age>=10
=
等于
Select * from userInfor where age=10
!=,<>,^=
不等于
Select * fromuserInforwhere age!=12
sql:SELECT* FROMuserInfor where age>10;
说明:在FROM从句后使用WHERE从句,在WHERE从句中给出限定的条件,因为限定条件是一个表达式,所以称为条件表达式。条件表达式中可以包含比较运算,表达式的值为真的记录将被显示。字符串和日期型数据的值是包含在单引号中的。字符的值对大小写敏感
10、复合条件查询(NOT,AND,OR)
运算符
说 明
实 例
AND
逻辑与,表示两个条件必须同时满足
Select t.* from userInfor t where t.age>2 and t.birthday=to_date('1986-02-08','yyyy:MM:dd');
OR
逻辑或,表示两个条件中有一个条件满足即可
Select t.* from userInfor t where t.age>2 or t.birthday=to_date('1986-02-08','yyyy:MM:dd');
NOT
逻辑非,返回与某条件相反的结果
Select t.* from userInfor t where not t.birthday=to_date('1986-02-08','yyyy:MM:dd');
sql:Select t.* from userInfort where t.age>2 and not t.birthday=to_date('1986-02-08','yyyy:MM:dd');
说明:运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号。
11、特殊运算符
运 算
功 能
实 例
[NOT]
BETWEEN…AND…
BETWEEN…AND…
用于测试是否在范围内
Select * from userInforWhere age between 10
and 12
and 12
[NOT] IN (…)
用于测试是否在列表中
Select * from userInforWhere age in(1,10,
12);
12);
[NOT] LI