您的位置:首页 > 数据库 > Oracle

Oracle和SQL数据库基础知识点大集合

2013-10-29 23:11 337 查看
oracle数据库查询语句大全

1. select * from table_name where rownum>begin and rownum< end

  2.sql = "select * from table"

  con.prepareCall("SELECT * FROM(SELECT A.*, rownum r FROM("+sql+") A WHERE rownum <=

  "+intPage*intPageSize+") B WHERE r > "+(intPage-1)

  *intPageSize);

  select table_name from all_tables;//所有的表明

  select table_name from user_all_tables;//用户的所有的表

  select * from user_objects;   //查询所有的表

  select * from dba_tables;   //查询所有的表

  select * from all_tables;   //查询所有的表

  select * from user_users   //查出一个用户

  select * from all_users   //查询所有用户

  select * from dba_users   //查询所有用户

  select name,dbid from v$database;   //查询数据库名和它的ID

  select * from sys.user_tab_columns; //查询表名 ,并显示列名

  describe 表名   //查询表结构

  select * from sys.user_tab_columns where table_name=表名 //查询指定表名的字段

  2: 查询数据库参数

  show parameter db;

  3:查询数据库的实例名

  select instance_name from v$instance;

  4: 数据库域名

  数据库安装结束后,如果要知道正在运行额数据库是否有域名以及数据库域名名称可以用

  select value from v$parameter where name='db_domain'

  show parameter domain

  5:数据库服务名

  如果数据库有域名,则数据库服务名就是全局数据库名,如果该数据库没有定义域名,则数据库服务名与数据库名相同

  show parameter service_name

  6:显示当前用户

  show user

  7:直接登陆

  sqlplus "/as sysdba"

  8:当前ORACLE系统时间

  select sysdate from dual;

  9:查询数据库字典v$nls_parameter产看字符集相关参数

  select * from v$nls_parameters;

  //*************

  oracle基本操作语句(适合初学者)

  oracle操作语句:

  1.创建表

  create table 表名(

  列名1 类型,

  列名2 类型

  );

  2.修改类属性

  alter table 表名 modify(列名 类型);

  3.添加列

  alter table 表名 add(列名 类型);

  4.添加主键约束和非空约束

  alter table 表名 add constraint pk_表名 primary key(列名);

  alter table 表名 modify(列名 not null);

  5.删除主键约束

  alter table 表名 drop primary key;

  alter table 表名 drop constraint pk_表名;

  6.失效约束

  alter table 表名 disable primary key;

  alter table 表名 disable constraint pk_表名;

  7.有效约束

  alter table 表名 enable primary key;

  alter table 表名 enable constraint pk_表名;

  8.删除列

  alter table 表名 drop column 列名;

  9.设置某列不可用,然后删除

  alter table 表名 set unused(列名);

  alter table 表名 drop unused columns;

  10.修改表名

  rename 表名1 to 表名2

  alter 表名1 rename to 表名2;

 11.截断表

  truncate table 表名;

  12.截断表保留行空间

  truncate table 表名 resue storage;

  13.查看表结构

  desc table 表名;

  14.删除表

  drop table 表名;

  15.插入记录

  例:insert into 表名 values(内容1,内容2,内容3,内容4);

  16.带参数对话方式插入行

  例:insert into 表名 values(&列名1,&列名2);

  insert into 表名 values(内容1,内容2);

  17.插入某几列记录

  insert into 表名(列名1,列名2) values(内容1,内容2);

  18.为列插入空值(其列不能为not null)

  insert into 表名 values(内容1,null,null);

  19.创建表(包括主键及外键设置)方法一

  create table 表名(

  列名1 类型

  constraint pk_表名 primary key,

  列名2 类型 not null,

  列名3 类型

  constraint fk_表名 reference 表名(列名),

  列名3 类型

  constraint ck_表名 check(列名3 in(''内容1'',''内容2'',''内容3''))

  );

  20.查询所有行

  select * from 表名;

  21.查询某几列

  select 列名1,列名2 from 表名;

  22.重复行消除

  select distict 列名 from 表名;

  23.where语句查询

  select * from 表名 where 条件 order by 列名;

  (注:如number类型查出自动按升序排列,如要按降序排列,则select * from 表名 where 条件 order by 列名 desc;)

  24.创建表,方法二

  create table 表名(

  列名1 类型 primary key,

  列名2 类型 not null,

  列名3 类型 check(列名3 in('''','''','''')),

  列名4 类型 refernce 表名(列名)

  );

  25.修改 列=‘?’的数据

  update 表名 set (列=?) where 列=‘?’;

  26.删除行

  delete from 表名 where 条件;

  27.事务处理

  --事务处理

  update 表名

  set 列名(日期) = ''30-5月-98''

  where 条件;

  savepoint mark1;

  delete from 表名 where 条件;

  savepoint mark2;

  rollback to savepoint mark1;

  rollback;

  28.建立用户user1,密码为password

  授予用户connect,resource的权限

  connect角色用于登录

  resource角色用于建表等.

  connect system/manager

  create user user1 identified by password;

  grant connect,resource to password;

  29.数据控制语言

  connect scott/tiger

  30.把对表1查询和修改的权限授予user1

  grant select,update on 表1 to user1;

  31.把对表表1中列1和列2修改的权限授予user1

  grant update(列1,列2) on 表1 to user1;

  32.把对表表1查询的权限授予用户user1

  并且user1用户还可以把这个权限授予别的用户(with grant option)

  grant select on 表1 to user1 with grant option;

  33.从用户user1撤销对表1查询和修改的权限

  revoke select,update on 表1 from user1;

SQL大全

一、简单查询
   简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
FROM testtable WHERE name='张三'

(一)选择列表
  选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 量和全局变量)等构成。

   1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable

   2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名 排列顺序相同。
例如: SELECT nickname,email FROM testtable

   3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符。
例如,下列语句使用汉字显示列 标题: SELECT 昵称=nickname,电子邮件=email FROM testtable

   4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复 的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留 一行。

   5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。
例如: SELECT TOP 2 * FROM testtable SELECT TOP 20 PERCENT * FROM testtable

(二)FROM子句
  FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用 对象名限定这些列 所属的表或视图。
例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加 以限定:

 SELECT username,citytable.cityid
 FROM usertable,citytable
 WHERE usertable.cityid=citytable.cityid

在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名 别名
例如上面语句可用表的别名格式表示为:

SELECT username,b.cityid
FROM usertable a,citytable b
WHERE a.cityid=b.cityid

SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:
  SELECT a.au_fname+a.au_lname
 FROM authors a,titleauthor ta (SELECT title_id,title FROM titles WHERE ytd_sales>10000 )
AS t
 WHERE a.au_id=ta.au_id AND ta.title_id=t.title_id
 此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。

(三)使用WHERE子句设置查询条件
  WHERE子句设置查询条件,过滤掉不需要的数据行。
例如下面语句查询年龄大于20的数据:
  SELECT *
  FROM usertable
   WHERE age>20

  WHERE子句可包括各种条件运算符:
  比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
  范围运算符(表达式值是否在指定的范围):BETWEEN…AND… NOT BETWEEN…AND…
  列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) NOT IN (项1,项2……)
  模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
  空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL
  逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR

1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
2、列表运算符例:country IN ('Germany','China')
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。
可用于char、 varchar、text、ntext、datetime和smalldatetime等类型查询。
 可使用以下通配字符: 百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%% 。 下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 方括号[]:指定一个字符、字符串 或范围,要求所匹配对象为它们中的任一个。 [^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
  例如: 限制以Publishing结尾,使用LIKE '%Publishing' 限制以A开头:LIKE '[A]%' 限制以A开头
外:LIKE '[^A]%' 4、空值判断符例WHERE age IS NULL 5、逻辑运算符:优先级为NOT、AND、OR

(四)查询结果排序
 使用ORDER BY子句对查询返回的结果按一列或多列排序。
 ORDER BY子句的语法格式为: ORDER BY {column_name [ASC|DESC]} [,…n]
 其中ASC表示升序,为默认值,DESC为降序。
 ORDER BY不能按ntext、text和image数据类型进行排序。
 例如: SELECT * FROM usertable ORDER BY age desc,userid ASC 另外,可以根据表达式进行排序。

二、联合查询
  UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行
联 合查询。UNION的语法格式为: select_statement UNION [ALL] selectstatement [UNION [ALL]
selectstatement][…n]
其中selectstatement为待联合的SELECT查询语句。 ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
  在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类 型,系统将低精度的数据类型转换为高精度的数据类型。 在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。
例如: 查询1 UNION (查询2 UNION 查询3)

三、连接查询
  通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
  在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
  连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。
   SQL-92标准所定义的FROM子句的连接语法格式为:
     FROM join_table join_type join_table
      [ON (join_condition)]
  其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一
个表操作的连接又称做自连接。
  join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN) 和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。
   交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的 数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
   连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
   无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。
  例如:
    SELECT p1.pub_id,p2.pub_id,p1.pr_info
       FROM pub_info AS p1 INNER JOIN pub_info AS p2
       ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
  (一) 内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
内连接分 三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接 表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些 运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
   例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
  SELECT * FROM authors AS a INNER JOIN publishers AS p
     ON a.city=p.city
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
  SELECT a.*,p.pub_id,p.pub_name,p.country
    FROM authors AS a INNER JOIN publishers AS p
    ON a.city=p.city
(二) 外连接 内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件 的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外 连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
如下面使用左外连接将论坛内容和作者信息连接起来:
   SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
    ON a.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
   SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b
    ON a.username=b.username
(三) 交叉连接 交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。
SELECT type,pub_name FROM titles CROSS JOIN publishers
ORDER BY type

--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据

--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER TABLE --修改数据库表结构
CREATE VIEW --创建一个视图
DROP VIEW --从数据库中删除视图
CREATE INDEX --为数据库表创建一个索引
DROP INDEX --从数据库中删除索引
CREATE PROCEDURE --创建一个存储过程
DROP PROCEDURE --从数据库中删除存储过程
CREATE TRIGGER --创建一个触发器
DROP TRIGGER --从数据库中删除触发器
CREATE SCHEMA --向数据库添加一个新模式
DROP SCHEMA --从数据库中删除一个模式
CREATE DOMAIN --创建一个数据值域
ALTER DOMAIN --改变域定义
DROP DOMAIN --从数据库中删除一个域

--数据控制
GRANT --授予用户访问权限
DENY --拒绝用户访问
REVOKE --解除用户访问权限
--事务控制
COMMIT --结束当前事务
ROLLBACK --中止当前事务
SET TRANSACTION --定义当前事务数据访问特征
--程序化SQL
DECLARE --为查询设定游标
EXPLAN --为查询描述数据访问计划
OPEN --检索查询结果打开一个游标
FETCH --检索一行查询结果
CLOSE --关闭游标
PREPARE --为动态执行准备SQL 语句
EXECUTE --动态地执行SQL 语句
DESCRIBE --描述准备好的查询

***function(/*常用函数*/)***

----统计函数----
AVG --求平均值
COUNT --统计数目
MAX --求最大值
MIN --求最小值
SUM --求和
STDEV()函数返回表达式中所有数据的标准差
STDEVP()函数返回总体标准差
VAR()函数返回表达式中所有值的统计变异数
VARP()函数返回总体变异数

---算术函数----

/***三角函数***/
SIN(float_expression) --返回以弧度表示的角的正弦
COS(float_expression) --返回以弧度表示的角的余弦
TAN(float_expression) --返回以弧度表示的角的正切
COT(float_expression) --返回以弧度表示的角的余切

/***反三角函数***/

ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型
RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型
EXP(float_expression) --返回表达式的指数值
LOG(float_expression) --返回表达式的自然对数值
LOG10(float_expression)--返回表达式的以10 为底的对数值
SQRT(float_expression) --返回表达式的平方根

/***取近似值函数***/
CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型
ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为

本文出自 “華麗Dē‖Java Question” 博客,请务必保留此出处http://teny32.blog.51cto.com/8027509/1316968
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: