关系数据库标准语言sql

上传人:mg****85 文档编号:55751520 上传时间:2018-10-05 格式:PPT 页数:25 大小:122.50KB
返回 下载 相关 举报
关系数据库标准语言sql_第1页
第1页 / 共25页
关系数据库标准语言sql_第2页
第2页 / 共25页
关系数据库标准语言sql_第3页
第3页 / 共25页
关系数据库标准语言sql_第4页
第4页 / 共25页
关系数据库标准语言sql_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《关系数据库标准语言sql》由会员分享,可在线阅读,更多相关《关系数据库标准语言sql(25页珍藏版)》请在金锄头文库上搜索。

1、10.6 关系数据库标准语言 SQL,本节内容,SQL概述 数据定义 数据查询 数据操纵,SQL概述,SQL是结构化查询语言Structured Query Language的缩写。可以说查询是SQL语言的重要组成部分,但不是全部,SQL还包括数据定义、数据操纵和数据控制功能等部分。SQL已成为关系数据库的标准数据语言,所以现在的关系数据库管理系统都支持SQL。 SQL的特点: (1)一体化。集数据定义、数据查询、数据操纵、数据控制于一体。 (2)高度非过程化。只需告诉计算机做什么(what),无需告诉计算机怎么做(how)。 (3)功能强大,简捷易用。 (4)提供两种使用方式:命令方式和嵌入

2、方式。,SQL命令动词,表结构,表数据,create,alter,drop,select,insert,update,delete,创建,修改,删除,增加,更新,删除,查询,10.6表结构定义(数据定义),SQL语言的数据定义功能包括表结构的增、删、改。 内容: 用create table 表名()创建一个表的结构; 用drop table 表名删除一个表(结构及数据); 用alter table 表名 add|drop|alter修改表的结构。,10.6.1 定义表的结构 考查一下表的结构,它由如下两部分组成:字段定义(字段名,类型,宽度,精度,索引,空值否)主关键字和外部关键字 1、cre

3、ate table 语句基本结构create table 表名(字段名1 类型(宽度,精度)NULL|NOT NULL,字段名2 类型(宽度,精度)NULL|NOT NULL ) 例1:建立仓库表create table 仓库(仓库号 CHAR(3) NOT NULL,城市 CHAR(10),面积 INTEGER),(2)当主关键字或外部关键字是单个属性时更为简捷的方法是直接在该字段的定义后加上primary key或references 表名。 建立班级表时加入主键:例1 create table 班级 (班级代码 integer not null primary KEY,名称 char(1

4、2),班长 char(8),电话 CHAR(12) 建立学生表时加入主键: 例2 create table 学生 (学号 char(12) not null primary key,姓名 char(8),性别 char(2),籍贯 char(8),班级代码 integer,计算机 integer,外语 integer,数学 integer,平均成绩 integer,总成绩 integer),10.6.2 删除数据库中的表drop table 表名功能是直接从数据库中删除表名所对应的表。 例:删除学生表 例3: drop table 学生 10.6.3 修改表的结构alter table 表名

5、add|drop|alter,其中add、drop、alter分别表示增、删、改。 1、增加新字段 例4 : alter table 学生 add 评语 char(10) 2、删除字段 例5 : alter table 学生 drop 评语,3、 修改旧字段alter table 表名 alter column 字段名 类型(宽度,精度)NULL|NOT NULL set default 表达式set checkdrop defaultdrop check 将计算机字段的类型改为字符型 例6: Alter table 学生 alter 计算机 char(10),10.7 数据操纵,INSERT

6、数据的插入 UPDATE数据的更新(修改) DELETE数据的删除,10.7.1 插入记录 格式:insert into 表名(字段名1,字段名2,) values(表达式1,表达式2,) 功能:在指定表中增加一条新记录。 例7:在班级表中增加一条记录。,INSERT INTO 班级表 ( 班级代码, 名称, 班长, 电话 ) VALUES (1, “企业管理”, “刘平“, “7668000“),例8:在仓库表中增加一条记录。,insert into 仓库表 values(“WH5“,“太原“,380) 例9:在学生表中增加记录 insert into 学生表 (学号,姓名,性别) valu

7、es(“200801011110“,“李平“,“女“) 注意当前记录其它未插入数据的字段处为空。,10.7.2 更新记录格式:update 表名set 字段名1=表达式1,字段名2=表达式2where 条件 功能:更新满足条件记录的字段值。 例10:给WH1仓库中的全体职工工资上调10%update 职工 set 工资=工资*1.1 where 仓库号=“WH1” 例11:求所有学生的平均成绩和总成绩。update 学生 set 平均成绩=(数学+外语+计算机)/3,总成绩=数学+外语+计算机 例12:在仓库表中将所有城市名前加上“中国”两字。update 仓库 set 城市=“中国”+tri

8、m(城市),10.7.3 删除记录格式: delete from 表名 where 条件 功能:删除表中满足条件的记录。 例13:删除职工表中仓库号值为WH2的元组。delete from 职工 where 仓库号=“WH2” 例14:删除仓库表中仓库号值为WH2的元组。delete from 仓库 where 仓库号=“WH2”,10.8 数据查询select,查询(select语句)是SQL的核心。 基本格式:SELECT 目标列表达式 输出项列表FROM 源表或视图列表 数据来源WHERE 查询条件,投影,联接,选择,10.8.1 目标列表达式 1、查询指定列(投影运算)在大多数情况下,

9、用户只对表中的部分字段感兴趣,此时可在SELECT子句的目标列表达式中指定要查询的属性。 例15:查询全体职工的职工号和工资select 职工号,工资 from 职工 注意:目标列表达式中的字段顺序应和题意要求一致,而不受表中字段顺序的影响。 2、去掉重复行 例16:从职工表中检索所有工资值select distinct 工资 from 职工,由于有些职工的工资是相同的,输出结果中可能有重复行,此时,可在目标列表达式前加distinct短语以去掉重复。即: 例17: select distinct 工资 from 职工 3、查询全部列要将表中所有属性列列出,一种方法是在SELECT后列出所有列

10、名,另一种更为简单,将目标列表达式用*代替。 例18:检索仓库关系中的所有信息select * from 仓库 例19:查询仓库“WH2”中所有职工的所有基本情况。select * from 职工 where 仓库号=“WH2” 4、查询经过计算的值SELECT子句的目标列表达式不仅可以是表中的属性列,还可以是含有各种运算及函数的表达式。,集函数(字段函数)在SELECT语句中可使用的函数:count(),sum(),avg(),max(),min(),分别用于计数、求和、求平均值、求最大值和求最小值。它们的参数均可以为一个特定的列名,列名前可加distinct短语以去掉重复。另外count(

11、*)用于统计记录数。 例20:求仓库WH1每月支付的工资总数。select sum(工资) from 职工 where 仓库号=“WH1” 例21:求仓库WH1中职工的最高工资和最低工资。select max(工资),min(工资) from 职工 where 仓库号=“WH1”,例8:查询工资在12001500之间的职工及其所属仓库。 Select 职工号,仓库号 from 职工 where 工资 between 1200 and 1500 (闭区间) 例22:查询地处太原、北京、上海的所有供应商。select 供应商号,供应商名 from 供应商 where 地址 in (“太原”,“北京

12、”,“上海”) 例23:查询不在北京、上海的所有仓库的仓库号及面积。select 仓库号,面积 from 仓库 where 城市 not in (“北京”,“上海”) 例24: 查询城市名以”北”开头的城市 select 仓库号,城市,面积 from 仓库表 where 城市 like(“北*“),例25: 闭区间上查询 select 仓库号,城市,面积 from 仓库表 where 面积 between 390 and 500 例26 查询面积在300平米以上,500平米以下(不包括500平米)的仓库信息。select * from 仓库 where 面积=300 and 面积=2havin

13、g短语总是跟在group by 子句之后,不可单独使用。Where子句和having短语的区别在于作用对象不同。Where子句作用于基本表或视图,从中选择满足条件的元组;而having短语作用于组,从中选择满足条件的组。,联接查询在查询的数据涉及到多个表时,必须用联接条件将这些表联接起来。 例30:找出工资多于1230元的职工号和他们所在的城市。分析:职工号来源于职工表,城市来源于仓库表,所以应在FROM后列出涉及到的表,在WHERE后加上联接条件。select 职工号,城市 from 职工,仓库;where 职工.仓库号=仓库.仓库号 and 工资1230外部关键字 联接条件 主关键字,例3

14、1:职工号来源于职工表,城市来源于仓库表,二表通过同名字段仓库号联接。 select 职工号,城市,面积 from 职工表,仓库表 where 职工表.仓库号=仓库表.仓库号 and 面积400例32 select 职工号,城市,工资 from 职工表,仓库表 where 职工表.仓库号=仓库表.仓库号 and 工资1230,嵌套查询一个select-from-where称为一个查询块,将一个查询块嵌套在另一个查询块的where(或having)子句条件中的查询称为嵌套查询。 例33: 哪些城市至少有一个仓库的职工的工资为1250元?select 城市 from 仓库 where 仓库号 in (select 仓库号 from 职工 where 工资=1250)例34:找出和职工E4薪水相同的所有职工 SELECT 职工表.职工号 FROM 职工表 WHERE 职工表.工资=(select 工资 from 职工表 where 职工号=“E4“);,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号