ALTER SESSION SET CURRENT_SCHEMA =Owner;
移動資料表,資料移動期間整個 table lock
ALTER TABLE OBJECT_NAME MOVE TABLESPACE NEW;
重建Index
ALTER INDEX INDEX_NAME REBUILD TABLESPACE NEWNDX ;
SELECT CAST(NULL as VARCHAR2(100)) as varcchar2,CAST(NULL as date) as datetime FROM dual;
USE [MASTER] GO IF EXISTSLet us browse the table Employee by using the following SQL Query.(SELECT NAME FROM SYS.DATABASES WHERE NAME = N'EMPLOYEE TEST') DROP DATABASE [EMPLOYEE TEST] GO CREATE DATABASE [EMPLOYEE TEST] GO USE [EMPLOYEE TEST] GO IF EXISTS
(SELECT * FROM SYS.OBJECTS
WHERE OBJECT_ID =
OBJECT_ID(N'[DBO].[EMPLOYEE]') AND TYPE IN (N'U')) DROP TABLE [DBO].[EMPLOYEE] GO CREATE TABLE EMPLOYEE (EMPID INT, FNAME VARCHAR(50), LNAME VARCHAR(50)) GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (2021110, 'MICHAEL', 'POLAND') GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (2021110, 'MICHAEL', 'POLAND') GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (2021115, 'JIM', 'KENNEDY') GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (2121000, 'JAMES', 'SMITH') GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (2011111, 'ADAM', 'ACKERMAN') GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (3015670, 'MARTHA', 'LEDERER') GO INSERT INTO EMPLOYEE (EMPID, FNAME, LNAME) VALUES (1021710, 'MARIAH', 'MANDEZ') GO
SELECT EMPID, FNAME, LNAME FROM EMPLOYEEThe results of the above query look like illustration 1.0.
| 2021110 | MICHAEL | POLAND |
| 2021110 | MICHAEL | POLAND |
| 2021115 | JIM | KENNEDY |
| 2121000 | JAMES | SMITH |
| 2011111 | ADAM | ACKERMAN |
| 3015670 | MARTHA | LEDERER |
| 1021710 | MARIAH | MANDEZ |
SELECT ROWID=IDENTITY(int,1,1) , EMPID, FNAME, LNAME INTO EMPLOYEE2 FROM EMPLOYEE ORDER BY EMPIDThis query created a new table using the identity function in order to generate RowId.
SELECT RowID, EMPID, FNAME, LNAME FROM EMPLOYEE2The results of the above query would look like illustration 1.1.
| 1 | 1021710 | MARIAH | MANDEZ |
| 2 | 2011111 | ADAM | ACKERMAN |
| 3 | 2021110 | MICHAEL | POLAND |
| 4 | 2021110 | MICHAEL | POLAND |
| 5 | 2021115 | JIM | KENNEDY |
| 6 | 2121000 | JAMES | SMITH |
| 7 | 3015670 | MARTHA | LEDERER |
SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEEThe results of the above query would look like illustration 1.2.
| 1 | 1021710 | MARIAH | MANDEZ |
| 2 | 2011111 | ADAM | ACKERMAN |
| 3 | 2021110 | MICHAEL | POLAND |
| 4 | 2021110 | MICHAEL | POLAND |
| 5 | 2021115 | JIM | KENNEDY |
| 6 | 2121000 | JAMES | SMITH |
| 7 | 3015670 | MARTHA | LEDERER |
WITH [EMPLOYEE ORDERED BY ROWID] AS (SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE) SELECT * FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID =4The results of the above query would look like illustration 1.3.
| 4 | 2021110 | MICHAEL | POLAND |
WITH [EMPLOYEE ORDERED BY ROWID] AS (SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE) DELETE FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID =4Let us query the table using the following query.
SELECT * FROM EMPLOYEEThe results of the above query would look like illustration 1.4.
| 2021110 | MICHAEL | POLAND |
| 2021115 | JIM | KENNEDY |
| 2121000 | JAMES | SMITH |
| 2011111 | ADAM | ACKERMAN |
| 3015670 | MARTHA | LEDERER |
| 1021710 | MARIAH | MANDEZ |
create table diffT(sortKey,Val) as
select 1,'aa' from dual union all
select 2,'bb' from dual union all
select 3,'aa' from dual union all
select 4,'dd' from dual;
col concatV for a20
select wmsys.wm_concat(distinct Val) as concatV from diffT;
concatV
--------
aa,bb,dd
select ListAgg(Val,',')
within group(order by sortKey desc) as concatV
from diffT;
CONCATV
------------
dd,aa,bb,aa
select ListAgg(Val,'***')
within group(order by sortKey desc) as concatV
from diffT;
CONCATV
-----------------
dd***aa***bb***aa
select sortKey,wmsys.wm_concat(Val)
over(order by sortKey) as concatV
from diffT;
SORTKEY CONCATV
------- -----------
1 aa
2 aa,bb
3 aa,bb,aa
4 aa,bb,aa,dd
select wmsys.wm_concat(Val)
Keep(Dense_Rank First order by Val) as concatV
from diffT;
CONCATV
-------
aa,aa