真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SQL基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

數(shù)據(jù)庫對象

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計,萬山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:萬山等地區(qū)。萬山做網(wǎng)站價格咨詢:028-86922220

Object描述

基本的數(shù)據(jù)存儲集合,由行和列組成
View從一張表或多張表中抽出的 邏輯上相關(guān)的數(shù)據(jù)集合
序列
生成規(guī)律的數(shù)值
index 索引
提高查詢性能
Synonym 別名給對象起的別名

表名和列名注意事項:

  • 必須以字母開頭

  • 必須在 1–30 個字符之間

  • 必須只能包含 A–Z, a–z, 0–9, _, $, 和 #

  • 必須不能和用戶定義的其他對象重名

  • 必須不能是Oracle的保留字

  • 表的列的數(shù)量最多1000個

CREATE TABLE  語句

必須具有:

– CREATE TABLE 權(quán)限

– 存儲空間

必須指定:

– 表名

– 字段名稱,字段數(shù)據(jù)類型和字段大小

語法:

CREATE TABLE [schema.]table_name (column datatype [DEFAULT expr][, ...]);

引用其他用戶的表

  • 其他用戶定義的表不在當(dāng)前用戶的方案中

  • 應(yīng)該使用用戶名作為前綴,引用其他用戶定義的對象

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

DEFAULT  選項

在插入的過程中,為列指定一個默認(rèn)值。

... hire_date DATE DEFAULT SYSDATE, ...

字符串, 算數(shù)表達(dá)式, 或SQL 函數(shù)都是合法的

其它列的列名和 偽列 是非法的

默認(rèn)值必須滿足列的數(shù)據(jù)類型定義

例如:CREATE TABLE hire_dates  (id NUMBER(8), hire_date DATE DEFAULT SYSDATE);

創(chuàng)建表

create table dept

(deptno number(2),

dname varchar2(14),

loc varchar2(13),

create_date date default sysdate);

確認(rèn)創(chuàng)建是否成功:

desc dept

 Name   Null?    Type

 ----------------------------------------- -------- ----------------------------

 DEPTNO    NUMBER(2)

 DNAME    VARCHAR2(14)

 LOC    VARCHAR2(13)

 CREATE_DATE    DATE

數(shù)據(jù)類型

 

數(shù)據(jù)類型描述
VARCHAR2(size)可變長字符數(shù)據(jù)
CHAR(size)定長字符數(shù)據(jù)
NUMBER(p,s)可變長數(shù)值數(shù)據(jù) 
DATE日期和時間值
LONG可變長字符數(shù)據(jù)(最大可達(dá)到 2 GB)
CLOB字符數(shù)據(jù)(最大可達(dá)到 4 GB)
RAW and LONG RAW二進(jìn)制數(shù)據(jù)
BLOB二進(jìn)制數(shù)據(jù) (最大可達(dá)到 4 GB)
BFILE存儲外部文件的二進(jìn)制數(shù)據(jù) (最大可達(dá)到 4 GB) 
ROWIDbase-64 系統(tǒng)編碼的行唯一地址 

日期數(shù)據(jù)類型

數(shù)據(jù)類型
TIMESTAMP帶小數(shù)秒的日期型
INTERVAL YEAR TO MONTH作為年和月的時間間隔存儲
INTERVAL DAY TO SECOND作為天、小時、分和秒的時間間隔存儲

包含的約束

  • 約束為表級的強(qiáng)制規(guī)則。

  • 如果表有依賴關(guān)系,約束能防止表的刪除。

  • 下面是有效的約束類型:

       – NOT NULL

       – UNIQUE

       – PRIMARY KEY

       – FOREIGN KEY

       – CHECK

約束準(zhǔn)則

  •  如果不指定約束名 Oracle server 自動按照 SYS_Cn 的格式指定約束名

  •  在什么時候創(chuàng)建約束:

– 建表的同時

– 建表之后

  •  可以在表級或列級定義約束

  •  可以通過數(shù)據(jù)字典視圖查看約束

定義約束

 語法:

create table [schema.]table

(column datatype [default expr]

[column_constraint],

...

[table_constraint][,...]);

列級約束語法

column [CONSTRAINT constraint_name] constraint_type,

表級約束語法:

column,...

[CONSTRAINT constraint_name] constraint_type

(column, ...),

列級約束示例

create table employees(

employee_id number(6)

constraint emp_emp_id_pk primary key,

first_name varchar2(20),

...);

表級約束語法:

column,...

[constraint constraint_name] constraint_type

(column, ...),

列級約束示例:

create table employees(

employee_id number(6)

constraint emp_emp_id_pk primary key,

first_name varchar2(20),

...);

表級約束示例:

create table employees(

employee_id number(6),

first_name varchar2(20),

...

job_id varchar2(10) not null,

constraint emp_emp_id_pk

primary key (employee_id));

NOT NULL 約束

確保該列不允許空值:

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

UNIQUE 約束

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

可以定義在表級或者列級:

create table employees(

employee_id number(6),

last_name varchar2(25) not null,

email varchar2(25),

salary number(8,2),

commission_pct number(2,2),

hire_date date not null,

...

constraint emp_email_uk unique(email));

PRIMARY KEY  約束

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

FOREIGN KEY  約束

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

可以定義在表級或者列級:

create table employees(

employee_id number(6),

last_name varchar2(25) not null,

email varchar2(25),

salary number(8,2),

commission_pct number(2,2),

hire_date date not null,

...

department_id number(4),

constraint emp_dept_fk foreign key (department_id)

references departments(department_id),

constraint emp_email_uk unique(email));

FOREIGN KEY約束:關(guān)鍵字

  •  FOREIGN KEY:在表級指定子表中的列

  •  REFERENCES:標(biāo)識在父表中的列

  •  ON DELETE CASCADE:當(dāng)父表中的列被刪除時,子表中相對應(yīng)的列也被刪除

  •  ON DELETE SET NULL:子表中相應(yīng)的列置空

CHECK 約束

定義每一行必須滿足的條件

以下的表達(dá)式是不允許的:

– 出現(xiàn)CURRVAL, NEXTVAL, LEVEL, 和ROWNUM 偽列

– 使用 SYSDATE, UID, USER, 和 USERENV 函數(shù)

– 在查詢中涉及到其它行的值

CREATE TABLE:  示例

create table employees

( employee_id number(6)

constraint emp_employee_id primary key

, first_name varchar2(20)

, last_name varchar2(25)

constraint emp_last_name_nn not null

, email varchar2(25)

constraint emp_email_nn not null

constraint emp_email_uk unique

, phone_number varchar2(20)

, hire_date date

constraint emp_hire_date_nn not null

, job_id varchar2(10)

constraint emp_job_nn not null

, salary number(8,2)

constraint emp_salary_ck check (salary>0)

, commission_pct number(2,2)

, manager_id number(6)

constraint emp_manager_fk references

employees (employee_id)

, department_id number(4)

constraint emp_dept_fk references

departments (department_id));

違反約束

update employees

set department_id = 55

where department_id = 110;

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

主鍵行被另一張表外鍵引用,那么您不能刪除主鍵行

SQL 基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)

使用子查詢創(chuàng)建表

 使用 CREATE TABLE 語句和 AS subquery 選項,將創(chuàng)建表和插入數(shù)據(jù)結(jié)合起來完成。

CREATE TABLE table  [(column, column...)]  AS subquery;

指定的列和子查詢中的列要一一對應(yīng)。

通過列名和默認(rèn)值定義列。

create table dept80

as

select employee_id, last_name,

salary*12 annsal,

hire_date

from employees

where department_id = 80;

ALTER TABLE 語句

使用 ALTER TABLE 語句您可以:

  •  添加一個新列

  •  修改現(xiàn)有的列定義

  •  新的列定義默認(rèn)值

  •  刪除一列

  •  重命名列

  •  將表更改為只讀狀態(tài)

Read-Only 表

使用 ALTER TABLE 將表改為只讀模式:

 表修改過程中阻止DDL和DML的更改

 將表改回到 讀/寫 模式

alter table employees read only;

-- perform table maintenance and then

-- return table back to read/write mode

alter table employees read write;

刪除表

  •  表移動到回收站

  •  使用 PURGE 子句可徹底刪除表

  •  表上依賴的對象失效同時刪除對象權(quán)限

drop table dept;


分享名稱:SQL基礎(chǔ)之DDL語句創(chuàng)建和管理表(十四)
URL網(wǎng)址:http://weahome.cn/article/poccgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部