1. 程式人生 > >oracle中增刪改操作,約束條件

oracle中增刪改操作,約束條件

約束條件
主鍵:primary key, PK = unique + not null
外來鍵:foreign key, FK
唯一:unique
非空:not null
檢查:check


--建表
create table student(
id number primary key,
name varchar2(20),
email varchar2(40),
registtime date default sysdate);


--刪除一個表
drop table student

--新增記錄
insert into Student(id,name,email,registtime) 
values(1,'jakcy','
[email protected]
',sysdate) insert into Student(id,name,email) values(2,'jakcy','[email protected]') insert into Student(id,name,email,registtime) values(3,'jakcy','[email protected]',to_date('2015-10-01','yyyy-mm-dd')) --如果新增全部欄位,可以省略欄位名稱 --不推薦 --建議寫出完整的欄位列表 insert into Student values(4,'jakcy','
[email protected]
',to_date('2015-10-02','yyyy-mm-dd')) --一次增加多條記錄 --使用子查詢代替values insert into student(id,name) select empno,ename from emp -- 刪除 delete student where id=7369 select * from student delete student where id>1000 --修改 update student set name='jacky1' where id=1 update student set name=name||id where id<>1 總結: DDL: create DML: insert/ delete /update --建立約束條件 --如果建立的約束條件沒有命名,由系統自動命名的.SYS_Cn. --1.建立主鍵約束: --1)建表時建立,可以建立在列級或表級. --2)在建表後建立,建立在表級. 例1. --以student為例 --建立主鍵約束,不命名,由系統命名,建立在列級. create table student( id number primary key, name varchar2(20), email varchar2(40), registtime date default sysdate); drop table student 例2. --建立主鍵約束,自己命名,建立在表級 --約束條件命名為:stuning1_id_pk CREATE TABLE student1( id NUMBER, name VARCHAR2(20), CONSTRAINT stuning1_id_pk PRIMARY KEY(id)); 例3.-- 一些建模工具常用的方法 power builder, visio,... --建表後建立主鍵約束 --約束條件名稱自定義(stuning2_id_pk),最好有意義. create table student2( id number, name varchar2(20) ); alter table student2 add constraint stuning2_id_pk primary key (id); --注意 primary key (id1,id2); --檢視主鍵約束條件 --瞭解 select constraint_name, constraint_type from user_constraints where table_name='student2'; 1.主鍵約束 primary key 作用: 1)唯一性,反止重複 2)防止為空 --不提供主鍵值,將返回"id不能為空"錯誤 select * from student insert into student(id,name) values(1,'aaa') --error insert into student(name) values('aaa') --error 重點: 任何時候,一個表要有主鍵。
2.建立非空約束:只能建立在列級 unique
create table student1(
id number primary key,
name varchar2(20) not null);

select constraint_name, constraint_type
from user_constraints
where table_name='student1';

--要求此列上必須有值.錯誤的sql:
insert into student1(id) values(1);

3.建立唯一約束
--email的唯一約束建立在列級
--nickname的唯一約束建立在表級
create table student1(
id number primary key,
name varchar2(20),
nickname varchar2(20),
email char(30) unique,
constraint stu_ning1_nickname_uk1 unique(nickname));

--唯一約束允許為空,但不允許重複.
原因:pk一個表上只能有一個;對於其它不能重複的欄位,只能選擇unique
用於:1. email,但email不是主鍵時; 2.手機號

4.check約束
create table student2(
id number primary key,
name varchar2(20),
sex char,
constraint stuning2_sex_ck check (sex in ('M','F'))); --female,male
--正確的例子:
insert into student2 values(1234,'peter','M');
--錯誤的例子:
insert into student2 values(1235,'chris','A');

5. 外來鍵  --重點
--主表(父表) 被參照的表
create table major(
mid number(2) primary key,
mname varchar2(30)
);

select * from major
--從表(子表) 參照別的表
create table student(
id number(5) primary key,
name varchar2(20),
mid number(2),
constraint stuning_mid_fk foreign key (mid) references major(mid)
);

delete major 

insert into major 
values(1, 'computer');
insert into major
values(2, 'music');
insert into major
values(3, 'movie');

insert into student
values(101,'peter',1);
insert into student
values(102,'chris',3);
insert into student
values(103,'king', 2);

select *
from student s join major m
on s.mid = m.mid
and s.name = 'peter';

--試圖增加一個學生記錄,指定一個不存在的專業編碼10

select * from student
select * from major

insert into student
values(110,'dawson',10);

--報錯:未找到父項關鍵字
--表示:在父表中沒有編碼為10的專業

--試圖刪除major表中的1專業,這個專業被某些學生選修(被參照),此時刪除不成功,
delete from major where mid = 1;
--報錯:已找到子記錄


主表:major,因為mid為pk,一個專業的記錄為一條;
從表:student,因為每一個mid,在student可以有0條,1條或多條記錄對應

insert into student values(119,'aaa',null)  --還沒有分配專業
update student set mid=1  --分配專業

select * from student









相關推薦

oracle刪改操作約束條件

約束條件 主鍵:primary key, PK = unique + not null 外來鍵:foreign key, FK 唯一:unique 非空:not null 檢查:check --建表 create table student( id number prim

mysql資料庫的簡單刪改合併欄位拼接字元操作用java完成將一張表的查詢結果合併存入另一張表的指定欄位

首先問題描述:我現在有兩個表,一個表是關鍵詞,一個表是含有關鍵詞的標籤,需要做的就是在關鍵詞表中新建一個標籤欄位,把包含該關鍵詞的全部標籤存入其中。比如關鍵詞是Java,標籤可能有Java開發,Java後臺等。我這裡關鍵詞有4000個,標籤有40000個,我用了小段java程式碼+sql的函式就完成

Oracle資料庫DML(資料操縱語言)參考程式碼簡單查詢分組查詢簡單刪改操作

撰寫人——軟工二班——陳喜平 – 實驗內容: – 一、簡單查詢 – 編寫簡單查詢語句,理解笛卡爾積、選擇、投影的概念及其在SQL中的實現 –SQL PL/SQL SQLPLUS – DDL :CREATE ALTER DROP 資料定義語言 – DML INSERT DELETE UPDAT

簡述ADO如何使用引數化的命令物件以及刪改儲存過程的操作

連線資料庫程式碼: private SqlConnection con = null; public void OpenConnection(string connectionString) { con = new SqlConnection

Java操作Hbase進行建表、刪表以及對資料進行刪改條件查詢

1、搭建環境   新建JAVA專案,新增的包有:    有關Hadoop的hadoop-core-0.20.204.0.jar    有關Hbase的hbase-0.90.4.jar、hbase-0.90.4-tests.jar以及Hbase資源包中li

樹結構的節點刪改操作排序碼的重新設定

package com.naydog.sort.bysortkey; import java.util.ArrayList; import java.util.List; /** * 目的:樹結構中一個節點下的子節點非自然排序,而是按照排序碼。當發生節點增

MongoDB刪改操作

insert mongodb update MONGODB的增刪改查:註意:"_id"這個字段是數據庫默認給我們加的GUID,目的是保證數據的唯一性1、添加insert 1、語法:db.集合.insert({"key1":value1,"key2":value2,....."keyN":value

Python的列表類型操作——“刪改查”元組——“查”

增刪 mov 增刪改 常用 元組 for range 對象 嵌套 一、什麽是列表   1.列表是一個可變的數據類型,它由[]表示,其中的每一項元素使用“,”逗號隔開,可以儲存各種數據類型。列表相比於字符串,可以存放大量數據類型,其是有序的,有索引,可以使用切片,方便取值。

ASP.NET C# 連接 Oracle數據庫刪改事務

config 註釋 數據庫 using tran datatable 文件 影響 常用 一、知識介紹   ①ASP.NET 使用的是MVC模式,開發工具Visual studio ,語言C#   ②Oracle是比較重型的數據庫,這裏主要介紹連接數據庫,對數據進行具體的使用

Python字典刪改查的操作

增:字典中的增加鍵值對與列表相差無幾,例:dic = {'name1':'tom'}    實現增加的操作:dic['name2'] = 'Jack'   注意不要忘記加''(上引號) 刪:三種方法,dic.pop('key'),可

mysql資料庫刪改操作

1、插入資料          語法格式: INSERT INTO table_name (column_list) VALUES (value_list);     &n

潭州課堂25班:Ph201805201 django框架 第六課 模型類刪改常用 的查詢矣查詢條件 (課堂筆記)

在檢視函式中寫入增刪改查的方法 增:     在 urls 中配置路徑 :    查: 1: 在後臺列印資料  在模型類中新增格式化輸出 : QuerySet,反回的是個物件,可以按索引聚會,用 for

Oracle-資料庫刪改查基本操作

一、建立資料表 1).建立不存在的新表:  create table tname(   Data_Name Date_Type [default][預設值]  ); 2).建立已存在表的副本  create table emp1 as selec

Python sqlalchemy刪改多表查詢join操作

sqlalchemy物件: from sqlalchemy import Column from sqlalchemy import DateTime from sqlalchemy import BIGINT from sqlalchemy import IN

20181022mysql操作一:建立庫表的刪改資料的刪改

1、建立資料庫 create database python charset=utf8; 2、使用資料庫 use python; 3、建立表結構 create table student(     id int primary key auto_increment

hibernatesession刪改操作及事務提交的問題

一、問題回顧 Session session = MySessionFactory.getSession(); // Transaction tx = null; // try{ // String hql="delete form td_report where ID=1" ; //

異步往數據庫插入每個用戶的刪改操作日誌

run while empty sem 批量 異步 exp rri des [x] ++我們需要一個工具類++ 用工具類異步向數據庫中插入用戶的操作日誌 工具類代碼如下: package com.dp.api.util; import com.dp.common.

【MySQL】表的約束以及刪改操作!!

表的約束 空屬性 null:如果不設定,預設為null not null:設定當前欄位不為空,再插入資料的時候當前欄位不可以為空 create table tt1( id int no

在Visual Studio的mvc專案下利用AngularJS實現單頁面刪改操作

執行效果如下(利用了AngularJS的雙向繫結進行修改): 原始碼如下: @{ ViewBag.Title = "Index"; } <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.mi

運用工廠模式封裝刪改select查詢條件

config.php檔案    資料庫引數 <?php $dsn=array( 'localhost'=> '127.0.0.1', 'username' => 'root', 'password' => 'root',