1. 程式人生 > >建立表(包括建立主鍵,外來鍵,非空列,唯一)

建立表(包括建立主鍵,外來鍵,非空列,唯一)

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

建立主鍵(三種方法)

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

建立學生表:

第一種:

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約束.

相關推薦

建立(包括建立,外來,,唯一)

**************** 建立主鍵(三種方法) **************** 建立學生表: 第一種: create table student (sno char(5) primary key,/*學號*/ /*可以直接指定主鍵*/ sname

【Hibernate】建立時不能生成外來

問題 alter table t_student drop constraint FK4B907570A5F18255 drop table t_classes if exists drop table t_student if exists create tab

數據庫中創建(包括創建,外,,唯一)

分享 建立 包括 直接 外鍵約束 多個 rim 但是 spa 創建表(包括創建主鍵,外鍵,非空列,唯一) - PROS - 博客園 http://www.cnblogs.com/CodingArt/articles/1621921.html ***************

Day054--MySQL, 建立使用者和授權, 資料型別, 列舉和集合, 約束,唯一, ,外來

建立使用者和授權 1.建立使用者: # 指定ip:192.118.1.1的mjj使用者登入 create user 'mjj'@'192.118.1.1' identified by '123'; # 指定ip:192.118.1.開頭的mjj使用者登入 create user 'mjj'@'192.118

navicat中設計時,索引,外來,觸發器的建立和作用

navicat 為表新增索引 分析常用的查詢場景,為欄位新增索引,增加查詢速度。 可以新增單列索引,可以新增聯合索引。 右鍵,設計表中可以檢視和新增修改索引! 索引一定要根據常用的查詢場景進行新增! 寫了sql語句測試了一下,確實使用了索引! 可以通過

資料庫建的一些操作,包括外來約束等等

create table 成績 ( 學號 char(11) references 學員資訊(學號) not null, 課程 int references 課程(編號) not null, 考次 int constraint PK_成績 primary key(學號,課程,

【資料庫SQL】常見SQL語句-建立_新增_新增

常見SQL語句-建立表 新增主鍵 新增列  新建表: create table [表名] ( [自動編號欄位] int IDENTITY (1,1) PRIMARY KEY , [欄位1] nVarChar(50) default \'預設值\' null , [欄位2]

oracle建立並新增,設定自增長

oracle序列詳解和建立自增主鍵 Oracle序列主鍵 序列: 是oacle提供的用於產生一系列唯一數字的資料庫物件。 l 自動提供唯一的數值 l 共享物件 l 主要用於提供主鍵值

oracle 找出被哪些的欄位作為外來來使用

表t_sjzxj_dbitem中的欄位id,被其他表作為外來鍵,現有個需求在刪除t_sjzx_dbitem中的記錄時,將其關聯的記錄一併刪除,先用sql找出id被哪些表的哪個欄位做了外來鍵關聯,然後再將關聯的記錄一起刪除。 select c.TABLE_NAME table

MySQL:04---資料完整性(唯一、check、預設值、外來約束),級聯設定,自增

一、資料完整性 1.概念:指資料能正確反映實際情況 2.分類 實體完整性:識別符號或主鍵完整性(主鍵、唯一值約束) 域完整性:限制資料型別、格式、取值範圍(檢查、預設值、外來鍵約束) 引用完整性:輸入或刪除時,不能存在引用不存在的值(外來鍵約束) 自定義完整性

資料庫中父和子外來的理解)

好久沒有碰資料庫分析設計了。今天突然要做一個數據庫分析,很是費解,所謂好記性不如爛筆頭,個人覺得還是要記一下的。用一個例子來說: 你想要設計的一個產品表可能是這樣的: 產品表:產品ID, 產品名稱, 產品型別 產品ID 產品名稱 產品型

linux之SQL語句簡明教程---,外來

兩個 drop 表格 教程 ref double last http 舉例 主鍵 (Primary Key) 中的每一筆資料都是表格中的唯一值。換言之。它是用來獨一無二地確認一個表格中的每一行資料。主鍵能夠是原本資料內的一個欄位。或是一個人造欄位 (與原本資料沒有關系的

SQL - 創建一個學生,要求有約束和約束

creat red 要求 pri har 學生 not null clas sql CREATE TABLE [dbo].[Student] ( [ID] [int] NOT NULL, [Name] [nchar](10) NOT NULL, [Age] [in

mysql查詢指定庫的所有的記錄數、外來、索引、檢視、觸發器等

--  查詢指定庫的所有表資料行數 use information_schema; select table_name,table_rows from tables  where TABLE_SCHEMA = 'cs_lanzhou'  order by table

主表和附表的關聯關係,普通欄位就可以實現為什麼還要有外來?之間有什麼關係

主鍵和外來鍵是把多個表組織為一個有效的關係資料庫的粘合劑。主鍵和外來鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外來鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環境,就很難對這些鍵進行修改,所以在開發階段就

資料庫 外來 唯一區別

下面我通過一個小栗子來說明我們應該如何選擇主鍵,外來鍵和唯一鍵。  現在我們想建立學生表,用來儲存,一個系統的登陸資訊。建表如下: create table student4 (   stu_id int primary key identity,--identity表示自

mysql 在中新增多個外來/增加外來/級聯約束

CREATE TABLE`xh` (  `id` int(100) unsigned NOT NULL AUTO_INCREMENT COMMENT ,  `cl_id` smallint(3) unsigned NOT NULL COMMENT,  `title` varchar(100) COLLAT

mysql在中新增多個外來/增加外來/級聯約束

CREATE TABLE`xh` ( `id` int(100) unsigned NOT NULL AUTO_INCREMENT COMMENT , `cl_id` smallint(3) unsigned NOT NULL COMMENT, `title` varchar(100) COLLATE

查詢資料庫某個的欄位、屬性、註釋說明、是否、是否sql(mysql)

SELECT     UPPER(column_name) AS '欄位名稱',     column_comment AS '欄位描述',     UPPER(column_type) AS '欄位型別',     IF(column_key='PRI','TRUE','F

【MySQL】資料型別&時間戳&&外來&索引

一、資料表的建立 示例: 二、MySQL資料型別 1. 整數型別:BIT、BOOL、TINYINT、SMALLINT、MEDIUMINT、 INT、 BIGINT MySQL資料型別