Oracle SQL statement example

/ *
================================================ ===========
| You can use the SELECT statement to view ROWID value
=============================== =============================
* /
the SELECT the ROWID, ename
  the FROM scott.emp
 the WHERE ename = 'SMITH';
 
/ *
================================================ ===========
| ROWNUM extracted using 10 records and displays the EMP table number
========================= ===================================
* /
SELECT emp.*,rownum
  FROM Scott.emp
 WHERE ROWNUM<11;

/ *
================================================ ===========
| example 3: create stuInfo table
================================ ============================
* /
CREATE TABLE stuInfo / * - create a student information sheet - * /
    (
     stuname VARCHAR2 (20) the NOT NULL, - participant's name, non-null (optional)
     stuno CHAR (6) the NOT NULL, - school, non-empty (must fill)
     stuAge nUMBER (3,0) the NOT NULL, - age, non-null (optional)
     stuID nUMERIC (18,0), - ID number, representing 18 numbers, decimals is 0
     stuSeat nUMERIC (2 , 0) - seat number
     );
/ *
================================================ ===========
| Added: change the definition of stuName column, so this column can hold 25 characters
====================== ======================================
* /
ALTER TABLE stuInfo
 MODIFY (stuName VARCHAR2 (25));
/*
===========================================================
|          补充:向stuInfo 表添加stuTel_no 和stuAddress 两个列
============================================================
*/
 ALTER TABLE stuInfo
 ADD (stuTel_no VARCHAR2 (12),
     stuAddress VARCHAR2(20));
/*
===========================================================
|          补充:从stuInfo表中删除列
============================================================
*/
ALTER TABLE stuInfo 
DROP COLUMN stuTel_no; --删除stuTel_no列
--或者
ALTER TABLE stuInfo
DROP (stuTel_no,stuSeat);--删除stuTel_no和stuSeat列
/*
===========================================================
|          补充:删除stuInfo表
============================================================
*/
DROP TABLE stuInfo;

/*
===========================================================
|          补充:插入stuInfo表数据
============================================================
*/
INSERT INTO stuInfo VALUES ('张三',1,18,null,1);
INSERT INTO stuInfo VALUES ('李四',2,20,null,2);
INSERT INTO stuInfo VALUES ('王五',3,15,null,3);
INSERT INTO stuInfo VALUES ('张三',4,18,null,4);
INSERT INTO stuInfo VALUES ('张三',5,20,null,5);
COMMIT;

/*
===========================================================
|          选择无重复的行
============================================================
*/
SELECT DISTINCT stuName,stuAge
  FROM stuInfo;
/*
===========================================================
|          按照姓名升序,如果姓名相同按照年龄降序排序
============================================================
*/
           
SELECT stuNo,stuName, stuAge
  FROM stuInfo
 WHERE stuAge>17
 ORDER BY stuName  ASC, stuAge DESC;

/*
===========================================================
|          使用列别名
============================================================
*/  
  
SELECT stuName as "姓  名",stuAge as "年  龄", stuID as 身份证号
  FROM StuInfo;
/*
===========================================================
|          利用现有的表创建新表
============================================================
*/            
CREATE TABLE newStuInfo1 AS SELECT * FROM StuInfo;
             
CREATE TABLE newStuInfo2 AS SELECT stuName,stuNo,stuAge FROM StuInfo;
CREATE TABLE newStuInfo3 AS SELECT * FROM StuInfo WHERE 1=2;
 
SELECT * FROM newStuInfo1;
SELECT * FROM newStuInfo2;
SELECT * FROM newStuInfo3;
/*
===========================================================
|          查看表中行数
============================================================
*/               
SELECT COUNT(*) FROM stuInfo;
SELECT COUNT(1) FROM stuInfo;
/*
===========================================================
|          取出stuName,stuAge列不完全重复记录
============================================================
*/             
SELECT stuName,stuAge
  FROM stuInfo
 GROUP BY stuName,stuAge
HAVING(COUNT(stuAge||stuAge) <2);
/*
===========================================================
|          删除stuName,stuAge列重复的行(保留一行)
============================================================
*/             
DELETE
  FROM stuInfo
 WHERE ROWID NOT IN(
                 SELECT MAX(ROWID)
                   FROM stuInfo
                  GROUP BY stuName,stuAge
                 HAVING(COUNT(stuAge||stuAge)>1)
                  UNION
                 SELECT max(ROWID)
                   FROM Stuinfo
                  GROUP BY stuName,stuAge
                 HAVING(COUNT(stuAge||stuAge)=1)    
                 );
SELECT * FROM stuInfo;               
/*
===========================================================
|          查看当前用户所有数据量>100万的表的信息
============================================================
*/             
SELECT *
  FROM user_all_tables a
 WHERE a.num_rows>1000000;
 

/*
===========================================================
|          事务控制语句应用举例
============================================================
*/
select * FROM dept;
--执行步骤一:创建dept 表
CREATE TABLE DEPT
(    DEPTNO NUMBER(2)  PRIMARY KEY,  --部门编号
     DNAME VARCHAR2(14) ,    --部门名称
     LOC VARCHAR2(13)            --地址
) ;                            
--执行步骤二:插入数据
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');
--执行步骤三:操作dept 表
INSERT INTO dept VALUES(50,'a',null);
INSERT INTO dept VALUES(60,'b',null);
SAVEPOINT a;
INSERT INTO dept VALUES(70,'c',null);
ROLLBACK TO SAVEPOINT a;
--执行步骤四:查看dept 表,有50、60 号部门
SELECT * FROM dept;
--执行步骤五:回滚
ROLLBACK;--没有50、60 号部门
--执行步骤六:查看dept 表
SELECT * FROM dept;
 
 
 

Guess you like

Origin www.cnblogs.com/cloud-dream/p/11249403.html