• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

SQL入门:插入数据

发布: 2007-6-21 12:06 | 作者:   | 来源:   | 查看: 16次 | 进入软件测试论坛讨论

领测软件测试网

   
  当创建新表时,新表不包含任何数据。要将新的行输入表中,使用 INSERT 语句。此语句有两种一般格式:
  
  
  一种格式,使用 VALUES 子句来指定一行或多行的列值。下面三个示例使用此一般格式将数据插入表中。
  

  另一种格式,指定全查询而非指定 VALUES 来标识来自包含在其他表和/或视图中的行的列。
  全查询是 INSERT 或 CREATE VIEW 语句中所使用的选择语句、或者是跟在谓词后面的选择语句。括在括号中的全查询一般称为子查询。
  
  根据创建表时已选择的缺省选项,对于每个插入的行,为每一列提供一个值或者接受一个缺省值。各种数据类型的缺省值在 SQL Reference 中讨论。
  
  下列语句使用 VALUES 子句将一行数据插入 PERS 表中:
  
   
   INSERT INTO PERS
    VALUES (12, 'Harris', 20, 'Sales', 5, 18000, 1000, '1950-1-1')
  
  
  下列语句使用 VALUES 子句将三行插入其中只有 ID、名称以及工作是已知的 PERS 表中。如果列定义为 NOT NULL 且没有缺省值,则必须为该列指定一个值。 CREATE TABLE 语句中的列定义上的 NOT NULL 子句可以用单词 WITH DEFAULT 扩充。如果某一列定义为 NOT NULL WITH DEFAULT 或常数缺省值(如 WITH DEFAULT 10),并且您未在列列表中指定该列,则缺省值插入至已插入行的该列中。例如,在 CREATE TABLE 语句中,仅为 DEPT 列指定了缺省值并将该值定义为 10。因此,DEPT 设置为 10 而所有其他列都为空。
  
  
   INSERT INTO PERS (NAME, JOB, ID)
    VALUES ('Swagerman', 'Prgmr', 500),
        ('Limoges', 'Prgmr', 510),
        ('Li', 'Prgmr', 520)
  
  下列语句返回插入的结果:
  
   SELECT *
    FROM PERS
   SQL入门:插入数据(图一)
  注意:在此情况下,并未给每个列指定值。空值显示为 -。为此,列名列表的次序和数据类型都必须与 VALUES 子句中提供的值对应。如果省略列名列表(如第一个示例中那样),则 VALUES 之后的数据值列表的次序必须与它们所插入至的表中的列次序相同,值的数目必须等于表中列的数目。
  
  每个值必须与它所插入至的列的数据类型相容。如果某列定义为可空,且未指定该列的值,则将空值赋给插入行中的该列。
  
  下列示例将空值插入 YEARS、COMM 和 BIRTH_DATE 中,因为未给行中的那些列指定值。
  
   INSERT INTO PERS (ID, NAME, JOB, DEPT, SALARY)
    VALUES (410, 'Perna', 'Sales', 20, 20000)
  
  INSERT 语句的第二种格式对于用来自另一表中行的值填充表非常方便。如所述的那样,指定全查询而非指定 VALUES 以标识来自包含在其他表和/或视图中的行中的列。
  
  下列示例从员工 STAFF 表中选择部门 38 的成员的数据,并将它插入 PERS 表中:
  
   
   INSERT INTO PERS (ID, NAME, DEPT, JOB, YEARS, SALARY)
    SELECT ID, NAME, DEPT, JOB, YEARS, SALARY
      FROM STAFF
      WHERE DEPT = 38
  
  在此插入之后,下列 SELECT 语句与 INSERT 语句中全查询产生的结果相同。
  
   SELECT ID, NAME, DEPT, JOB, YEARS, SALARY
    FROM PERS
    WHERE DEPT = 38
  
  
  结果为:
  SQL入门:插入数据(图二)

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网