1 / 26

第 17 讲 SQL 语句简介

第 17 讲 SQL 语句简介. 17.1 SQL 简介 17.2 数据表操作 17.3 添加、删除与修改记录 17.4 查询记录 17.5 在 Java 中用 SQL 语句操作实用举例. 本章要 点. 了解什么是 SQL 语句 了解 SQL 语句关于表的操作 掌握 SQL 语句对于数据表中记录的操作 掌握 SQL 语句的查询命令. 17.1 SQL 简介. 结构化查询语言 (SQL) 是访问数据库的标准语言。通过 SQL 可以完成复杂的数据库操作,而不用考虑如何操作物理数据库的底层细节。

saeran
Download Presentation

第 17 讲 SQL 语句简介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第17讲 SQL语句简介 • 17.1 SQL 简介 • 17.2 数据表操作 • 17.3 添加、删除与修改记录 • 17.4 查询记录 • 17.5 在Java中用SQL语句操作实用举例

  2. 本章要点 • 了解什么是SQL语句 • 了解SQL语句关于表的操作 • 掌握SQL语句对于数据表中记录的操作 • 掌握SQL语句的查询命令

  3. 17.1 SQL 简介 • 结构化查询语言(SQL)是访问数据库的标准语言。通过SQL可以完成复杂的数据库操作,而不用考虑如何操作物理数据库的底层细节。 • ANSI SQL语句按其基本功能可分为两种类型: • 第一种:数据定义语言(DDL) • 数据定义语言提供一系列的命令用以创建数据库对象,如创建、删除表、建立字段及其属性、为表增加索引、创建表与表之间的连接关系等。 • 第二种:数据库操作语言(DML) • SQL数据操作语言用于在表中检索记录、更新记录以及添加或删除记录。

  4. 17.2 数据表操作之一 • 5.2.1 SQL提供的常用数据类型 • SQL语言中提供了大量的数据类型,下面是一些常用的数据类型: • 1.数值型 • INTEGER 长整数(也可写成INT) SMALLINT 短整数 • REAL 取决于机器精度的浮点数 • DOUBLE PRECISION 取决于机器精度的双精度浮点数 • FLOAT(n) 浮点数,精度至少为n位数字 • NUMERIC(p,d) 定点数,由p位数字(不包括符号、小数点)组成, • 小数点后面有d位数字(也可写成DECIMAL(p,d)或DEC(p,d)) • 2.字符串型 • CHAR(n) 长度为n的定长字符串 • VARCHAR(n) 具有最大长度为n的变长字符串 • 3.时间型 • DATE 日期,包含年、月、日,形为YYYY-MM-DD • TIME 时间,包含一日的时、分、秒,形为HH:MM:SS • 4.逻辑型 • LOGICAL 只有真(T)或假(F)的数据项 • SQL允许对以上数据类型的数据进行比较操作,但算术操作只限于数值型。

  5. 17.2 数据表操作之二 • 5.2.2 基本表操作 • 1.创建表 • 基本表的创建可用Create语句来实现: • CREATE TABLE 表名(字段名1 类型,字段名2 类型……) • 例如:创建班级表的具体代码如下: • CREATE TABLE 班级表(班级名称 char(30),人数 integer,班主任 char(10),教室 char(20)) • 2.删除表 • 删除表可使用Drop语句: • DROP TABLE 表名

  6. 17.2 数据表操作之三 • 3.修改表 • 修改表一般是指对字段的添加、删除、修改操作,使用Alter语句。 • 添加: • ALTER TABLE 表名 ADD COLUMN 字段名1 类型(长度),字段名2 类型(长度)…… • 删除: • ALTER TABLE 表名 DROPD COLUMN 字段名 • 修改: • ALTER TABLE 表名 ALTER (字段名1 类型,字段名2 类型……)

  7. 17.2 数据表操作之四 • 例5-1 • 在班级表中添加专业字段。 • alter table 班级表 add column 专业 char(20) • 例5-2 • 将班级表中专业字段的长度改为50。 • alter table 班级表 alter 专业 char(50) • 例5-3 • 删除专业字段。 • alter table 班级表 drop 专业

  8. 17.3 添加、删除与修改记录 • 17.3.1 添加记录 • SQL语言用INSERT语句向表中输入数据。其语法如下: • INSERT INTO 表名字(字段1,字段2,字段3,……) VALUES(数据1,数据2,数据3,……) • 若在输入记录时,每个字段均有内容,可省略表名后的字段名。 • 例17-4 • 在学生表中输入一条记录 “010602006”,“田秀丽”,“8907653”,“450”,“济南市天桥区”,“82-03-23”,“女”,“01电子商务二班” • insert into 学生表 values('010602006','田秀丽', '8907653',450,'济南市天桥区','82-03-23','女','01电子商务二班')

  9. 添加记录注意 • 括号内是输入的数据,各数据项用逗号分隔。 • 字符串和日期值必须用单引号括起来。 • 数值型数据不用括起。 • 数据顺序一定与字段顺序对应。 • 所有标点符号一律在半角状态下输入

  10. 添加记录注意 • 例17-5 • 在学生表中添加记录,“010602007”,“李刚”,“男”,其余字段为空。 • insert into 学生表(学号,姓名,性别) values('010602007','李刚','男') • 括号内是输入的数据,各数据项用逗号分隔。 • 字符串和日期值必须用单引号括起来。 • 数值型数据不用括起。 • 数据顺序一定与字段顺序对应。 • 所有标点符号一律在半角状态下输入

  11. 17.3.2 删除记录 • 删除记录可使用DELETE语句,其语法如下: • DELETE * FROM 表名 WHERE 条件 • 例17-6 • 删除学生表中李刚这条记录。 • cs.Execute "delete * from 学生表 where 姓名='李刚'" • 例17-7 • 删除学生表中所有的女生。 • cs.Execute "delete * from 学生表 where 性别='女'"

  12. 17.3.3 修改记录 • 修改记录可使用UPDATE语句,其语法如下: • UPDATE 表名称 SET 字段1=数据1,字段2=数据2 WHERE 条件 • 例5-8 • 将学生表中所有的家庭住址前加山东省。 • cs.Execute "update 学生表 set 家庭住址='山东省'+家庭住址" • 例5-9 • 将学生表中田秀丽的入学成绩改为530,出生日期改为“83-02-01”。 • cs.Execute "update 学生表 set 入学成绩=530,出生日期='83-02-01' where 姓名='田秀丽'"

  13. 17.4 查询记录 • SELECT查询的完整类型如下: • SELECT 字段1,字段2,字段3……(要显示的字段列表) • FORM 子句 • [WHERE 子句] • [GROUP BY 子句] • [HAVING 子句] • [ORDER BY 子句] • 其中括号内的子句可视需要选用

  14. 17.4.1 字段表的表示 • 在SELECT关键字之后指定字段名称作为查询对象,例如要查询学生表中的学号,则可写为: • SELECT 学号 FORM 学生表 • 若要将查询范围扩大到整个数据表,则可以使用通配符“*”取代字段名称。如: • SELECT * FROM 学生表 • 表示取出学生表中的所有记录。 • 若字段列表中要取出多个字段,各字段间用逗号隔开,如: • SELECT 学号,姓名,入学成绩 FROM 学生表

  15. 17.4.2 条件子句 WHERE • 在SELECT查询语句中,可以运用WHERE子句指定某些条件,将所有符合条件的记录获取出来。语法如下: • WHERE 条件表达式 • WHERE子句可以包含任何逻辑运算,只要返回值为True或False即可。 • 比较运算符 逻辑运算符

  16. 17.4.2 条件子句 WHERE • 通配符 特殊运算符

  17. 17.4.2 条件子句 WHERE举例之一 • 例17-10 • 查询学生表中所有的女同学 • select * from 学生表 • 例5-11 • 查询学生表中学号前4位为“0105”的学生的学号、姓名和性别。 • select 学号,姓名,性别 from 学生表 where left(学号,4)='0105' • 其中left(str,n)函数可从字符串str左边取,取出n个字符,mid(str,n1,n2)函数可从字符str的第n1位开始取,取出n2个字符。 • 2.逻辑运算符 • 表5-3 逻辑运算符 • 逻辑运算符说明AND或(或者)OR与(并且)NOT非(否) • 例5-12 • 查询学生表中01计算机一班入学成绩在350分以上的同学 • select * from 学生表 where 班级='01计算机一班' and 入学成绩 > 350 • 例 5-13 • 查询学生表中81年以后出生的女同学或不是01计算机一班的同学。 • select * from 学生表 where 班级<>'01计算机一班' or 性别='女' and 出生日期 >=#81-01-01# • 注意,日期型的数据,与Acess数据库连接时用# #括起来,与SQL Server连接时用单引号(‘’)号。 • 3.通配符 • SQL语法还支持LIKE运算符,这个运算符接受表5-4所示的通配符。 • 表5-5 通配符 • 通配符意 义%任何长度的字符串(包括0)_(下划线)任何一个字符[](中括号)某个范围内的一个字符例5-14 • 列出所有姓李的同学的姓名和家庭住址。 • select 姓名,家庭住址 from 学生表 where 姓名 like '李%' • 注意,字符串的前后要加上单引号。 • 例5-15 • 列出电话号码开头在5-8之间的所有记录。 • select * from 学生表 where 联系电话 like '[5,8]%' • 4.特殊运算符 • SQL语句允许在WHERE子句中使用特殊的运算符。表5-6列出这些特殊的运算符号。 • 表5-6 特殊运算符号 • 运算符号含 义BETWEEN定义一个区间范围IS NULL测试属性是否为空值IN检查一个属性是否属于一组值之中EXISTS检查某一个属性是否有值。实际上,EXISTS是IS NULL的反义词例5-16 • 列出入学成绩在300到360之间的同学。 • select * from 学生表 where 入学成绩 between 300 and 360 • 例5-17 • 列出无联系电话的同学。 • select * from 学生表 where 联系电话 is null • 例5-18 • 列出李华明、孙日鹏、朱婷婷、刘娜的所有信息。 • select * from 学生表 where 姓名 in ('李华明','孙日鹏','朱婷婷', '刘娜')

  18. 17.4.2 条件子句 WHERE举例之一 • 例17-10 查询学生表中所有的女同学 • select * from 学生表 • 例17-11 查询学生表中学号前4位为“0105”的学生的学号、姓名和性别。 • select 学号,姓名,性别 from 学生表 where left(学号,4)='0105' • 其中left(str,n)函数可从字符串str左边取,取出n个字符,mid(str,n1,n2)函数可从字符str的第n1位开始取,取出n2个字符。 • 例17-12 查询学生表中01计算机一班入学成绩在350分以上的同学 • select * from 学生表 where 班级='01计算机一班' and 入学成绩 > 350 • 例 17-13 查询学生表中81年以后出生的女同学或不是01计算机一班的同学。 • select * from 学生表 where 班级<>'01计算机一班' or 性别='女' and 出生日期 >=#81-01-01# • 注意:日期型的数据,与Acess数据库连接时用# #括起来,与SQL Server连接时用单引号(‘’)号。

  19. 17.4.2 条件子句 WHERE举例之二 • 例5-14 列出所有姓李的同学的姓名和家庭住址。 • select 姓名,家庭住址 from 学生表 where 姓名 like '李%' • 注意,字符串的前后要加上单引号。 • 例5-15 列出电话号码开头在5-8之间的所有记录。 • select * from 学生表 where 联系电话 like '[5,8]%' • 例5-16 列出入学成绩在300到360之间的同学。 • select * from 学生表 where 入学成绩 between 300 and 360 • 例5-17 列出无联系电话的同学。 • select * from 学生表 where 联系电话 is null • 例5-18 列出李华明、孙日鹏、朱婷婷、刘娜的所有信息。 • select * from 学生表 where 姓名 in ('李华明','孙日鹏','朱婷婷', '刘娜')

  20. 17.4.3 数值函数

  21. 1.COUNT • 可用作计数器,计算满足某种条件的行数。 • 例5-19 • 统计总人数 • select count(*) from 学生表 • 显示结果如下 • Expr100011由于没有指定输出字段,故显示为Expr1000,若要指明输出字段,可将上句改写为 • select count(*) as 总人数 from 学生表

  22. 2.MAX和MIN • 显示入学成绩的最高分与最低分 • select max(入学成绩) as 最高分,min(入学成绩) as 最低分 from 学生表 • 显示结果为:

  23. 3.AVG和SUM • 可用来求出某字段的平均值及总和。 • 例5-21 • 统计入学成绩的总分和平均分 • select avg(入学成绩) as 平均分,sum(入学成绩) as 总分 from 学生表 • 显示结果为:

  24. 17.5 在Java中用SQL语句操作实用举例之一 • 录入数据: • Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • String url = "jdbc:odbc:stu01"; • Connection conn = DriverManager.getConnection(url); • Statement stat = conn.createStatement(); • String sql = "insert into students values('20040001','张三s','男','18','04软件','82059393','济南');"; • //String sql = "insert into students values('20040001','张三s','男','18','04软件','82059393','济南');"; • int rowCount =stat.executeUpdate(sql); • 上述代码为向数据表中添加一行数据

  25. 17.5 在Java中用SQL语句操作实用举例之二 • 删除数据: • Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • String url = "jdbc:odbc:stu01"; • Connection conn = DriverManager.getConnection(url); • Statement stat = conn.createStatement(); • String sql = "delete from students where xuehao=‘01012’"; • int rowCount =stat.executeUpdate(sql); • 本行代码为将数据表 中的学号为“01012”的记录删除

  26. 17.5 在Java中用SQL语句操作实用举例之三 • 查询数据: • Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • String url = "jdbc:odbc:stu01"; • Connection conn = DriverManager.getConnection(url); • Statement stat = conn.createStatement(); • String sql = “select * from students where xinbie=‘男'"; • ResultSet rSet = stat.executeQuery(sql); • 本行代码为查询数据表 中的所有的男同学

More Related