zoukankan      html  css  js  c++  java
  • 数据库之数据更新

    数据更新有三种操作:增、删、改;下面对此做一些总结。


    1、插入数据

    1.1 插入元组

    插入元组的格式是:

    insert

    into <表名>[(<属性列1>,<属性列2>...)]

    values(<常量1>,<常量2>.....);

    例如,将一个新学生元组插入到student表中,信息是(学号:200212,姓名:张飞,性别:男,系别:CS,年龄:20)

    代码为:

    insert

    into student(Sno,Sname,Ssex,Sdept,Sage)

    values('200212','张飞',’男‘,’CS‘,20);

    如果没有指出属性名,则表示新元组要在表的所有属性列上都指定值,并且,属性列的次序与create table中的次序相同。例如,如果一个student表创建时的属性次序就是Sno,Sname,Ssex,Sdept,Sage形式的,那么上句可以简化为:

    insert

    into student

    values('200212','张飞',’男‘,’CS‘,20);

    1.2 插入子查询结果

    子查询可以嵌套在insert语句中,用以生成要插入的批量数据。插入子查询的insert语句的格式为:

    insert

    into <表名>[(<属性列1>,<属性列2>...)]

    子查询;

    例如,对于每一个系别,求学生的平均年龄,并将结果放入到数据库中,代码如下:

    首先,可以创建一个新表,用以存放系别和平均年龄:

    create table Dept_age(

    Sdept char(5),

    Avg_age smallint);

    其次,对student表按系别分组求平均年龄,再将系别和平均年龄放到新表中:

    insert

    into Dept_age(Sdept,Avg_age)

    select Sdept,AVG(age)

    from student group by Sdept;//注意分组条件是Sdept


    2 修改数据

    修改数据也即是更新操作,语句一般格式是:

    update <表名>

    set <列名>=<表达式>[,<列名>=<表达式>]...

    [where <条件>];

    例如,将学号为200212的学生年龄设置为22:

    update student

    set age=22

    where Sno='200212';

    修改语句也可以带有子查询,例如:将计算机系全体同学的成绩设置为0:

    update sc

    set grade=0

    where 'CS'=(select Sdept from student where sc.Sno=student.Sno);


    3 删除数据

    删除数据的一般格式是:

    delete

    from <表名>

    [where <条件>];

    例如,删除所有的学生的选课记录:

    delete from SC;//此时,SC成为空表,它删除了SC的所有元组

    同样,删除语句也可以带有嵌套查询语句,例如,删除计算机系所有学生的选课记录:

    delete from SC

    where 'CS'=(select Sdept from student where student.Sno=SC.Sno);

    以上是数据更新的总结...

  • 相关阅读:
    [原创]桓泽学音频编解码(13):AC3 位分配模块算法分析
    白话红黑树系列之一——初识红黑树
    白话红黑树系列之二——红黑树的构建
    数据驱动编程之表驱动法
    每周一算法之六——KMP字符串匹配算法
    HDOJ 1098 Ignatius's puzzle
    HDOJ 1097 A hard puzzle(循环问题)
    HDOJ 1019 Least Common Multiple(最小公倍数问题)
    辗转相除法_欧几里得算法_java的实现(求最大公约数)
    HDOJ 1020 Encoding
  • 原文地址:https://www.cnblogs.com/codeMedita/p/7620245.html
Copyright © 2011-2022 走看看