280 likes | 446 Views
第五章 结构化查询语言 SQL. 第五章 结构化查询语言 SQL. 5.1 数据定义. 5.2 数据查询. 5.3 数据操纵. SQL 语言概述. SQL ( Structured Query Language- 结构化查询语言 ). 学生表. 数据定义 数据查询 数据操纵. SQL 语言特点. 1. 几乎所有的关系数据库管理系统都支持 SQL 语言 , SQL 是数据库的标准语言。 2.SQL 语言的大多数语句都独立执行,与上下文无关。 3.SQL 语言功能极强,但却非常简洁。. 5.1 数据定义. 5.1.1 表的定义.
E N D
第五章 结构化查询语言SQL
第五章 结构化查询语言SQL 5.1数据定义 5.2数据查询 5.3 数据操纵
SQL语言概述 SQL(Structured Query Language- 结构化查询语言) 学生表 数据定义 数据查询 数据操纵
SQL语言特点 1.几乎所有的关系数据库管理系统都支持SQL语言 ,SQL是数据库的标准语言。 2.SQL语言的大多数语句都独立执行,与上下文无关。 3.SQL语言功能极强,但却非常简洁。
5.1 数据定义 5.1.1表的定义 5.1.2 表结构的修改 5.1.3 表的删除
5.1.1表的定义 格式: Create table <表名> (字段名1 类型(长度),…….) [例1] :创建一个数据表,其表名为 “XS”字段定义为: 学号(C,6)姓名(C,6) 年龄(N,2),出生日期(D,8),贷款否(L,1)
命令为: CREA TABL XS(学号 C(6), 姓名 C(6), 年龄 N(2),出生日期 D(8),贷款否 L(1) ) 课堂练习: 创建一个数据表,其表名为 “教师”,字段定义为: 编号(N,2) 姓名(C,6) ,工资(N,6,2),照片(G,4) 答案: CREA TABL 教师(编号 N(2),姓名 C(6),工资 N(6,2), 照片 G(4) )
5.1.2修改表结构 用SQL语句修改表结构,无须用Use 命令打开表。 1.修改表的类型或长度. 格式: Alter table <表名> alter <字段名> 类型(长度) [例2]:将XS表的学号字段改为数值型,2个长度,姓名长度改为 8。 命令为: alter table xs alter 学号 N(2) ALTER 姓名 C(8)
格式: Alter table <表名> drop <字段1> [drop <字段2>….] 2.删除字段 [例3]:删除XS表的年龄和贷款否两个字段。 命令: alter table xs drop 年龄 drop 贷款否
3.增加字段 格式 Alter table <表名> add <字段名1> 类型(长度) [add <字段名2> 类型(长度)…..] [例4] 为XS表增加年龄(N,2)和贷款否(L,1) 命令: alter table xs add 年龄 N(2) ADD 贷款否 L(1)
5.1.3表的删除 格式为: DROP TABLE 表名 [例5] 删除XS表. 命令: Drop table xs
5.2数据查询 5.2.1查询命令 5.2.2基本查询 5.2.3排序查询 5.2.4计算与分组查询 5.2.5带特殊运算符的条件查询 5.2.6多表查询 5.2.7联接查询 5.2.8嵌套查询 5.2.9查询输出
5.2.2基本查询 格式为: SELE 字段名列表 FROM 数据表名 WHERE 条件 [例1]:查询学生表中所有男生的学号,姓名,出生日期. 命令: SELE 学号, 姓名, 出生日期 FROM 学生 WHERE 性别="男" [例2]:从课程.DBF表中,查询所有课程的信息. 命令: SELE * FROM 课程
课堂练习: 查询出工资大于等于1800的人才的编号,姓名和工资情况. rcda表
5.2.3排序查询 Sele ……from ……where ……order by ……(asc)(desc) [例3]:查询学生表中男学生的学号,姓名,出生日期,按出生日期降序排序. 命令 : SELE 学号,姓名,出生日期 FROM 学生 where 性别=“男”ORDER BY 出生日期 DESC
课堂练习: 查询出工资大于等于1800的人才的编号,姓名和工资情况,并按工资降序排序。 答案: Sele 编号,姓名,工资现状 from rcda where 工资现状>=1800 order by 工资现状 desc
5.2.4计算与分组查询 格式: …… GROUP BY 分组字段 [例4]:查询TEACHER表各教研室月收入的和。 SELE 教研室, SUM(月收入) AS 月收入和 FROM TEACHER GROUP BY 教研室
Select 中进行查询计算的函数: • Count(字段名) 计算记录个数 • Sum(字段名) 求字段名所指定字段值的总和 • Avg(字段名) 求字段名所指定的字段值的平均值 • Max(字段名) 求字段名所指定的字段的最大值 • Min(字段名) 求字段名所指定的字段的最小值
课堂练习: 查询出男、女人才的平均工资。 rcda表
5.2.5带特殊运算符的条件查询 [例5]:查询学生表中计算机系和管理系学生的学号,姓名,系别和贷款情况. 命令: SELE 学号,姓名,系别,贷款否 FROM 学生 WHERE 系别 IN ("计算机","管理")
[例6]:在成绩表中查询成绩良好(75—85)的学生所学课程信息.[例6]:在成绩表中查询成绩良好(75—85)的学生所学课程信息. 命令: SELE 学号,课程号,成绩 FROM 成绩 WHERE 成绩 BETWEEN 75 AND 85 [例7]:查询所有非计算机系的学生的学号,姓名,系别,出生日期. 命令: SELE 学号,姓名,系别,出生日期 FROM 学生 WHERE 系别!= “计算机”
5.2.6 多表查询 [例8]查询每位教师的编号、姓名、教授课程、学生专业及学生人数。 SELE 教师.编号,姓名,教授课程,学生专业,学生人数 from 教师,业务信息 where 教师.编号=业务信息.编号
5.2.9 查询输出 [例9]查询教师表中在2000年以后(不包括2000年)参加工作的教师编号、姓名和工作时间,查询结果按工作时间降序排序,并将查询结果输出到表jsxs.dbf中. SELE 编号,姓名,工作时间 from 教师 where year(工作时间)>2000 order by 工作时间 desc into table jsxs
5.3 数据操纵 5.3.1插入记录 5.3.2更新记录 5.3.3 逻辑删除记录
5.3.1 插入记录 在表的尾部添加一个记录. 格式为: Insert into <表名>(<字段名1>[,字段名2….]) values (<表达式1> [,<表达式2>……..]) [例6]向教师表插入一条新的记录,编号为101013,姓名为晓云,性别为女,年龄为23. 参考答案: INSE INTO 教师(编号,姓名,性别,年龄) VALUE (“101010”,"晓云","女",23)
5.3.2 逻辑删除记录 • 格式为: • Delete from <表名> [where <条件表达式>] • [例7] 将教师表中不是党员的记录加上删除标记. • 参考答案: • dele from 教师 where !党员否
5.3.3 更新记录 格式为: Update <表名> set <字段名1>=<表达式1> [,<字段名2>=<表达式2>….] [where <条件表达式>] [例8]将xsda表中三好学生的成绩加1分. 参考答案: upda xsda set 成绩=成绩+1 WHERE 三好学生=.T.