一、插入資料
兩種插入資料方式:
1.插入元組;
2.插入子查詢結果:可以一次插入多個元組
(1)插入元組
陳述句格式:
INSERT
INTO <表名> [(<屬性列1>[,<屬性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
INTO子句
指定要插入資料的表名及屬性列
屬性列的順序可與表結構中的順序不一致
屬性列與常量列要一一對應,否則輸入的常量值有誤
沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致
指定部分屬性列:插入的元組在其余屬性列上取空值
VALUES子句
提供的值必須與INTO子句匹配,即屬性列與常量列要一一對應,否則輸入的常量值有誤
1.將一個新學生元組(學號:201215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中,
INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128','陳冬','男','IS',18);
注:
(1)VALUES (‘201215129’,‘陳冬1’,‘男’,‘’,18); 系名為空格
(2)VALUES (‘201215130’,‘陳冬2’,‘男’,null,‘18’); 系名為空
(3)年齡18,加單引號可以,不加也可以
(4)更新資料后可能螢屏無顯示,按F5
2.將學生張成民的資訊插入到Student表中,
INSERT
INTO Student
VALUES (‘201215126’,‘張成民','男',18,’CS’);
注:沒有屬性列,則插入值的順序必須與表結構的順序一致
3.插入一條選課記錄( ‘202115128’,'1 '),
INSERT
INTO SC(Sno,Cno)
VALUES ('202115128 ',' 1 ');
最后一列如果不輸入資料,可以不寫,則關系資料庫管理系統將在新插入記錄的Grade列上自動地賦空值,
或者:
INSERT
INTO SC
VALUES (' 202115128 ',' 1 ',NULL);
#關系資料庫管理系統將在新插入記錄的Grade列上自動地賦空值,但如果是中間的欄位,必須加’’或null,
(2)插入子查詢結果
陳述句格式
INSERT
INTO <表名> [(<屬性列1> [,<屬性列2>… )]
子查詢;
SELECT子句目標列必須與INTO子句匹配
1.對每一個系,求學生的平均年齡,并把結果存入資料庫
第一步:建表
CREATE TABLE Dept_age
( Sdept CHAR(15), /*系名*/
Avg_age SMALLINT); /*學生平均年齡*/
第二步:插入資料
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage) /*按系求均值*/
FROM Student
GROUP BY Sdept; /*按系名分組*/
一條insert陳述句,同時插入多條記錄,
加()和,對多條資料進行分隔
insert into student
Values
('201215126','李勇2','男','20','CS') ,
('201215127','張立2','男','19','IS');
關系資料庫管理系統在執行插入陳述句時會檢查所插元組是否破壞表上已定義的完整性規則
- 物體完整性
- 參照完整性
- 用戶定義的完整性
- NOT NULL約束
- UNIQUE約束
- 值域約束
2.例如:在對course表插入資料時,由于course表內部建有外鍵,所有不能直接插入資料,需要設定,
set foreign_key_checks=0;
insert into Course
values('8','DB_Design',‘5',‘2');
set foreign_key_checks=1;
二、修改資料
陳述句格式:
UPDATE <表名>
SET <列名>=<運算式>[,<列名>=<運算式>]…
[WHERE <條件>];
三種修改方式:
1.修改某一個元組的值
2.修改多個元組的值
3.帶子查詢的修改陳述句
1. 將學生201215121的年齡改為22歲
UPDATE Student
SET Sage=22
WHERE Sno=‘201215121';
2.將所有學生的年齡增加1歲,
UPDATE Student
SET Sage= Sage+1;
3.將計算機科學系全體學生的成績置零,
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept= 'CS' );
關系資料庫管理系統在執行修改陳述句時會檢查修改操作是否破壞表上已定義的完整性規則:
物體完整性;主碼不允許修改;用戶定義的完整性
三、修改資料
陳述句格式:
DELETE
FROM <表名>
[WHERE <條件>];
三種洗掉方式:
1.洗掉某一個元組的值
2.洗掉多個元組的值
3.帶子查詢的洗掉陳述句
1.洗掉學號為201215125的學生記錄,
DELETE
FROM Student
WHERE Sno=‘ 201215125’;
2.洗掉所有的學生選課記錄,
DELETE
FROM SC;
3.洗掉計算機科學系所有學生的選課記錄,
DELETE
FROM SC
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept= 'CS') ;
關系資料庫管理系統在執行洗掉陳述句時會檢查洗掉操作是否破壞表上已定義的完整性規則
例如:對表內建有外鍵的course 表,不能直接插入資料,也不能直接洗掉資料,但可以直接修改資料,
DELETE from course
WHERE cno=‘7’;
4.將Student表中學生號為”201215125”的學生所屬的系改為空值,
UPDATE Student
SET Sdept = NULL
WHERE Sno='201215125';
5.從Student表中找出漏填了資料的學生資訊
判斷一個屬性的值是否為空值,用IS NULL或IS NOT NULL來表示,
SELECT *
FROM Student
WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;
屬性定義規定:
1.有NOT NULL約束條件的不能取空值
2.加了UNIQUE限制的屬性不能取空值
3.關鍵字不能取空值
6.邏輯運算子真值表

#找出選修1號課程的不及格的學生,
SELECT Sno
FROM SC
WHERE Grade < 60 AND Cno='1';
查詢結果不包括Grade值為 null的學生,因為他們可能緩考等原因,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299629.html
標籤:其他
