数据更新操作有种向表中添加数据修改表中的数据和删除表中的数据
用来演示的数据表用studentcoursesc三个数据表数据表具体内容在PHP和MySql数据库如何获取每个分类的记录的总数
插入数据
插入元组(一条数据)
格式为
INSERT INTO <表名>[(<属性列>[<属性列>]…)]
VALUES(<常量>[<常量>]…);
INTO子句中没有出现的属性列新元组将取空值
但表定义说明了NOT NULL属性的列不能取空值否则会出错
INTO子句没有指明任何列名则新元组必须在每个属性上均有值
例子
[sql]
INSERT INTO Student( Sno Sname Ssex Sdept Sage )
VALUES (
陈东 男 IS
)
当插入对应表中所有列的数据时可以省略列名不写
所以插入语句也可以这样写
[sql]
INSERT INTO Student
VALUES (
陈西 男 IS
)
插入多条数据
插入多行数据时与插入一条数据类似不过每一条数据都需要用括号扩起来并用逗号分隔
当插入对应数据表中所有列的数据的时候列名可以省略不写
例子
[sql]
INSERT INTO Student
VALUES (
卡卡西 男 CS
) (
琳 女 CS
) (
带土 男 CS
)
插入子查询结果
子查询可以嵌套在INSERT语句中用以生成要插入的批量数据
格式为
INSERT
INTO <表名> [(<属性列><属性列><属性列>)]
子查询;
例子
要求对每个系求学生的平均成绩并把结果存入数据库中
首先建立数据库
[sql]
CREATE TABLE Dept_age
(Sdept char()Avg_age smallint);
然后对student表按系分组并求每个系的平均年龄再把系名和平均年龄存入新表
[sql]
INSERT INTO dept_age( Sdept Avg_age )
SELECT Sdept AVG( Sage )
FROM Student
GROUP BY Sdept
插入结果
例子
要求统计每个系的人数并把结果存入数据库中
首先建立存放查询结果的数据表
[sql]
CREATE TABLE Sdept_num
(Sdept char()
Snum int);
然后对student表按系分组并求每个系统的总人数再把系名和总人数存入新表
[sql]
INSERT INTO sdept_num( Sdept Snum )
SELECT Sdept COUNT( Sno )
FROM student
GROUP BY Sdept
插入结果
修改数据
修改数据又称为更新操作其语句的一般格式为
UPDATE <表名>
SET <列名>=<表达式>[ <列名>=<表达式>]…
[WHERE <条件>];
修改某一个元组的值
将学生卡卡西的年龄修改为岁
[sql]
UPDATE Student SET Sage = WHERE Sname = 卡卡西
修改多个元组的值
将所有学生的年龄增加岁
[sql]
UPDATE Student SET Sage = Sage +
带子查询的修改语句
子查询也可以嵌套在UPDATE语句中用以构造修改的条件
将计算机科学系全体学生的成绩置零
[sql]
UPDATE SC SET Grade = WHERE EXISTS (
SELECT *
FROM Student
WHERE SCSno = StudentSno
AND StudentSdept = IS
)
删除数据
格式
DELETE
FROM <表名>
[WHERE <条件>];
删除某一个元组的值
删除卡卡西同学的数据
[sql]
DELETE FROM Student WHERE Sname = 卡卡西
删除多个元组的值
删除所有学生的选课记录(也就是说要清空SC表但是不删除)
[sql]
DELETE FROM SC;
清空表是非常危险的操作一定要确定里面的数据没用了在清空
带子查询的删除语句
子查询同样可以嵌套在DELETE语句中用以构造执行删除操作的条件
删除计算机科学系所有学生的选课记录
[sql]
DELETE FROM SC WHERE EXISTS (
SELECT *
FROM Student
WHERE SCSno = StudentSno
AND StudentSdept = IS
)