SELECT * FROM beverages WHERE field1 = 'Kona' AND field2 = 'coffee' AND field3 = 122;
SELECT name,address,phone_number INTO v_employee_name,v_employee_address,v_employee_phone_number FROM employee WHERE employee_id = 6;
使用 VALUES 關(guān)鍵字插入
INSERT INTO table_name VALUES ('Value1', 'Value2', ... );
INSERT INTO table_name(Column1, Column2, ... ) VALUES ( 'Value1', 'Value2', ... );
使用 SELECT 語句插入
INSERT INTO table_name(SELECT Value1, Value2, ... from table_name );
INSERT INTO table_name(Column1, Column2, ... ) ( SELECT Value1, Value2, ... from table_name );
DELETE FROM table_name WHERE some_column=some_value
DELETE FROM customer WHERE sold = 0;
-- 更新該表的整個列,設(shè)置 `state` 列所有值為 `CA`
UPDATE customer SET state='CA';
-- 更新表的具體記錄eg:
UPDATE customer SET name='Joe' WHERE customer_id=10;
-- 當(dāng) `paid` 列大于零時,將列 `invoice` 更新為 `paid`
UPDATE movies SET invoice='paid' WHERE paid > 0;
序列的語法是
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;
例如
CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
將序列增加一定數(shù)量
ALTER SEQUENCE <sequence_name> INCREMENT BY <integer>;
ALTER SEQUENCE seq_inc_by_ten INCREMENT BY 10;
改變序列的最大值
ALTER SEQUENCE <sequence_name> MAXVALUE <integer>;
ALTER SEQUENCE seq_maxval MAXVALUE 10;
設(shè)置序列循環(huán)或不循環(huán)
ALTER SEQUENCE <sequence_name> <CYCLE | NOCYCLE>;
ALTER SEQUENCE seq_cycle NOCYCLE;
配置序列以緩存值
ALTER SEQUENCE <sequence_name> CACHE <integer> | NOCACHE;
ALTER SEQUENCE seq_cache NOCACHE;
設(shè)置是否按順序返回值
ALTER SEQUENCE <sequence_name> <ORDER | NOORDER>;
ALTER SEQUENCE seq_order NOORDER;
ALTER SEQUENCE seq_order;
有時需要從字符串創(chuàng)建查詢
PROCEDURE oracle_runtime_query_pcd IS
TYPE ref_cursor IS REF CURSOR;
l_cursor ref_cursor;
v_query varchar2(5000);
v_name varchar2(64);
BEGIN
v_query := 'SELECT name FROM employee WHERE employee_id=5';
OPEN l_cursor FOR v_query;
LOOP
FETCH l_cursor INTO v_name;
EXIT WHEN l_cursor%NOTFOUND;
END LOOP;
CLOSE l_cursor;
END;
這是一個如何完成動態(tài)查詢的非常簡單的示例
length( string1 );
SELECT length('hello world') FROM dual;
這將返回 11,因為參數(shù)由 11 個字符組成,包括空格
SELECT lengthb('hello world') FROM dual;
SELECT lengthc('hello world') FROM dual;
SELECT length2('hello world') FROM dual;
SELECT length4('hello world') FROM dual;
這些也返回 11,因為調(diào)用的函數(shù)是等價的
Instr(在字符串中)返回一個整數(shù),該整數(shù)指定字符串中子字符串的位置。程序員可以指定他們想要檢測的字符串的外觀以及起始位置。不成功的搜索返回 0
instr( string1, string2, [ start_position ], [ nth_appearance ] )
instr( 'oracle pl/sql cheatsheet', '/');
這將返回 10,因為第一次出現(xiàn)的 / 是第十個字符
instr( 'oracle pl/sql cheatsheet', 'e', 1, 2);
這將返回 17,因為第二次出現(xiàn)的 e 是第 17 個字符
instr( 'oracle pl/sql cheatsheet', '/', 12, 1);
這將返回 0,因為第一次出現(xiàn)的 / 在起點(diǎn)之前,即第 12 個字符
replace(string1, string_to_replace, [ replacement_string ] );
replace('i am here','am','am not');
這返回 i am not here
SELECT substr( 'oracle pl/sql cheatsheet', 8, 6) FROM dual;
返回 pl/sql,因為 pl/sql 中的 p 在字符串中的第 8 個位置(從 oracle 中的 o 處的 1 開始計算)
SELECT substr( 'oracle pl/sql cheatsheet', 15) FROM dual;
返回 cheatsheet,因為 c 在字符串中的第 15 個位置,t是字符串中的最后一個字符。
SELECT substr('oracle pl/sql cheatsheet', -10, 5) FROM dual;
返回 cheat,因為 c 是字符串中的第 10 個字符,從字符串末尾以 t 作為位置 1 開始計算。
這些函數(shù)可用于從字符串中過濾不需要的字符。默認(rèn)情況下,它們會刪除空格,但也可以指定要刪除的字符集
trim ( [ leading | trailing | both ] [ trim-char ] from string-to-be-trimmed );
trim (' 刪除兩側(cè)的空格 ');
這將返回“刪除兩側(cè)的空格”
ltrim ( string-to-be-trimmed [, trimming-char-set ] );
ltrim (' 刪除左側(cè)的空格 ');
這將返回“刪除左側(cè)的空格??????”
rtrim ( string-to-be-trimmed [, trimming-char-set ] );
rtrim (' 刪除右側(cè)的空格 ');
這將返回“??????刪除右側(cè)的空格”
創(chuàng)建表的語法
CREATE TABLE [table name]
( [column name] [datatype], ... );
示例:
CREATE TABLE employee
(id int, name varchar(20));
添加列的語法
ALTER TABLE [table name]
ADD ( [column name] [datatype], ... );
示例:
ALTER TABLE employee
ADD (id int)
修改列的語法
ALTER TABLE [table name]
MODIFY ( [column name] [new datatype]);
ALTER 表語法和示例:
ALTER TABLE employee
MODIFY( sickHours s float );
刪除列的語法
ALTER TABLE [table name]
DROP COLUMN [column name];
示例:
ALTER TABLE employee
DROP COLUMN vacationPay;
| 類型代碼 | 類型描述 | 作用于級別 |
|---|---|---|
C | 檢查表 | Column |
O | 在視圖上只讀 | Object |
P | 首要的關(guān)鍵 | Object |
R | 參考 AKA 外鍵 | Column |
U | 唯一鍵 | Column |
V | 檢查視圖上的選項 | Object |
以下語句顯示了系統(tǒng)中的所有約束:
SELECT
table_name,
constraint_name,
constraint_type
FROM user_constraints;
以下語句顯示了源和目標(biāo)表/列對的所有引用約束(外鍵):
SELECT
c_list.CONSTRAINT_NAME as NAME,
c_src.TABLE_NAME as SRC_TABLE,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN
FROM ALL_CONSTRAINTS c_list,
ALL_CONS_COLUMNS c_src,
ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = 'R'
使用 CREATE TABLE 語句創(chuàng)建檢查約束的語法是:
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE]
);
例如:
CREATE TABLE suppliers
(
supplier_id numeric(4),
supplier_name varchar2(50),
CONSTRAINT check_supplier_id
CHECK (supplier_id BETWEEN 100 and 9999)
);
使用 CREATE TABLE 語句創(chuàng)建唯一約束的語法是:
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name UNIQUE (column1, column2, column_n)
);
例如:
CREATE TABLE customer
(
id integer not null,
name varchar2(20),
CONSTRAINT customer_id_constraint UNIQUE (id)
);
唯一約束的語法是:
ALTER TABLE [table name]
ADD CONSTRAINT [constraint name] UNIQUE( [column name] ) USING INDEX [index name];
例如:
ALTER TABLE employee
ADD CONSTRAINT uniqueEmployeeId UNIQUE(employeeId) USING INDEX ourcompanyIndx_tbs;
foregin 約束的語法是:
ALTER TABLE [table name]
ADD CONSTRAINT [constraint name] FOREIGN KEY (column,...) REFERENCES table [(column,...)] [ON DELETE {CASCADE | SET NULL}]
例如:
ALTER TABLE employee
ADD CONSTRAINT fk_departament FOREIGN KEY (departmentId) REFERENCES departments(Id);
刪除(刪除)約束的語法是:
ALTER TABLE [table name]
DROP CONSTRAINT [constraint name];
例如:
ALTER TABLE employee
DROP CONSTRAINT uniqueEmployeeId;
創(chuàng)建索引的語法是:
CREATE [UNIQUE] INDEX index_name
ON table_name (column1, column2, . column_n)
[ COMPUTE STATISTICS ];
UNIQUE 表示索引列中值的組合必須是唯一的
COMPUTE STATISTICS 告訴 Oracle 在創(chuàng)建索引期間收集統(tǒng)計信息。 然后優(yōu)化器使用這些統(tǒng)計信息來選擇執(zhí)行語句時的最佳執(zhí)行計劃。例如:
CREATE INDEX customer_idx
ON customer (customer_name);
在此示例中,已在名為 customer_idx 的客戶表上創(chuàng)建了一個索引。它僅包含 customer_name 字段
下面創(chuàng)建一個包含多個字段的索引:
CREATE INDEX customer_idx
ON supplier (customer_name, country);
以下內(nèi)容在創(chuàng)建索引時收集統(tǒng)計信息:
CREATE INDEX customer_idx
ON supplier (customer_name, country)
COMPUTE STATISTICS;
在 Oracle 中,您不僅限于在列上創(chuàng)建索引。您可以創(chuàng)建基于函數(shù)的索引
創(chuàng)建基于函數(shù)的索引的語法是:
CREATE [UNIQUE] INDEX index_name
ON table_name (function1, function2, . function_n)
[ COMPUTE STATISTICS ];
例如:
CREATE INDEX customer_idx
ON customer (UPPER(customer_name));
-- 已創(chuàng)建基于 customer_name 字段的大寫評估的索引
為確保 Oracle 優(yōu)化器在執(zhí)行 SQL 語句時使用此索引,請確保 UPPER(customer_name) 的計算結(jié)果不為 NULL 值。 為確保這一點(diǎn),請將 UPPER(customer_name) IS NOT NULL 添加到 WHERE 子句中,如下所示:
SELECT customer_id, customer_name, UPPER(customer_name)
FROM customer
WHERE UPPER(customer_name) IS NOT NULL
ORDER BY UPPER(customer_name);
重命名索引的語法是:
ALTER INDEX index_name
RENAME TO new_index_name;
例如:
ALTER INDEX customer_id
RENAME TO new_customer_id;
在此示例中,customer_id 重命名為 new_customer_id
如果您需要在索引首次創(chuàng)建后收集統(tǒng)計信息或者您想要更新統(tǒng)計信息,您總是可以使用 ALTER INDEX 命令來收集統(tǒng)計信息。 您收集統(tǒng)計信息以便 oracle 可以有效地使用索引。 這將重新計算表大小、行數(shù)、塊數(shù)、段數(shù)并更新字典表,以便 oracle 在選擇執(zhí)行計劃時可以有效地使用數(shù)據(jù)。
收集索引統(tǒng)計信息的語法是:
ALTER INDEX index_name
REBUILD COMPUTE STATISTICS;
例如:
ALTER INDEX customer_idx
REBUILD COMPUTE STATISTICS;
在此示例中,為名為 customer_idx 的索引收集統(tǒng)計信息
刪除索引的語法是:
DROP INDEX index_name;
例如:
DROP INDEX customer_idx;
在此示例中,刪除了 customer_idx
創(chuàng)建用戶的語法是:
CREATE USER username IDENTIFIED BY password;
例如:
CREATE USER brian IDENTIFIED BY brianpass;
授予權(quán)限的語法是:
GRANT privilege TO user;
例如:
GRANT dba TO brian;
更改用戶密碼的語法是:
ALTER USER username IDENTIFIED BY password;
例如:
ALTER USER brian IDENTIFIED BY brianpassword;
感谢您访问我们的网站,您可能还对以下资源感兴趣:
国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片