數據庫中創建表(包括創建主鍵,外鍵,非空列,唯一)


創建主鍵(三種方法)

****************

創建學生表:

第一種:

create table student

(sno char(5) primary key,/*學號*/ /*可以直接指定主鍵*/

sname char(20) not null,/*姓名*/

ssex char(3) not null,/*性別*/

sage integer not null,/*年齡*/

sdept char(15);/*系別*/

 

第二種:

create table student

(sno char(5) not null,

constraint pk_student   /*可以指定主鍵名稱*/

primary key (sno),

sname char(20) not null ,/*非空,不可重復*/

ssex char(3) not null,

sage integer ,

sdept char(15));

 

第三種:

創建課程表:

create table course

(cno char(5),/*課程號*/

cname char(20) not null unique,/*課程名,非空,不可重復*/

cpno char(5),/*前置課程號(學此課之前必修課)*/

ccredit number);/*學分*/

通過修改表,設置主鍵.

alter table course

add constraint pk_course

primary key (cno);

*************

創建外鍵(3種方法)

第一種

*************

創建"學生-課程-成績"表

create table sc

(sno char(5) constraint fk_student   /*第一種,寫在屬性定義里面的*/  /*可以指定外鍵名稱,*/

references student(sno),

cno char(5),

foreign key(cno) /*可省略外鍵名稱*/

references course(cno),

grade number);

**********

第二種

**********

create table sc

(sno char(5),

constraint fk_student   /*第二種,寫在屬性定義外面的*/

foreign key (sno)

references student(sno),

cno char(5),

foreign key(cno)

references course(cno),

grade number);

***********

第三種

***********

alter table sc

add constraint fk_student

foreign key(sno)

references student(sno);

 

****************************

建好表之后,新增或修改,刪除約束

****************************

先用此語句查看某個表的所有約束:

select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints WHERE TABLE_name=upper('&TABLE_Name');

 

0.增加not null約束

alter table student modify sname not null;

 

1.修改null約束

alter table student modify sname null;/*姓名可以為空*/

 

2.增加主鍵約束

alter table student

add constraint pk_student

primary key(id);

 

3.刪除主鍵約束

先用此語句查看某個表的所有約束:

select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints WHERE TABLE_name=upper('&TABLE_Name');

這里要刪除的是約束"fk_student"

alter table drop constraint  fk_student;

 

4.增加外鍵約束

alter table sc

add constraint fk_student

foreign key(sno)

references student(sno);

 

5.刪除外鍵約束

需要知道要刪除的外鍵名稱,

先用此語句查看某個表的所有約束:

select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints WHERE TABLE_name=upper('&TABLE_Name');

alter table drop constraint fk_student;

 

6.添加unique約束

alter table course modify cname unique;

添加unique的同時,會自動創建一個相同名稱的索引.

 

7.取消unique

alter table course

drop constraint sys_c005472;

 

8.刪除索引

查找要刪除的索引名稱

運行此語句:

select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;

然后運行

drop index sys_coo5472;

 

今天在對一個表,對其中一個屬性,新建unique約束,

但是提示:ora-02261:such unique or primary key already exists in the table

原因是該屬性已經是primary key了。

如果該屬性已經有unique約束,則不能賦予該屬性primary key約束.

1.一個表只能有一個primary key,可以有多個unique約束

2.當創建primary key的時候,會同時建立一個索引,名字和primary key的名稱相同.

3.當某屬性為primary key,會默認新增not null約束,當刪除primary key后,not null屬性取消.

4.表的一個屬性可以同時設定not null和primary key約束.

 


  1. 這里先新建一個表,其中ID就是要設為主鍵的column。

    創建table的代碼如下:

    CREATE TABLE test_tab

    (

    id NUMBER,

    name VARCHAR2(30)

    )

  2. 要設置主鍵的話這里需要用到alter table這個語法。

    設置主鍵的代碼如下:

    ALTER TABLE test_tab ADD CONSTRAINT pk_test_tab PRIMARY key(id);

  3. 這里解釋下:

    alter table table_name-----------------------意思就是要改動某個表

    add constraint constraint_name-------------意思就是給某個表加約束/限制

    primary key(column_name)------------------說明是主鍵的約束,而且是某個column的。

  4. 執行之后就設置成功了,若不放心可以親自測試下。

    執行如下代碼一次:

    INSERT INTO test_tab(id,name) VALUES (1,'test');

    看到已經insert成功!

  5. 在重復的執行一次:

    INSERT INTO test_tab(id,name) VALUES (1,'test');

    這個時候就有error了:

    ORA-00001: unique constraint (SCOTT.PK_TEST_TAB) violated

 

表的主鍵就這樣設置成功。

 


 

create table語句中如何設置主鍵-CSDN論壇 http://bbs.csdn.net/topics/90208943

create table tt
 (id int, 
  code varchar(9)
  primary key(id,code)
  )

CREATE TABLE tablename (
id int not null PRIMARY KEY ,
name varchar(40)
)
go

or:
CREATE TABLE tablename (
id1 int not null ,
id2 int not null ,
name varchar(40),
CONSTRAINT pk_tb PRIMARY KEY CLUSTERED
(id1,id2)
)
go

CREATE TABLE [dbo].[tt](
a [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
b [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
c [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
d [money] NULL,
e [money] NULL,
f [money] NULL,
 CONSTRAINT [PK_tt] PRIMARY KEY NONCLUSTERED 
(
a ASC,
b ASC,
c ASC
) ON [PRIMARY]
) ON [PRIMARY]
以上是多表的

CREATE TABLE 表名(
id int not null PRIMARY KEY ,
name varchar(40)
)
go

PRIMARY KEY 是設置主鍵的關鍵字

 

 

【轉載自】PROS - 博客園 http://www.cnblogs.com/CodingArt/articles/1621921.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM