文档详情

第03章SQL语言基础.ppt

发布:2017-06-03约1.31万字共70页下载文档
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 如何提高select语句的效率 使用exists关键字检查结果集:不要用count(*)来检查结果集中是否包含行。 使用标准联接代替嵌套查询:在执行嵌套查询时,SQL Server将先执行内部的子查询,然后将查询结果返回给外部查询作为检索的数据源,最后执行外部的主查询。而在执行包含标准联接的查询时,SQL Server将要执行的仅仅是一个查询。 有效避免整表扫描:使用索引; 除了缺失索引外,可能导致整表扫描的另外一种常见的情况是在like子句的匹配条件的开始使用了%。若在like子句的匹配条件的开始使用了%,那么包含这个like分句的查询将会调用完整表扫描。 * * 数据插入 格式1:INSERT INTO 表名 [( 列名1 [,列名2…] ) ] VALUES (值1 [,值2 …]) ; insert语句把values后给出的各值按排列顺序依次赋到表名后列出的各列。每次只能插入一条记录。 例:INSERT INTO student VALUES(95006, ‘张三’, ‘男’, 21,‘cs’); 例:insert into student(sname,sno,sdept) values(‘章小山’, 96008, ‘IS’); ---在student中添加一条记录,其中列ssex,sage为空(null)。 若表名后不列出列名,则等价于列出了全部列名,必须在values后给出全部列值,并按创建表时的列定义顺序,把这些值赋入相应列中。若某些列暂时没有值,则给出null, * * 格式2: INSERT INTO 表名 [( 列名1 [,列名2…] ) ] Select 语句; 把select语句查询的结果按顺序插入到对应的列中。允许一次插入多条记录。 Select查得的各列值必须与表名后的各列名在个数、类型及顺序上一致。 若表名后没有(列名),则对该表的所有字段插入。 create table student2(sno char(6) not null, sname varchar(20), birthdate date, sdept char(2), phone varchar(15)); Insert into student2(sno, sname, sdept, birthdate) select sno, sname, sdept, 2001-sage from student; * * 格式:UPDATE 表名 SET 列名1=表达式1 [, 列名2=表达式2 …] [WHERE 条件]; Where后的条件与查询语句中的where条件语法和作用相同。 该语句将指定表中符合WHERE 条件的行中的指定列赋新值。若没有where,则对整个表修改。 该语句一次可以更新一列或多列;更新一行或多行(由where的选择条件决定)。 数据修改 * * 例:将95001学生转入MA系 Update Student Set sdept = ‘MA’ Where sno = ‘95001’ 例:所有学生年龄加1 Update Student Set sage = sage + 1 数据修改 * * 删除数据 DELETE [FROM] {table_name | view_name} [WHERE 子句] 删除表中符合选择条件的行(一行或多行)。 若无where部分,则删除整个表中全部数据,但表结构仍存在,即成为空表。 delete只能整行删除,不能只删一行的部分。 * * 删除单个元组 例:删除学号为95001的学生的选课信息 Delete From SC Where sno = ‘95001’ 删除多个元组 例:删除选课而未参加考试的学生的选课信息 Delete From SC Where grade is null 删除整个关系中的所有数据 例:删除所有学生的选课信息 Delete From SC * * 注意: 数据更新语句只能对单表操作,不能同时对多表更新。(从而引起阶段性的数据不一致性) 数据更新语句仅当事务(transaction)提交(commit)后才正式生效。也可通过事务回滚(rollback)来作废。 * * * * * * * * * * * * * * * * * * * * * * * * * * 使用[]来将通配符指定为普通字符。 例如: Select * from objec
显示全部
相似文档