##DML_数据库修改语句(DML)
###Delete语句
每次删除都删除一行的所有属性值(一次删一行)而不能只删掉某些属性
语法:
delete from r
where p;
将满足“使条件p为真”的元组从r表中删除
重点在于where的子查询,跟前面的查询语句十分相似
将一个表的所有元组全部删除:
delete from r;
(一次删除一行)
###insert into 插入语句
####形式1:
语法:
insert into R_name
values(atttr1_value,attr2_value,……);
或者:
insert into R_name(attr1_name,attr2_name,……)
values(attr1_value,attr2_value,……);
推荐第二种写法,因为DBMS有自己的一套插入步骤,虽然默认的元组顺序是建表的时候的顺序,但是有时候会出错,因此建议写表的完整形式。
(一次插入一行)
insert 的时候要注意属性的数据类型,比如如果是字符型就要加’'号
####形式2:
insert into R_name
select attr1_name,attr2_name,……
from R2_name
where p;
将表R2的一些元组插入表R(一次插入多行)
可以将某一些属性的值设置为某个值,比如:将薪资全部设置为18000,只需要将select语句的salary属性改为18000即可
###update 更新语句
语法:
update R_name
set attr_name=(operation)
where P;
注意:不能使用复合的运算符,比如salary=salary*0.15不能写成salary=0.15,跟编程语言稍有不同*
set一次可以更新多个属性,不过set后面的属性数量跟=号后面的属性数量必须相同
如:set tot_cred,course_id=(select tot_cred,course_id from relation2)
####在set字句中加上case语句,分条件更新 (很多DBMS都不支持)
###高级SQL特性
####以一张现有的表的结构建一张新表:
create table temp_account like account