Oracle中P_sql使用

1,在查询语句中,where中的字段要用单引号引起来。

SQL语句概述

SQL是Structured Query Language的缩写,用户可以使用SQL语言建立或删除数据库对象,插入,更新,和删除数据库中的数据,并且可以对数据库执行各种日常管理。

SELECT[ALL|DISTINCT][TOP N [PERCENT]]<列名表> FROM 表名;

ALL:表示显示全部查询记录,包括重复记录。

DISTINCT:表示显示无重复结果的记录。

TOP N [PERCENT]:指明返回查询结果的前N行,如果后面紧跟PERCENT,则返回查询结果的前n%行,若n%为小数则取整。这一点与mysql不同,在mysql中用limit子句对查询结果进行限制(limit 起始位置 获取条数)ORACLE 不支持SELECT TOP语句。

求取范围内的属性值可以用 BETWEEN M AND N;

IS NULL和 IS NOT NULL用来查询空值和非空值。

多个逻辑运算符中优先级

SELECT 子句:

SELECT  [ALL|DISTINCT](全部|不重复) SELECT_EXPR(列) FROM->WHERE->GROUP BY[合计函数]->HAVING->ORDER BY. 

SELECT 子句及其功能
select_sxpr 可以使用 * 表示所有字段,可以使用表达式(计算公式,函数调用,字段),可以使用别名 as,
from 用于标识查询来源,from子句后可以同时出现多个表,多个表横向叠加在一起,数据会形成一个笛卡尔积
where 对从from子句获得的数据源进行筛选,整形一表示真,零表示假,表达式由运算符和运算数组成,不可用合计函数
group by

分组子句:GROUP BY 字段名/别名[ASC|DESC];使用统计函数:COUNT([DISTINT | ALL]  *)计算记录个数

COUNT([DISTINT | ALL] 列名),AVG([DISTINT | ALL] 列名),MAX(),MIN(),SUM()函数只对非空值计算

count(*)包含空值得行,count(列名)忽略该列中的空值。

order by

排序子句:ORDER BY 排序字段/别名 排序方式,支持多个字段排序 

,在select子句后面只可以有两类表达式:统计函数和进行分组的列名,

没有出现在GROUP BY 子句后面的列名不能出现在select子句中,反之可以,不是一个group by 表达式

distinct|all 除去重复项,默认all全部记录
having 与where相同,对分组结果进行过滤,having字段必须是查询出来的,可以使用别名,且可以使用合计函数,where必须是数据表存在的,要求having必须引用group by子句的列或用于合计函数的列。
   

使用统计函数:COUNT([DISTINT | ALL]  *)计算记录个数,COUNT([DISTINT | ALL] 列名),AVG([DISTINT | ALL] 列名),MAX(),MIN(),SUM()。函数只对非空值计算

count(*)包含空值得行,count(列名)忽略该列中的空值。

1,字符串函数:SUBSTR(String 字符串,int a(截取字符串的开始位置),int b(截取字符串的长度)) SUBSTR()不仅可以用于SELECT子句,也可以用于WHERE子句中定义搜索条件。

例:SUBSTR("asdf",0,3);//返回asd。SUBSTR("列名",2,3);截取属性的值用于过滤。

2,LOWER():把指定的字符串或表达式转换为小写字母,仅对字符数据和日期数据有效,也可以将数字数据转换为字符数据处理,与LOWER函数的作用相反的函数UPPER.

例;SELECT LOWER('ABC')  ,UPPER('asd') LOWER(123)  FROM  DUAL;伪表DUAL经常用于SELECT语句的FROM子句中,以满足sql语法。

3,数字函数:ROUND(number,num_digits),返回某个数字按指定位数取整后的数字,number为指定的位数,num_digits为指定的位数,若num_digits小于0,则在小数点左侧进行四舍五入。

例:SELECT ROUND(123.234,-2) FROM DUAL//返回100

4,TRUNC(for number)函数返回处理后的值,其工作机制与ROUND函数相似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而是统统截取。

例:SELECT TRUNC(12.5) FROM DUAL//返回12

日期时间函数:

MONTHS_BETWEEN()函数返回两个日期之间的月份数,例:SELECT MONTHS_BETWEEN(SYSDATE,'27-1月-06') FROM DUAL;

NEXT_DAY(指定日期,'星期几')函数返回指定日期或其后的第一个星期几的日期 例:SELECT NEXT_DAY(SYSDATE,'星期六')FROM DUAL;

ADD_MINTHS(指定日期,'月数')函数可以在指定日期上添加指定数量的月数。

转换函数:TO_CHAR()函数将当前日期转换为字符串,TO_NUUMBER()表示把指定的字符串数据转换为数字数据。

修改sql数据与sql*Plus命令

数据操作语言DML,常用的DML语言包括INSERT,UPDATE,DELDTE语句,对数据的添加,删除和修改等操作。

插入操作:INSERT INTO 表名(列名,……) VALUES(列值,……) ,其中主键不能为空,VALUES子句中指定的值必须符合表中设置的所有约束,即这些值必须与定义列的数据类型匹配,满足定义在列上的约束。当为所有数据添加数据时,可以省略表名后面的列名。不想为某个列指定数值可以可以指定为空值。

使用INSERT语句添加数据时,可以使用SELECT语句代替其中的VALUES子句。即添加的数据由SELECT 语句提供。但必须要保证SELECT 语句返回的值与INSERT INTO 子句指定的数据类型匹配

更新操作:UPDATE语句修改表中的数据,语法:UPDATE 表名 SET 要修改的列名=修改后的表达式/值 WHERE 修改条件;

使用UPDATTE语句修改数据时,不可以在同一列的两行更新不同的数据,可以在同一行更新不同的列。也可以使用SELECT语句代替SET语句:UPDATE 表名 SET=(SELECT……);在使用SELECT语句时,必须保证SELECT语句返回的值的单一性。

删除数据:DELETE语句或者TRUNCATE语句用于删除数据,语法:DELETE 表名 WHERE 条件,DELETE语句只从表中删除数据,不删除表结构,删除表结构,使用DROP TABLE语句。如要删除表中特定的列,可以使用UPDATE 将语句设置为空值

一般用TRUNCATE删除全部数据,语法:TRUNCATE TABLE 表名;使用关键字REUSE STORAGE 表示删除记录后仍保存记录占用的空间,使用DROP STORAGE 关键字表示删除记录后立即回收记录占用的空间。语法:TRUNCATE TABLE 表名 REUSE STORAGE/DROP STORAGE;

SELECT TABLE_NAME FROM USER_TABLES/ALL_TABLES;查询用户所有表/数据库所有表;

如果表指定了别名,则语句中的所有子句都必须使用别名,不允许使用实际的表名。

使用JOIN连接查询:




猜你喜欢

转载自blog.csdn.net/sanhewuyang/article/details/79794215