5.21 Updates in SQL
There are three constructs in SQL that allow us to update the tables of a
relational database: update, insert, and delete.
The update construct modifies components of tuples. It applies to all tuples
of the specified table unless limited by a where clause.
Example 5.21.1 Recall the table EMPHIST introduced in Example 3.3.5. A
script to create and populate the tables discussed in that example is contained
in the script ced.sql that is available in Appendix C.
To give all current employees a 10% raise, we apply the following update
phrase:
update EMPHIST
set salary = 1.1* salary
where term_date is null;
The general syntax of update is:
update table name [corr name]
set column = hexpression|nulli {,column = hexpression|nulli}
[wherecondition]
The insert construct adds new rows to a table. It inserts a single rows
(whose components must be specified by the user) or a set of rows that originate
from a retrieval involving other tables.
The syntax of a single-tuple insert is:
insert into table name[(column{, column}]
hvalues(expr {, expr})|subselecti
The values of expressions listed in the list of values must belong to the domains
of the attributes specified in the list of columns in order for the insertion to take
effect.
Example 5.21.2 To insert two rows containing registration records for stu-
dent 2890 for the fall semester of 2004 into GRADES, we execute two insert
statements:
insert into GRADES
values (’2890’,’023’,’cs110’,’Fall’,2004,null);
insert into GRADES
values (’2890’,’056’,’cs240’,’Fall’,94,null);
152 SQL — The Relational Language
The syntax of the insertion of a set of tuples obtained by a retrieval operation
is:
insert into table name [(column{, column}]
select phrase
Here the select phrase must return tuples of values consistent with the
domains of the attributes specified by the list of columns [(column{, column}].
Example 5.21.3 Suppose that we intend to have a separate table indicating
the assignments of instructors. After creating such a table (called ASSIGN and
equipped with the attributes empno, cno, sem, and year) by writing:
create table ASSIGN(empno varchar2(11) not null,
cno varchar2(5) not null,
sem varchar2(6) not null,
year smallint);
we can load this table using data from the existing table GRADES using the
construct:
insert into ASSIGN(empno, cno, sem, year)
select distinct empno, cno, sem, year
from GRADES;
This results in the following table:
empno cno sem year
019 cs110 Fall 2001
019 cs210 Fall 2002
019 cs210 Spring 2003
019 cs240 Spring 2002
023 cs110 Spring 2002
056 cs240 Spring 2003
234 cs310 Spring 2003
234 cs410 Spring 2002
If the components of the tuple to be inserted into a table violate the decla-
ration of the table (e.g., a null value for a not null attribute, or a character
string for a numerical attribute), the DBMS should reject the insertion.
Likewise, the delete construct deletes rows of tables.
Example 5.21.4 To delete the rows of the table ASSIGN that correspond to
course taught by the instructor whose employee number is ’234’, we write:
delete from ASSIGN where empno = ’234’;
The directive:
delete from GRADES where grade is null;
eliminates the rows whose grade component is null.
The where clause of delete is optional; if this clause is not used, then all
rows are deleted. The tabular variable still exists.
5.22 Access Rights 153
Example 5.21.5 The following delete eliminates all rows of the table ASSIGN:
delete from ASSIGN;
The syntax of delete is:
delete from table name [wherecondition]
5.21 ปรับปรุงใน SQLมีโครงสร้างสามใน SQL ที่ทำให้เราปรับปรุงตารางของการฐานข้อมูลเชิงสัมพันธ์: ปรับปรุง แทรก และลบก่อสร้างปรับปรุงปรับเปลี่ยนคอมโพเนนต์ของ tuples ใช้กับ tuples ทั้งหมดของที่ระบุตารางเว้นแต่ที่จำกัด โดยเป็นประโยคตัวอย่าง 5.21.1 เรียกคืนตาราง EMPHIST ที่นำมาใช้ในตัวอย่างที่ 3.3.5 Aสคริปต์เพื่อสร้าง และเติมข้อมูลตารางในตัวอย่างที่มีอยู่ใน ced.sql สคริปต์ที่มีอยู่ในภาคผนวกคเพื่อให้พนักงานทั้งหมดปัจจุบันเพิ่ม 10% เราใช้การปรับปรุงต่อไปนี้วลี:อัพเด EMPHISTตั้งเงินเดือน =เงินเดือน 1.1*ที่ term_date เป็น nullไวยากรณ์ทั่วไปปรับปรุงเป็น:ปรับปรุงชื่อตาราง [คอรร์ชื่อ]ตั้งค่าคอลัมน์ = hexpression|nulli {, คอลัมน์ = hexpression|nulli }[wherecondition]สร้างแทรกเพิ่มแถวใหม่ลงในตาราง แทรกแถวเดียว(คอมโพเนนต์ต้องระบุ โดยผู้ใช้) หรือชุดของแถวที่มาจากการเรียกที่เกี่ยวข้องกับตารางอื่น ๆไวยากรณ์ของแทรกทูเพิลเดียวคือ:ใส่ชื่อตาราง [(คอลัมน์ { คอลัมน์}]|subselecti hvalues (expr { expr })ค่าของนิพจน์ที่แสดงในรายการของค่าที่ต้องเป็นสมาชิกของโดเมนแอตทริบิวต์ที่ระบุไว้ในรายการของคอลัมน์การแทรกจะผลการตัวอย่าง 5.21.2 การแทรกสองแถวที่มีเรกคอร์ดการลงทะเบียนสำหรับ stuเด็นท์ 2890 สำหรับภาคฤดูใบไม้ร่วงของปี 2004 ในเกรด เราดำเนินการแทรกสองคำสั่ง:ใส่เกรดค่า ('2890', '023', 'cs110' ตก' 2004, null);ใส่เกรดค่า ('2890', '056', 'cs240' 'ตก' 94, null);152 SQL คือภาษาสัมพันธ์กันไวยากรณ์ของการแทรกชุดของ tuples ได้รับ โดยการเรียกคือ:ใส่ชื่อตาราง [(คอลัมน์ { คอลัมน์}]เลือกวลีที่นี่เลือกวลีต้องกลับ tuples ค่าสอดคล้องกับการโดเมนของแอททริบิวต์ที่ระบุตามรายการของคอลัมน์ [(คอลัมน์ { คอลัมน์}]ตัวอย่าง 5.21.3 สมมติว่า เราตั้งใจจะมีตารางแยกต่างหากที่ระบุการกำหนดของผู้สอน หลังจากสร้างตารางดังกล่าว (เรียกว่าการกำหนด และเพียบพร้อมไป ด้วยแอตทริบิวต์ empno ซีเอ็นโอ sem และปี) โดยการเขียน:สร้างตารางกำหนด (varchar2(11) empno ไม่ว่างซีเอ็นโอ varchar2(5) ไม่ว่างไม่ว่าง sem varchar2(6)ปีอื่น);เราสามารถโหลดตารางนี้ใช้ข้อมูลจากเกรดตารางที่มีอยู่ที่ใช้ในโครงสร้าง:ใส่กำหนด (empno ซีเอ็นโอ sem ปี)เลือก empno ทั้งหมด ซีเอ็นโอ sem ปีจากเกรดซึ่งผลลัพธ์ในตารางต่อไปนี้:empno ซีเอ็นโอ sem ปี019 cs110 ฤดูใบไม้ร่วงปี 2001019 cs210 ฤดูใบไม้ร่วง 2002019 cs210 ฤดูใบไม้ผลิ 2003019 cs240 ฤดูใบไม้ผลิ 2002023 cs110 ฤดูใบไม้ผลิ 2002056 cs240 ฤดูใบไม้ผลิ 2003234 cs310 ฤดูใบไม้ผลิ 2003234 cs410 ฤดูใบไม้ผลิ 2002ถ้าส่วนประกอบของทูเพิลที่จะแทรกลงในตารางละเมิด decla-อาหารของตาราง (เช่น ค่า null สำหรับแอตทริบิวต์ไม่ว่าง หรืออักขระสายอักขระสำหรับแอททริบิวต์ที่เป็นตัวเลข), DBMS ควรปฏิเสธการแทรกในทำนองเดียวกัน สร้างลบลบแถวของตารางตัวอย่าง 5.21.4 การลบแถวของตารางกำหนดที่สอดคล้องกับหลักสูตรสอน โดยผู้สอนที่มีหมายเลขพนักงานเป็น "234" เราเขียน:ลบออกไปจากกำหนดที่ empno = '234'คำสั่ง:ลบจากเกรดซึ่งเกรดเป็น nullกำจัดแถวที่มีส่วนประกอบเกรดเป็น nullการส่วนคำสั่งลบเลือก ถ้าไม่ได้ใช้ นี้แล้วทั้งหมดแถวจะถูกลบออก ตัวแปรตารางยังคงอยู่5.22 สิทธิการเข้าถึง 153ตัวอย่าง 5.21.5 การลบต่อไปนี้เอาแถวของตารางกำหนด:ลบจากกำหนดไวยากรณ์ของลบคือ:ลบออกจากตารางชื่อ [wherecondition]
การแปล กรุณารอสักครู่..

5.21 การปรับปรุงใน SQL
มีสามสร้างใน SQL ที่ช่วยให้เราสามารถปรับปรุงตารางการมี
ฐานข้อมูลเชิงสัมพันธ์. ปรับปรุงแทรกและลบ
สร้างการปรับปรุงปรับเปลี่ยนองค์ประกอบของ tuples ซึ่งจะใช้กับ tuples ทั้งหมด
ของตารางที่ระบุเว้นแต่ จำกัด โดยที่ข้อ.
ตัวอย่าง 5.21.1 จำ EMPHIST ตารางที่นำมาใช้ในตัวอย่างที่ 3.3.5
สคริปต์เพื่อสร้างและเติมตารางที่กล่าวถึงในตัวอย่างที่มีอยู่
ใน ced.sql สคริปต์ที่มีอยู่ในภาคผนวกค
เพื่อให้พนักงานทั้งหมดในปัจจุบันเพิ่มขึ้น 10% เราใช้การปรับปรุงต่อไปนี้
วลี:
ปรับปรุง EMPHIST
ชุดเงินเดือน = 1.1 * เงินเดือน
ที่ term_date เป็นโมฆะ;
ไวยากรณ์ทั่วไปของการปรับปรุงคือ
ชื่อตารางการปรับปรุง [ชื่อ Corr]
คอลัมน์ตั้ง = hexpression | ไอ {คอลัมน์ = hexpression | ไอ}
[WhereCondition]
สร้างแทรกเพิ่มแถวใหม่ในตาราง มันแทรกแถวเดียว
(ซึ่งเป็นส่วนประกอบที่จะต้องมีการระบุโดยผู้ใช้) หรือชุดของแถวที่มา
. จากการดึงที่เกี่ยวข้องกับตารางอื่น ๆ
ไวยากรณ์ของแทรกเดียว tuple คือ
ใส่ลงในชื่อตาราง [({คอลัมน์คอลัมน์} ]
hvalues (expr {, expr}) | subselecti
ค่าของการแสดงออกที่ระบุไว้ในรายการค่าต้องเป็นโดเมน
ของคุณลักษณะที่ระบุไว้ในรายการของคอลัมน์ในการสั่งซื้อสำหรับการแทรกที่จะมี
ผลกระทบ.
ตัวอย่าง 5.21.2 การแทรก สองแถวที่มีการบันทึกการลงทะเบียนสำหรับ stu-
บุ๋ม 2890 สำหรับภาคการศึกษาฤดูใบไม้ร่วงของปี 2004 เข้าสู่การเรียนเราดำเนินการสองแทรก
งบ:
แทรกลงในการเรียน
ค่า ('2890', '023', 'cs110', 'ฤดูใบไม้ร่วง', 2004, null) ;
แทรกลงในการเรียน
ค่า ('2890', '056', 'cs240', 'ฤดูใบไม้ร่วง', 94, null);
152 SQL - เชิงภาษา
ไวยากรณ์ของการใส่ชุดทูเปิลที่ได้จากการดำเนินการเรียก
คือ
ใส่ลงในชื่อตาราง [({คอลัมน์คอลัมน์}]
เลือกวลี
ที่นี่วลีเลือกต้องกลับ tuples ของค่าสอดคล้องกับ
โดเมนของคุณลักษณะที่ระบุโดยรายชื่อของคอลัมน์ [({คอลัมน์คอลัมน์}].
ตัวอย่างสมมติว่า 5.21.3 ที่เราตั้งใจจะมีตารางแยกบ่งชี้
ที่ได้รับมอบหมายของอาจารย์ หลังจากที่สร้างเช่นตาราง (เรียกว่ากำหนดและ
มาพร้อมกับคุณลักษณะ empno, CNO, Sem และปี) โดยการเขียน:
สร้าง ASSIGN ตาราง (empno varchar2 (11) ไม่เป็นโมฆะ,
CNO varchar2 (5) ไม่เป็นโมฆะ,
SEM varchar2 (6) ไม่โมฆะ,
ปี smallint)
เราสามารถโหลดตารางนี้โดยใช้ข้อมูลจากการเรียนโดยใช้ตารางที่มีอยู่
สร้าง:
แทรกลงใน ASSIGN (empno, CNO, Sem ปี)
เลือก empno แตกต่าง CNO, Sem ปี
จากการเรียน;
นี้ส่งผลใน ตารางต่อไปนี้:
empno CNO SEM ปี
019 cs110 ฤดูใบไม้ร่วง 2001
019 cs210 ฤดูใบไม้ร่วง 2002
019 cs210 ฤดูใบไม้ผลิ 2003
019 cs240 ฤดูใบไม้ผลิ 2002
023 cs110 ฤดูใบไม้ผลิ 2002
056 cs240 ฤดูใบไม้ผลิ 2003
234 CS310 ฤดูใบไม้ผลิ 2003
234 cs410 ฤดูใบไม้ผลิ 2002
ถ้าองค์ประกอบของ tuple ที่จะแทรกเข้าไป ตารางละเมิด decla-
ปันส่วนของตาราง (เช่นค่า null สำหรับแอตทริบิวต์ null ไม่หรือตัวอักษร
สตริงสำหรับแอตทริบิวต์ตัวเลข) DBMS ควรปฏิเสธการแทรก.
ในทำนองเดียวกันการสร้างลบลบแถวของตาราง.
ตัวอย่าง 5.21.4 การลบแถวของตาราง ASSIGN ที่สอดคล้องกับ
หลักสูตรการสอนโดยอาจารย์ที่มีหมายเลขของพนักงานเป็น '234', เราเขียน:
ลบออกจาก ASSIGN ที่ empno = '234';
สั่ง:
ลบออกจากการเรียนที่คะแนนเป็นโมฆะ ;
ช่วยขจัดแถวที่มีส่วนประกอบเกรดเป็นโมฆะ.
ประโยคที่ของลบจะเป็นตัวเลือก ถ้าข้อนี้ไม่ได้ใช้แล้วทุก
แถวจะถูกลบออก ตัวแปรตารางยังคงมีอยู่.
5.22 สิทธิการเข้าถึง 153
ตัวอย่าง 5.21.5 ลบต่อไปนี้จะช่วยลดทุกแถวของตาราง ASSIGN:
ลบออกจาก ASSIGN;
ไวยากรณ์ของลบคือ
ลบจากชื่อตาราง [WhereCondition]
การแปล กรุณารอสักครู่..

5.21 การปรับปรุงใน SQL มี 3 สร้างใน SQL ที่ช่วยให้เราสามารถปรับปรุงตารางของ
ฐานข้อมูลการปรับปรุงแทรกและลบ .
ปรับปรุงสร้างปรับเปลี่ยนส่วนประกอบของทูเปิล . มันใช้กับทุกคนที่มี
ของตารางระบุยกเว้น จำกัด โดยที่ข้อ 5.21.1 เรียกคืนตาราง emphist
ตัวอย่างแนะนำในตัวอย่าง 3.3.5 .
เป็นสคริปต์เพื่อสร้างตาราง และ เติมได้ในตัวอย่างที่มีอยู่
ในสคริปต์ ced.sql ที่มีอยู่ในภาคผนวก C .
ให้พนักงานปัจจุบันทั้งหมด 10% เพิ่ม เราจะใช้ต่อไปนี้ปรับปรุง
ชุดปรับปรุง emphist วลี : เงินเดือน = 1.1 * เงินเดือน
ที่ term_date เป็นโมฆะ ;
ไวยากรณ์ทั่วไปของ ปรับปรุง : ปรับปรุงตารางชื่อ
[ ]
ชุด RR ชื่อคอลัมน์ = { hexpression | nulli ,คอลัมน์ = hexpression | nulli }
[ ]
wherecondition แทรกสร้างเพิ่มแถวใหม่ในตาราง มันแทรก
แถวเดียว ( ที่มีคอมโพเนนต์ต้องมีการระบุโดยผู้ใช้ ) หรือชุดของแถวที่ก่อเกิดจากการสืบค้นข้อมูลที่เกี่ยวข้องกับตารางอื่น ๆ
.
ไวยากรณ์ของแทรก tuple เดียว :
แทรกตารางชื่อคอลัมน์ [ ( { , คอลัมน์ } ]
hvalues ( expr { , expr } ) | subselecti
ค่าของนิพจน์ที่ระบุไว้ในรายการค่าต้องเป็นสมาชิกของโดเมน
ในคุณลักษณะที่ระบุไว้ในรายการของคอลัมน์ในคำสั่งสำหรับการแทรกใช้
ตัวอย่างผล 5.21.2 แทรกแถวประกอบด้วยทะเบียนประวัติสำหรับสตู -
บุ๋ม 2890 สำหรับภาคฤดูใบไม้ร่วงของปี 2004 เป็นเกรด เราเรียกสอง ใส่ :
งบแทรกออกเป็นเกรด
ค่า ( '2890 ' '023 ' 'cs110 '' ตก ' , 2004 , null ) ;
แทรกออกเป็นเกรด
ค่า ( '2890 ' '056 ' 'cs240 ' 'fall ' 94 , null ) ;
-
152 SQL ภาษาเชิงไวยากรณ์ของการใส่ชุดของทูเปิลได้โดยการดึง
:
แทรกตารางชื่อ { [ ( คอลัมน์ คอลัมน์ } ]
ที่นี่เลือกเลือกวลีวลีต้องย้อนกลับที่มีคุณค่าสอดคล้องกับ
โดเมนของแอตทริบิวต์ที่กำหนดโดยรายการของคอลัมน์ ( คอลัมน์คอลัมน์ } { [ , ] .
5.21.3 ตัวอย่างเช่น สมมติว่า เราตั้งใจจะแยกตารางแสดง
งานของอาจารย์ หลังจากสร้างเป็นตาราง ( เรียกว่ามอบหมายและ
พร้อมกับคุณลักษณะ empno CNO , SEM และปี ) โดยเขียน :
สร้างตารางกำหนด ( empno varchar2 ( 11 ) ไม่ใช่ null
CNO varchar2 ไม่ null
( 5 )SEM varchar2 ( 6 ) ไม่ null ;
ปี smallint ) เราสามารถโหลดตารางนี้ใช้ข้อมูลจากตารางคะแนนที่มีอยู่ใช้
สร้าง : แทรกกำหนด ( empno CNO , SEM , ปี )
เลือก empno ชัดเจน CNO , SEM , ปี
จากเกรด ; ผลลัพธ์ที่ได้ในตาราง ต่อไปนี้ :
empno CNO SEM ปี
cs210 019 019 cs110 ฤดูใบไม้ร่วง 2001 2002 2003 cs210 ตก
cs240 019 019 ฤดูใบไม้ผลิฤดูใบไม้ผลิฤดูใบไม้ผลิ 2002
023 cs110 2002056 cs240 ฤดูใบไม้ผลิ 2003
234 cs310 ฤดูใบไม้ผลิ 2003
234 cs410 ฤดูใบไม้ผลิ 2002
ถ้าส่วนประกอบของทูเปิลจะถูกแทรกลงในตาราง หรือ decla -
ส่วนของตาราง ( เช่นค่า null สำหรับแอตทริบิวต์ที่ไม่ใช่ null หรือตัวละคร
String สำหรับแอตทริบิวต์เลข ) , DBMS จะปฏิเสธ การแทรก .
อนึ่ง ลบสร้างลบแถวของตาราง .
ตัวอย่าง 5.21 .4 ลบแถวของตารางกำหนดที่สอดคล้องกับหลักสูตรสอนโดยผู้สอน
ที่มีพนักงานจำนวนมาก ' เรา ' เราเขียน :
ลบจากกำหนดที่ empno 234 = ' ' ;
:
ลบคำสั่งจากคะแนนที่เกรดเป็น null ;
ลดแถวที่มีส่วนประกอบเกรดเป็น null .
ซึ่งเป็นทางเลือกของลบประโยค ถ้าประโยคนี้ไม่ได้ใช้แล้ว
แถวทั้งหมดจะถูกลบออกตัวแปรตารางที่ยังคงมีอยู่ สิทธิการเข้าถึง 153
5.22 ตัวอย่าง 5.21.5 ต่อไปนี้ลบขจัดแถวของตารางกำหนด :
ลบจากมอบหมาย ;
ไวยากรณ์ของลบ : ลบจากตารางชื่อ wherecondition
[ ]
การแปล กรุณารอสักครู่..
