资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第1717章章 SQLSQL语句简介语句简介 17.1 SQL 简介17.2 数据表操作17.3 添加、删除与修改记录17.4 查询记录17.5 在Java中用SQL语句操作实用举例本章要本章要点点l了解什么是SQL语句l了解SQL语句关于表的操作l掌握SQL语句对于数据表中记录的操作l掌握SQL语句的查询命令17.1 SQL 简介简介 结构化查询语言(SQL)是访问数据库的标准语言。通过SQL可以完成复杂的数据库操作,而不用考虑如何操作物理数据库的底层细节。 ANSI SQL语句按其基本功能可分为两种类型:第一种:数据定义语言(DDL)数据定义语言提供一系列的命令用以创建数据库对象,如创建、删除表、建立字段及其属性、为表增加索引、创建表与表之间的连接关系等。第二种:数据库操作语言(DML)SQL数据操作语言用于在表中检索记录、更新记录以及添加或删除记录。 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-DDTIME时间,包含一日的时、分、秒,形为HH:MM:SS4.逻辑型LOGICAL 只有真(T)或假(F)的数据项SQL允许对以上数据类型的数据进行比较操作,但算术操作只限于数值型。17.2 数据表操作之二数据表操作之二 5.2.2 基本表操作1.创建表基本表的创建可用Create语句来实现:CREATE TABLE 表名(字段名1 类型,字段名2 类型)例如:创建班级表的具体代码如下:CREATE TABLE 班级表(班级名称 char(30),人数 integer,班主任 char(10),教室 char(20)2.删除表删除表可使用Drop语句:DROP TABLE 表名17.2 数据表操作之三数据表操作之三 3.修改表修改表一般是指对字段的添加、删除、修改操作,使用Alter语句。添加:ALTER TABLE 表名 ADD COLUMN 字段名1 类型(长度),字段名2 类型(长度)删除:ALTER TABLE 表名 DROPD COLUMN 字段名修改:ALTER TABLE 表名 ALTER (字段名1 类型,字段名2 类型)17.2 数据表操作之四数据表操作之四 例例5-1在班级表中添加专业字段。alter table 班级表 add column 专业 char(20)例例5-2将班级表中专业字段的长度改为50。alter table 班级表 alter 专业 char(50)例例5-3删除专业字段。alter table 班级表 drop 专业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电子商务二班)添加记录注意添加记录注意括号内是输入的数据,各数据项用逗号分隔。l 字符串和日期值必须用单引号括起来。l 数值型数据不用括起。l 数据顺序一定与字段顺序对应。l 所有标点符号一律在半角状态下输入添加记录注意添加记录注意例例17-5 在学生表中添加记录,“010602007”,“李刚”,“男”,其余字段为空。insert into 学生表(学号,姓名,性别) values(010602007,李刚,男) 括号内是输入的数据,各数据项用逗号分隔。l 字符串和日期值必须用单引号括起来。l 数值型数据不用括起。l 数据顺序一定与字段顺序对应。l 所有标点符号一律在半角状态下输入17.3.2 删除记录删除记录删除记录可使用DELETE语句,其语法如下:DELETE * FROM 表名 WHERE 条件例例17-6删除学生表中李刚这条记录。cs.Execute delete * from 学生表 where 姓名=李刚例例17-7删除学生表中所有的女生。cs.Execute delete * from 学生表 where 性别=女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 姓名=田秀丽17.4 查询记录SELECT查询的完整类型如下:SELECT 字段1,字段2,字段3(要显示的字段列表)FORM 子句WHERE 子句GROUP BY 子句HAVING 子句ORDER BY 子句其中括号内的子句可视需要选用 17.4.1 字段表的表示在SELECT关键字之后指定字段名称作为查询对象,例如要查询学生表中的学号,则可写为:SELECT 学号 FORM 学生表若要将查询范围扩大到整个数据表,则可以使用通配符“*”取代字段名称。如:SELECT * FROM 学生表表示取出学生表中的所有记录。若字段列表中要取出多个字段,各字段间用逗号隔开,如:SELECT 学号,姓名,入学成绩 FROM 学生表17.4.2 条件子句 WHERE在SELECT查询语句中,可以运用WHERE子句指定某些条件,将所有符合条件的记录获取出来。语法如下:WHERE 条件表达式WHERE子句可以包含任何逻辑运算,只要返回值为True或False即可。比较运算符 逻辑运算符 比较运算符说明=等于小于大于=大于或等于或!不等于逻辑运算符说明AND或(或者)OR与(并且)NOT非(否)17.4.2 条件子句 WHERE通配符通配符意 义%任何长度的字符串(包括0)_(下划线)任何一个字符(中括号)某个范围内的一个字符运算符号含 义BETWEEN定义一个区间范围IS NULL测试属性是否为空值IN检查一个属性是否属于一组值之中EXISTS检查某一个属性是否有值。实际上,EXISTS是IS NULL的反义词特殊运算符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 (李华明,孙日鹏,朱婷婷, 刘娜)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连接连接时用单引号(时用单引号()号。)号。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 (李华明,孙日鹏,朱婷婷, 刘娜)17.4.3 数值函数函数 功能返回值COUNT计数统计满足一定条件的行数MIN求最小值某属性的最小值MAX求最大值某属性的最大值AVG求平均值求指定某属性值的算术平均值SUM求总和求指定属性所有值之和1.COUNT可用作计数器,计算满足某种条件的行数。例例5-19统计总人数select count(*) from 学生表显示结果如下Expr100011由于没有指定输出字段,故显示为Expr1000,若要指明输出字段,可将上句改写为select count(*) as 总人数 from 学生表 Expr1000112.MAX和MIN显示入学成绩的最高分与最低分显示入学成绩的最高分与最低分select max(入学成绩入学成绩) as 最高分最高分,min(入学成绩入学成绩) as 最最低分低分 from 学生表学生表显示结果为:显示结果为:最高分最低分5303203.AVG和SUM可用来求出某字段的平均值及总和。可用来求出某字段的平均值及总和。例例5-21统计入学成绩的总分和平均分统计入学成绩的总分和平均分select avg(入学成绩入学成绩) as 平均分平均分,sum(入学成绩入学成绩) as 总总分分 from 学生表学生表显示结果为:显示结果为:平均分总分416.363636363636458017.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);上述代码为向数据表中添加一行数据上述代码为向数据表中添加一行数据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”的记录删除的记录删除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);本行代码为查询数据表本行代码为查询数据表 中的所有的男同学中的所有的男同学
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号