Oracle中SQL语言介绍以及基本用法

一.SQL语言支持如下类别命令

1.数据定义语言(DDL):CREATE(创建)、ALTER(更改) 和 DROP(删除)命令

1.1  CREATE (创建表,表空间,用户, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)

  创建表空间的语法;

   CREATE TABLESPACE tablespace_name DATAFILE ‘文件名称‘ [size integer[k|M]]  [autoextend [off | on]]

这里状态 off 是 offline  on是online

  创建用户的语法:

    CREATER USER user_name IDENTIFIED BY password  [ DEFAULT TABLESPACE tablespace_name] [ TENPORARY  TABLESPACE tablespace_name ]

    这里 default 为缺省表空间  temporary 为临时表空间

  创建表的语法;

    CREATE TABLE tb_student
(
   stuNum NUMBER(10),  --学号
   stuId Varchar2(18),
   stuEmai varchar2(30),
   stuAge Number(3),
   stuSex VARCHAR2(10) 
)

  创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面

  创建表时可以用中文的字段名, 但最好还是用英文的字段名

  创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE  这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间

  创建表时可以给字段加上约束条件  例如 不允许重复 UNIQUE, 关键字 PRIMARY KEY

1.2  ALTER (改变表, 索引, 视图等) 

  改变表的名称  ALTER TABLE 表名1 TO 表名2;

    ALTER TABLE  tb_student  TO  tb_student01;

  在表的后面增加一个字段  ALTER TABLE表名 ADD 字段名 字段名类型;

    ALTER TABLE tb_student  ADD stuphone NUMBER;

  修改表里字段的定义描述  ALTER TABLE表名 MODIFY  (字段名 字段名类型);

    ALTER TABLE tb_student MODIFY (stuphone  number(11));

  修改表的字段名

    ALTER TBALE tb_student  RENAME  COLUMN  stuphone  to stuclass ;

  删除表中的列:

     ALTER TABLE tb_student DROP COLUMN stuclass;      ----删除一列

     ALTER  TABLE  tb_studrnt  DROP (STUID,STUNAME);  ----删除多列

  给表里的字段加上约束条件  ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);  ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);

  把表放在或取出数据库的内存区  ALTER TABLE 表名 CACHE;  ALTER TABLE 表名 NOCACHE;

1.3.DROP (删除表索引视图同义词过程函数数据库链接等)

  删除表和它所有的约束条件  DROP TABLE 表名 CASCADE CONSTRAINTS;

2.数据操纵语言(DML):INSERT (插入)、SELECT(查看)、UPDATE(更新)、DELETE(删除)

2.1  INSERT(往数据表里插入记录)

  INSERT  INTO  TABLE (字段1, 字段2,...) VALUES (值1,值2.....);

  INSERT  INTO  table_1 (表1_字段1,表1_字段2,...) SELECT  表2_字段1,表2_字段2,... FROM table_2   ---将表2查询的字段 赋给表1;

  CREATE  TABLE  table_1  AS  SELECT  表2_字段1,表2_字段2,...FROM  table_2   --创建一张表1  将表2查询到的字段赋给表1

2.2  DELETE (删除数据表里记录的语句)

  DELETE FROM表名 WHERE 条件;

  注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused。

如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间 TRUNCATE TABLE 表名; 此操作不可回退. 为永久删除。

2.3  UPDATE(修改表的记录)

  UPDATE  table_name  SET  字段1=值1,字段2=值2,....WHERE 条件

3.数据控制语言 (DDL) :GRANT(授予)和REVOKE(回收)命令

  GRANT  CONNERT,RESOURCE  TO USER;

  REVOKE  CONNERT,RESOURCE  TO USER;

提示:DDL在ORCLE中默认的无需提交    而DML 需要COMMIT提交才能把数据插入到数据库

时间: 2024-08-24 17:44:44

Oracle中SQL语言介绍以及基本用法的相关文章

Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐

风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入门:SQL语言DDL语句和对象管理,表/临时表/索引/约束/视图/同义词/序列/触发器/存储过程/包的创建管理:SQL语言DML语句,SQL语句INSERT/UPDATE/DELETE,PL/SQL创建,事务与锁:SQL语言Select查询语句,SQL查询限制排序,联接查询,SQL子查询:SQL语言

oracle中的exists 和not exists 用法详解

oracle中的exists 和not exists 用法详解 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>

ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

Oracle 中的 ROW_NUMBER() OVER() 分析函数的用法 ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的). 举例: SQL> DESC T1; Name                                           Null?    Type----------------------

oracle中的exists 和not exists 用法 in与exists语句的效率问题

博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源(  in与exists语句的效率问题):http://www.cnblogs.com/iceword/archive/2011/02/15/1955337.html (一) exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1    A1 2

Oracle PL/SQL 语言(Procedural Language/SQL)

Oracle PL/SQL 语言(Procedural Language/SQL)是结合了结构化查询与 Oracle 自身过程控制为一体的强大语言,PL/SQL 不但支持更多的数据类型,拥有自身的变量声明.赋值语句,而且还有条件.循环等流程控制语句.过程控制结构与 SQL 数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包.PL/SQL 是一种块结构的语言,它将一组语句放在一个块中,一次性发送给服务器, PL/SQL引擎分析收到 PL/SQL 语句块中的内容,把其中的过程控

oracle 中 Start with...connect by 的用法(递归查询)

阿里电面问到了相关的知识,在网上找到这方面的文章. 这几个关键字是查询递归数据的,形成一个树状结构.目前只有oracle支持,其他数据都要结合存储过程实现 语法: select * from some_table [where 条件1] connect by [条件2] start with [条件3]; 其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果,[where 条件1]可以不需要.  [where 条件1].[条件2].[条件3]各自作用的范围都不

sql与oracle中有关case和decode的用法(行转列)及比较(转

引: 为了举例说明,这里创建了一张成绩表,如下图所示: 比较: 1.sql中,这两个函数我们仅能使用case,代码及结果如下: select name,       case Subject          when '语文' then 1          when '数学' then 2          when '英语' then 3   --else 3       end  as '科目代码'   from Results 同样的,我们可以用case实现行转列,代码及结果如下: s

Oracle PL/SQL语言入门

简介:PL/SQL(Procedural Language/Structured Query Language)是一种过程化语言,属于第三代语言,它与C.C++.Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑.它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言. 一.背景介绍 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通

跟踪oracle中sql语句执行过程及相关知识拓展

<pre name="code" class="sql">select * from v$sqlarea; select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这个方法查询结果每条记录显示一条查询语句,且只能查询sql_text小于1000字符的,多余的会被截断. 改进一下: select * from v$sqlarea where first_load_tim