

免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 sql语言基础,2.1 sql语言基本知识 2.2 数据定义命令 2.3 数据查询语言 2.4 数据操纵命令,主要内容,介绍sql语言的历史、特点及基本命令的使用方法。,2.1.1 sql的发展史 1974年ibm圣约瑟实验室的boyce和chamberlin为关系数据库管理系统system-r设计的一种查询语言,当时称为sequel语言(structured english query language),后简称为sql。 1981年ibm推出关系数据库系统sql/ds后,sql得到了广泛应用。 1986年美国国家标准协会(ansi)公布了第一个sql标准sql86。 1987年,iso通过sql86标准。,2.1 sql语言基本知识,1989年,iso制定sql89标准,sql89标准在sql86基础上增补了完整性描述。 1990年,我国制定等同sql89的国家标准。 1992年,iso制定sql92标准,即sql2。 1999年,ansi制定sql3标准。 在许多软件产品中,软件厂商都对sql的基本命令集进行了扩充,将其扩展成嵌入式sql语言。sql server 2000中使用transact-sql语言与数据库服务器打交道。,2.1.2 sql的特点 1sql(structured query language)全称是结构化查询语言,是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能。功能强大、能够完成各种数据库操作。 2sql语言不是一个应用程序开发语言,它只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能。 3有利于各种数据库之间交换数据、有利于程序的移植、有利于实现程序和数据间的独立性;有利于实施标准化; 4书写简单、易学易用。,2.1.3 sql的分类 1、数据定义语言(ddl:data definition language) 创建、修改或删除数据库中各种对象,包括表、视图、索引等。 2、查询语言(ql:query language) 按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据。 3 、数据操纵语言 (dml:data manipulation language ) 对已经存在的数据库进行记录的插入、删除、修改等操作,4、数据控制语言(dcl:data control language) 用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视 注意:在书写各种sql 命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。,数据定义命令用于建立数据库和建立、修改、删除基本表。 2.2.1 建立数据库 create database ; 例如建立学费管理数据库的命令是: create database xfgl;,2.2 数据定义命令,2.2.2 建立数据表 建立基本表的命令格式为: create table (not null, not null,); 其中:not null指的是该列的值不能为空值。 例1:建立学生基本情况表的命令是: create table jbqk(number char(8)not null, name char(8)not null,sex char(2)not null, birthday datetime,department char(12);,sql server 2000中常用的数据类型: int或integer:整数,占用4个字节 decimal或numeric:数字数据类型,格式decimal(数据长度,小数位数) float 和 real:浮点数,float更灵活一些 datetime:代表日期和一天内的时间的日期和时间数据类型。从1753年1月1日到9999年12月31日的日期和时间数据,如:1998-01-01 23:59:59.993 char:固定长度字符数据类型:格式:char(n) n 必须是一个介于 1 和 8,000 之间的数值,当使用字符型数据时需要用或”括起来。,建立课程表的命令是: create table course(c_number char(4)not null, c_name char(20)not null,period decimal(3,0), t_number char(4) not null); 建立教师表(teacher)的命令是:: create table teacher(t_number char(4) not null,t_name char(8),title char(10); 建立选课表(sle_course)的命令是:: create table sle_course(number char(8) not null,c_number char(4),score decimal(3,0);,2.2.3 数据表的修改 1添加新列命令: alter table add 列名 数据类型; 例2:下面命令在jbqk表中添加“score”列。 alter table jbqk add score decimal(3,0); 2删除表中的列 alter table drop column 列名; 例3:下面命令在jbqk表中添加“成绩”列之后,再删除“score”列。 alter table jbqk add 成绩 decimal(3,0); alter table jbqk drop column score;,2.2.4 数据表的删除 drop table ; 例4:删除刚才所建的jbqk表,使用如下命令格式: drop table jbqk;,2.2.5 索引的建立与删除 索引是对数据库表中一个或多个列的值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。 1建立索引语句 create unique index 索引名 on 基本表名(列名次序,列名次序); 说明:索引可以建立在一列和多列之上,索引顺序可以是asc(升序)或desc(降序),缺省值是升序。unique表示每一个索引值对应唯一的数据记录。,例5:在学生基本情况表jbqk之上建立一个关于学生表的索引文件。索引文件名为“学生索引”,索引建立在学号之上,按学号降序排序。 create index 学生索引 on jbqk(name desc); 2删除索引语句 drop index .; 注意:该命令不能删除由create table或者alter table命令创建的主键和唯一性约束索引,也不能删除系统表中的索引。 例6:删除例5创建的索引“学生索引”。程序如下: drop index jbqk.学生索引,2.3 数据查询语言,2.3.1 查询语句格式 sql语言的查询语句一般格式是: select all|distinct, from , where group by having order by asc|desc; 下面对该命令进行一些说明:,投影(列选择),选择(行),1命令含义 从from子句指定基本表或视图中,根据where子句的条件表达式查找出满足该条件的记录,按照select子句指定的目标列表达式,选出元组中的属性值形成结果表。如果有group by子句,则将结果按“列名1”的值进行分组,该属性列值相等的元组为一个组;如果group by子句带有短语having,则只有满足短语指定条件的分组才会输出。如果有order by子句,则结果表要按照的值进行升序和降序排列。 select all|distinct实现的是对表的投影操作,where 中实现的是选择操作。,2目标列表达式 列表达式可以是“列名1,列名2”的形式;如果from子句指定了多个表,则列名应是“表名.列名”的形式。 列表达式可以使用sql提供的库函数形成表达式,常用的函数如下: count(*):统计记录条数。 count(列名):统计一列值得个数。 sum(列名):计算某一数值型列的值的总和。 avg(列名):计算某一数值型列的值的平均值 max(列名):计算某一数值型列的值的最大值 min(列名):计算某一数值型列的值的最小值 distinct参数:表示在结果集中,查询出的内容相同的记录只留下一条。,2.3.2 单表查询 单表查询是指仅设计一个表的查询。 1选择表中的列 例1:选择jbqk表中的所有列。 select * from jbqk; 例2:选择jbqk表中的number、name、department列。 select number,name,department from jbqk; 例3:选择jbqk中所有各个系的名字,去掉重复行。 select distinct department from jbqk; select 2003-year(birthday) from jbqk,2选择表中的记录 选择表中的记录是通过where子句实现的。 例4:选择jbqk中所有计算机系的学生。 select * from jbqk where department=计算机系 3条件表达式的构成,例5:查询考试成绩不及格学生的学号。 select distinct number from sle_course where score 60; 例6:查询学时在6070之间的课程名称和学时。 select c_name,period from course where period between 60 and 70 例7:查询学时不在在6070之间的课程名称和学时。 select c_name,period from course where period not between 60 and 70;,例8:假设当前的系统年份为2002,查询计算机系、电子系学生的学号、姓名、年龄。 select number,name,2002-year(birthday) from jbqk where department in(计算机系,电子系); 例9:查询所有姓“王”的学生信息。 select * from jbqk where name like 王%; 此例中,使用了谓词like。在使用时,应注意下面几点: like前的列名必须是字符串类型。 可以使用通配符:_(下划线)表示任一单个字符;%(百分号)表示任意长度字符。,4查询中集函数的使用 说明:distinct:取消列中的重复值 all:为默认状态,表示不取消重复值。,例10:查询学生总人数。 select count(*) from jbqk; 例11:计算0052201学生的平均成绩。 select avg(score) from jbqk where number = 0052201;,5查询结果的分组与排序 group by子句将查询结果表按某一列或多列值分组,值相等的为一组。分组的目的是为了将集函数的作用对象细化,分组后集函数将作用在每一个组上,也就是说每个组都有一个函数值。 例12:查询选修了2门以上课程的学生学号,并且查询结果按照升序排列。 select number from sle_course group by number having count(*) 2 order by number asc; where与having的区别在于作用的对象不同。where子句作用于基本表或视图,从中选择满足条件的记录;having短语作用于分组,从中选出满足条件的组。,2.3.3 多表查询 例13:查询所有选修课程的学生信息,包括所学的课程名、授课教师和成绩。 select jbqk.number,,course.c_name,sle_course.score,teacher.t_name from jbqk,course,sle_course,teacher where jbqk.number=sle_course.number and sle_course.c_number=course.c_number and course.t_number=teacher.t_number,2.3.4 嵌套查询 在sql语言中,一个selectfromwhere语句成为一个查询块。将一个查询块嵌套在另一个查询块的where子句(或having短语)的条件中的查询称为嵌套查询。处于内层的查询称为子查询。嵌套查询命令在执行时,每个子查询在上一级查询处理之前求解,即由里向外查。,例14:查询选修了“数据库技术”课程的学生姓名。 select from jbqk where jbqk. number in( select sle_course.number from sle_course where sle_course.c_number in ( select course.c_number from course where course.c_name=数据库技术);,在一些嵌套查询中where之后可以使用any和all这两个谓词,any表示子查询结果中的某个值,而all表示子查询结果中的所有值。,例15:查询所有课程成绩在95分以上的学生的学号、姓名。 select number,name from jbqk where number=any( select number from sle_course where score=95),2.4 数据操纵语言,2.4.1 插入数据 insert into ( , , ) values ( , , , ) 例1:向学生基本情况表(jbqk)中插入一条记录。 insert int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 污水装置安装合同协议书
- 父母商铺过户协议书模板
- 物业与业主协议合同范本
- 消防维保终止合同协议书
- 股权回收合同协议书范本
- 闲置玻璃钢改造合同范本
- 申请廉租房劳务合同范本
- 浙江商会合作合同协议书
- 物流运输调车协议书范本
- 游乐场地板采购合同协议
- 2024华中科技大学辅导员招聘笔试真题
- 食堂从业人员食品安全知识考试题及答案
- 2024年中国烟草招聘历年面试真题部分含答案解析
- 2025即时零售全时段消费新场景趋势洞察
- 2025年浙江6月高考地理真题(原卷版)
- 2025至2030年中国全大麻行业投资前景及策略咨询报告
- 2025年短视频项目可行性研究报告
- 2025年电力工程师职称考试试卷及答案
- 建筑施工脚手架安全技术统一标准
- 鞍钢劳研考试题库及答案
- 2025年金融衍生品市场创新与风险防范策略在金融风险管理领域的应用与挑战报告
评论
0/150
提交评论