




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、概 述学习目标: 掌握Word文档的建立、编辑、格式化、保存、输出的基本操作 熟悉Word模板的使用 掌握Word表格的相关操作图形 了解在Word中处理图片、图形的方法 了解样式、域的基本使用 第1页/共125页第三章 主要内容 8.1 数据库 8.2 SQL语句 3.3 3.4 输入文本内容“插入”菜单 3.5 修改内容“编辑”菜单 3.6 文档排版“格式”菜单 3.7 Word对象的创建与设置 3.8 表格“表格”菜单 3.9 打印输出 3.10 综合实例第2页/共125页3.1数据库 数据库概念 安装MYSQL数据库 服务器启动与客户端的登录第3页/共125页数据库概念(了解)数据库就
2、是用来存储和管理数据的仓库!数据库存储数据的优先: l可存储大量数据;l方便检索;l保持数据的一致性、完整性;l安全,可共享;l通过组合分析,可产生新数据。第4页/共125页数据库的发展历程 l没有数据库,使用磁盘文件存储数据;l层次结构模型数据库;l网状结构模型数据库;l关系结构模型数据库:使用二维表格来存储数据;l关系-对象模型数据库;注意:MySQL就是关系型数据库!Java-面向对象;数据库-面向关系;二者之间有一个映射。第5页/共125页常见数据库 lOracle:市场使用率最高!业界霸主;(1)“神喻”-国外应用的名字;(2)甲骨文-在中国注册的名字。lDB2:IBM;lSQL S
3、erver:微软;(课堂上,.net平台使用自己的东西)lSybase:赛尔斯;lMySQL:甲骨文;(起始时免费,新版本也开始收费,目前用的5.5版本还是免费的)第6页/共125页理解数据库 我们现在所说的数据库泛指“关系型数据库管理系统(RDBMS - Relational database management system )”,即“数据库服务器”。 第7页/共125页理解数据库 当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。 第8页/共125页理解数据库 数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信
4、息。而不用指定表格的行数,行数是没有上限的。下面是tab_student表的结构: 第9页/共125页理解数据库 当把表格创建好了之后,就可以向表格中添加数据了。向表格添加数据是以行为单位的!下面是s_student表的记录: 注意:大家要学会区分什么是表结构,什么是表记录。 第10页/共125页应用程序与数据库 应用程序使用数据库完成对数据的存储! 第11页/共125页应用程序与数据库 (1)数据库和应用程序(如Java)不在同一台机器上,远程访问数据库。例如家(应用程序)和仓库(专门存放数据的,数据库)在两个地点。讲课时,为了方便数据库和应用程序是在同一台机器上的。(2)数据库和应用程序离
5、得很远。远程数据库。如家和仓库离得很远。第12页/共125页安装MySQL数据库 1、 安装MySQL 2、 MySQL目录结构 第13页/共125页安装MySQL 安装参考:MySQL安装图解.doc 校验安装: MySQL安装图解.doc 重点内容:开启关闭服务器以及登录退出客户端。 卸载方法: MySQL安装图解.doc 第14页/共125页MySQL目录结构 参见:MySQL安装目录介绍.doc第15页/共125页服务器启动与客户端的登录 服务器操作开启服务器(必须保证mysql为windows服务):两种方法。 验证方法: 查看进程表中是否存在:mysqld.exe进程(存在) 客户
6、登操作开始-运行- cmd1. 登录服务器:mysql -uroot -p123 -hlocalhost -u:后面跟随用户名 -p:后面跟随密码 -h:后面跟随IP,可以省略,也可以为-hlocalhost或者-,表示本机IP 验证方法: 查看进程表中是否存在:mysql.exe进程(存在)2. 退出服务器:exit或quit第16页/共125页8.2SQL语句 SQL概述 SQL 分类 (用的不太多) (用的多) (用的很少) (用的多)第17页/共125页SQL概述 SQL(Structured Query Language)是“结构化查询语言”,它是对关系型数据库的操作语言。它可以应用
7、到所有关系型数据库中,例如:MySQL、Oracle、SQL Server等。 通俗地讲, SQL 语言用于服务器端与客户端对话使用。即客户端使用SQL来操作服务器。 启动mysql.exe,连接服务器后,就可以使用sql来操作服务器了。 将来会使用Java程序连接服务器,然后使用sql来操作服务器。第18页/共125页SQL概述 SQL标准(例如SQL99,即1999年制定的标准,不断升级版本): 由国际标准化组织(ISO)制定的,对DBMS的统一操作方式(例如相同的语句可以操作:mysql、oracle、 SQL Server等,即这些数据库通用该语言)。 SQL方言 虽然SQL可以用在所
8、有关系型数据库中 ,但很多数据库还会有一些自己独有的语法,这就称之为方言!例如limit语句只在MySQL中可以使用,其它数据库都不支持!当然,Oracle或SQL Server都有自己的方言。第19页/共125页SQL概述语法要求 SQL语句可以单行或多行书写,以分号结尾(注意:不同的使用环境对是否具有分号的要求也不同); 可以用空格和缩进来来增强语句的可读性; 关键字不区别大小写,建议使用大写;如:SELECT * FROM book;第20页/共125页SQL语句分类1. DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; 创建、
9、删除、修改:库、表结构!2. DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); 增、删、改:表记录3. DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;4. DQL*(Data Query Language):数据查询语言,用来查询记录(数据)。本质上属于2的一部分。 ddl:数据库或表的结构操作(重点) dml:对表的记录进行更新(增、删、改)(重点) dql:对表的记录的查询(重点,难点) dcl:对用户的创建,及授权!(尽量不用使用root,创建其他普通用户并使用)第21页/共125
10、页DDL知识-数据库操作1. 数据库操作 查看所有数据库:SHOW DATABASES; 切换(选择要操作的)数据库:USE 数据库名; 创建数据库:CREATE DATABASE IF NOT EXISTS mydb1 CHARSET=utf8 创建数据库,例如:CREATE DATABASE mydb1;,创建一个名为mydb1的数据库。如果这个数据已经存在,那么会报错。例如CREATE DATABASE IF NOT EXISTS mydb1,在名为mydb1的数据库不存在时创建该库,这样可以避免报错。 “CHARSET=utf8”选项可以省略,因为在安装MySql时,已经指定了符号集。
11、如果不指定字符集,则默认使用utf8。第22页/共125页DDL知识1. 数据库操作 删除数据库:DROP DATABASE IF EXISTS mydb1 删除数据库,例如:DROP DATABASE mydb1;,删除名为mydb1的数据库。如果这个数据库不存在,那么会报错。DROP DATABASE IF EXISTS mydb1,就算mydb1不存在,也不会的报错。 修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8; 修改数据库mydb1的编码为utf8。注意,在MySQL中所有的UTF-8编码都不能使用中间的“-”,即UTF-8要书写为U
12、TF8。 第23页/共125页DDL知识(软件SQLyog)-数据类型2. 数据类型(参见“MySQL数据类型.doc”, MySQL 中数据类型后面括号内的数字通常表示实际数据的位数)MySQL与Java一样,也有数据类型。MySQL中数据类型主要应用在列上。 int:整型 double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99; decimal:浮点型,在表示钱方面使用该类型,因为不会出现精度缺失问题;第24页/共125页DDL知识2. 数据类型 char:固定长度字符串类型; char(255),数据的长度不足指定长度,补足到指定长度!如
13、char(4),当数据长度为2时,会在后面添加2个空格补位。 注意:255表示字符串的长度或者255Byte,此时一个字符便为一个Byte。 适合于身份证号码、时间等固定长度场合的表示。 varchar:可变长度字符串类型; varchar(65535),数据的长度不足指定长度,不补足到指定长度! 如zhangSan 。缺点:需要使用一个字节用来记录长度。当数据长度大于255时,记录长度就需要2个字节了。 第25页/共125页DDL知识 text(对应“标准”里的clob类型):字符串类型;MySQL独有的类型。 很小-tinytext 小-text 中-mediumtext 大-longte
14、xt ,存储一本小说 blob:字节类型; 很小-tinyblob 小-blob 中-mediumblob 大-longblob date:日期类型,格式为:yyyy-MM-dd; time:时间类型,格式为:hh:mm:ss timestamp:时间戳类型;包含时间和日期。第26页/共125页DDL知识-表的操作1、创建表 语法如下:CREATE IF NOT EXISTS TABLE 表名( 列名 列类型, 列名 列类型, . 列名 列类型);第27页/共125页DDL知识-表的操作1、创建表例如,创建如下表:CREATE TABLE stu(sid CHAR(6),snameVARCHA
15、R(20),ageINT,genderVARCHAR(10) ); 表的字段名称:学号、姓名、年龄和性别。第28页/共125页DDL知识-表的操作又如,创建如下表(雇工表):CREATE TABLE emp(eidCHAR(6),enameVARCHAR(50),ageINT,genderVARCHAR(6),birthdayDATE,hiredateDATE,salaryDECIMAL(7,2),resumeVARCHAR(1000);表的字段名称:工号、姓名、年龄、性别、生日、雇用日期、薪水、个人简历。第29页/共125页DDL知识-表的操作2、查看当前数据库中所有表名称:SHOW TAB
16、LES;3、查看指定表的创建语句:SHOW CREATE TABLE 表名(了解); 如:SHOW CREATE TABLE emp;,查看emp表的创建语句; 4、查看表结构:DESC 表名;如:DESC emp;,查看emp表结构; 5、删除表:DROP TABLE 表名;如:DROP TABLE emp;,删除emp表; 第30页/共125页DDL知识-表的操作6、 修改表:前缀:ALTER TABLE 表名 修改之添加列: ALTER TABLE 表名 ADD ( 列名 列类型, 列名 列类型, . 列名 列类型 ); 如:给stu表添加classname列: ALTER TABLE
17、stu ADD ( classname varchar(100) ); 第31页/共125页DDL知识-表的操作6、 修改表: 修改之修改列类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在数据),语法如下: ALTER TABLE 表名 MODIFY 列名 列类型; 如:修改stu表的gender列类型为CHAR(2):ALTER TABLE stu MODIFY gender CHAR(2);第32页/共125页DDL知识-表的操作6、 修改表: 修改之修改列名,语法如下: ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;如:修改stu表的gender列名为
18、sex:ALTER TABLE stu change gender sex CHAR(10); 第33页/共125页DDL知识-表的操作6、 修改表: 修改之删除列,语法如下: ALTER TABLE 表名 DROP 列名;如:删除stu表的classname列:ALTER TABLE stu DROP classname; 第34页/共125页DDL知识-表的操作6、 修改表 修改表名称,语法如下:ALTER TABLE 原表名 RENAME TO 新表名;如:修改stu表名称为student:ALTER TABLE stu RENAME TO student;第35页/共125页DML知识
19、-插入数据DML(数据操作语言,它是对表记录的操作(增、删、改)!)预备知识:DQL查询表记录:SELECT * FROM 表名;1. 插入数据INTERT INTO 表名(列名1,列名2, .) VALUES(列值1, 列值2, .); 在表名后给出要插入的列名,其他没有指定的列等同于插入null值。所以插入记录总是插入一行,不可能是半行。 在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应。第36页/共125页DML知识-插入数据例如:INSERT INTO stu(sid, sname,age,gender) VALUES(s_1001, zhangSan, 23, male
20、); 注意:(1)在数据库中所有的字符串类型,必须使用单引,不能使用双引!(2)日期类型也要使用单引!又如:INSERT INTO stu(sid, sname) VALUES(s_1001, zhangSan);注意:因为没有插入age和gender列的数据,所以该条记录的age和gender值上为NULL第37页/共125页DML知识-插入数据又如:INSERT INTO stu(sname,age,sid, gender) VALUES(wangwu, 23, s_1003, female); 注意:在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应。第38页/共125页DM
21、L知识-插入数据1. 插入数据INTERT INTO 表名 VALUES(列值1, 列值2); 没有给出要插入的列,那么表示插入所有列。 值的个数必须是该表列的个数。 值的顺序,必须与表创建时给出的列的顺序相同。 不建议使用此种方式。如:INSERT INTO stu VALUES(s_1002, liSi, 32, female); 注意:插入记录中尽可能不出现汉字。第39页/共125页DML知识-修改数据2. 修改数据(一次可以同时修改表中的多条记录) UPDATE 表名 SET 列名1=列值1, 列名2=列值2, . WHERE 条件说明:条件(条件可选的): 条件必须是一个boolea
22、n类型的值或表达式:UPDATE stu SET sname=zhangSanSan , age=32 , gender=male WHERE sid=s_1002 ; 运算符:=、!=(不等于)、 (不等于) 、=、30 AND gender=male;(2)UPDATE stu SET gender=female WHERE gender IS NULL;(3)UPDATE stu SET age=age+1 WHERE sname=liSi;注意:在SQL中赋值和等于都是用“=”,根据上下文进行判断具体含义。第41页/共125页DML知识-修改数据例如:(4)UPDATE stu SET
23、 age=age+1 WHERE age=22 AND age 用户只能在指定的IP地址上登录(2)CREATE USER 用户名% IDENTIFIED BY 密码; 用户可以在任意IP地址上登录第48页/共125页DCL知识-创建用户1. 创建用户(使用root登录(此时权限最大),而后进行创建用户操作) 例如:(1)CREATE USER user1localhost IDENTIFIED BY 123; user1用户只能在localhost这个IP登录mysql服务器 验证方法:mysql -uuser1 -p123或者mysql -uuser1 -p123 -hlocalhost
24、验证登录。(2)CREATE USER user2% IDENTIFIED BY 123;user2用户可以在任何电脑上登录mysql服务器。验证方法:mysql -uuser2 -p123验证登录。注意:user1和user2权限很有限,还需授权。如:此时在user1或者user2登录的情况下,键入show databases;命令,将显示不出mydb1数据库,即user1或者user2没有对mydb1数据库操作的权限。第49页/共125页DCL知识-给用户授权2.给用户授权 (使用root登录(此时权限最大),而后进行用户授权操作)(1)GRANT 权限1, , 权限n ON 数据库.*
25、TO 用户名IP地址 权限、用户、数据库 给用户分派在指定的数据库上的指定的权限 例如:GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1localhost; 给user1用户分派在mydb1数据库上的create、alter、drop、insert、update、delete、select权限。 此时在user1登录的情况下,键入show databases;命令,将能够显示出mydb1数据库,即user1拥有了对mydb1数据库操作的权限 同样可以进行select等操作。第50页/共125页DCL知
26、识-给用户授权2.给用户授权 (使用root登录(此时权限最大),而后进行用户授权操作) (2)GRANT ALL ON 数据库.* TO 用户名IP地址; 给用户分派指定数据库上的所有权限。例如:GRANT ALL ON mydb1.* TO user2localhost; 此时在user2登录的情况下,键入show databases;命令,将能够显示出mydb1数据库,即user2拥有了对mydb1数据库操作的权限,同样可以进行select等操作。第51页/共125页DCL知识- 撤销授权3. 撤销授权 (使用root登录(此时权限最大),而后进行撤销授权操作)REVOKE 权限1, ,
27、 权限n ON 数据库.* FROM 用户名IP地址; 撤消指定用户在指定数据库上的指定权限 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1localhost; 撤消user1用户在mydb1数据库上的create、alter、drop权限第52页/共125页DCL知识- 撤销授权3. 撤销授权 (使用root登录(此时权限最大),而后进行撤销授权操作)例如:REVOKE delete ON mydb1.* FROM user1localhost; 验证方法:使用user1登录,而后切换到mydb1数据库,执行delete操作将错误。具体如下
28、:(1)mysql -uuser1 -p123(2) use mydb1;(3)delete from stu;第53页/共125页DCL知识- 查看权限4. 查看权限 (使用root登录(此时权限最大),而后进行查看权限操作) SHOW GRANTS FOR 用户名IP地址 查看指定用户的权限如:SHOW GRANTS FOR user1localhost; 第54页/共125页DCL知识- 删除用户5. 删除用户 (使用root登录(此时权限最大),而后进行删除用户操作) DROP USER 用户名IP地址如:DROP USER user1localhost; 此时再用user1登录将出错
29、。第55页/共125页DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。 创建学生表:stu 字段名称字段名称字段类型字段类型说明说明sidchar(6)学生学号学生学号snamevarchar(50)学生姓名学生姓名ageint学生年龄学生年龄gendervarchar(50)学生性别学生性别DQL知识- 准备工作第56页/共125页DQL知识- 准备工作创建代码:CREATE TABLE stu (sidCHAR(6),snameVARCHAR(50),ageINT,genderVARCHAR(50); 第57页/共125页DQL知识- 准备工
30、作插入记录: INSERT INTO stu VALUES(S_1001, liuYi, 35, male); INSERT INTO stu VALUES(S_1002, chenEr, 15, female); INSERT INTO stu VALUES(S_1003, zhangSan, 95, male); INSERT INTO stu VALUES(S_1004, liSi, 65, female); INSERT INTO stu VALUES(S_1005, wangWu, 55, male); INSERT INTO stu VALUES(S_1006, zhaoLiu,
31、75, female); INSERT INTO stu VALUES(S_1007, sunQi, 25, male); INSERT INTO stu VALUES(S_1008, zhouBa, 45, female); INSERT INTO stu VALUES(S_1009, wuJiu, 85, male); INSERT INTO stu VALUES(S_1010, zhengShi, 5, female); INSERT INTO stu VALUES(S_1011, xxx, NULL, NULL); 第58页/共125页创建雇员表:empDQL知识- 准备工作字段名称字
32、段名称字段类型字段类型说明说明empnoint员工编号员工编号enamevarchar(50)员工姓名员工姓名jobvarchar(50)员工工作员工工作mgrint领导编号领导编号hiredatedate入职日期入职日期saldecimal(7,2)月薪月薪commdecimal(7,2)奖金奖金deptnoint部分编号部分编号第59页/共125页DQL知识- 准备工作创建代码:CREATE TABLE emp(empnoINT,enameVARCHAR(50),jobVARCHAR(50),mgrINT,hiredateDATE,salDECIMAL(7,2),commdecimal(7
33、,2),deptnoINT) ; 第60页/共125页DQL知识- 准备工作插入记录: INSERT INTO emp VALUES (1009, zenganiu, chairman, NULL, 2001-11-17, 50000, NULL, 10); INSERT INTO emp VALUES (1004, liubei, manager, 1009, 2001-04-02, 29750, NULL, 20); INSERT INTO emp VALUES (1006, guanyu, manager, 1009, 2001-05-01, 28500, NULL, 30); INSE
34、RT INTO emp VALUES (1007, zhangfei, manager, 1009, 2001-09-01, 24500, NULL, 10); INSERT INTO emp VALUES (1008, zhugeliang, analyst, 1004, 2007-04-19, 30000, NULL, 20); INSERT INTO emp VALUES (1013, pangtong, analyst, 1004, 2001-12-03, 30000, NULL, 20);第61页/共125页DQL知识- 准备工作 INSERT INTO emp VALUES (10
35、02, daiyisi, salesman, 1006, 2001-02-20, 16000, 3000, 30); INSERT INTO emp VALUES (1003, yintianzheng, salesman, 1006, 2001-02-22, 12500, 5000, 30); INSERT INTO emp VALUES (1005, xiexun, salesman, 1006, 2001-09-28, 12500, 14000, 30); INSERT INTO emp VALUES (1010, weiyixiao, salesman, 1006, 2001-09-0
36、8, 15000, 0, 30); INSERT INTO emp VALUES (1012, chengpu, clerk, 1006, 2001-12-03, 9500, NULL, 30); INSERT INTO emp VALUES (1014, huanggai, clerk, 1007, 2002-01-23, 13000, NULL, 10); INSERT INTO emp VALUES (1011, zhoutai, clerk, 1008, 2007-05-23, 11000, NULL, 20); INSERT INTO emp VALUES (1001, gannin
37、g, clerk, 1013, 2000-12-17, 8000, NULL, 20);第62页/共125页创建部分表:dept DQL知识- 准备工作字段名称字段名称字段类型字段类型说明说明deptnoint部分编码dnamevarchar(50)部分名称locvarchar(50)部分所在地点第63页/共125页DQL知识- 准备工作创建代码:CREATE TABLE dept(deptnoINT,dnamevarchar(50),locvarchar(50); 第64页/共125页DQL知识- 准备工作插入记录: INSERT INTO dept VALUES (10, jiaoyanb
38、u, beijing); INSERT INTO dept VALUES (20, xuegongbu, shanghai); INSERT INTO dept VALUES (30, xiaoshoubu, guangzhou); INSERT INTO dept VALUES (40, caiwubu, wuhan);第65页/共125页DQL知识-基本查询一、 基本查询1. 字段(列)控制1) 查询所有列 SELECT * FROM 表名; 如:SELECT * FROM emp; - 其中“*”表示查询所有列第66页/共125页DQL知识-基本查询2) 查询指定列SELECT 列1 ,
39、 列2, . 列N FROM 表名;如: SELECT empno, ename, sal, comm FROM emp;第67页/共125页DQL知识-基本查询3) 完全重复的记录只一次 当查询结果中的多行记录一模一样时,只显示一行。一般查询所有列时很少会有这种情况,但只查询一列(或几列)时,这总可能就大了! SELECT DISTINCT * | 列1 , 列2, . 列N FROM 表名;SELECT DISTINCT job FROM emp; SELECT DISTINCT deptno FROM emp; - 保查询员工表的部门编号,如果存在相同的部门只显示一次! 注意:该操作并不
40、删除数据库中的重复记录,只是查询。第68页/共125页DQL知识-基本查询4) 列运算(调节ms-dos窗口宽度的方法:单击左上角图标-属性-布局-窗口大小-宽度) . 数量类型的列可以做加、减、乘、除运算 例如: SELECT *,sal FROM emp; SELECT *,sal*1.5 FROM emp; SELECT *,sal+comm FROM emp;注意:任何数据+NULL=NULL,处理方法见下页。 ename+100=100,此时ename值处理成0。第69页/共125页DQL知识-基本查询.转换NULL值 有时需要把NULL转换成其它值,例如com+1000时,如果co
41、m列存在NULL值,那么NULL+1000还是NULL,而我们这时希望把NULL处理为0来运算。SELECT *,sal+IFNULL(comm, 0) FROM emp;说明:IFNULL(comm, 0):如果comm中存在NULL值,那么当成0来运算。又如:select empno,ename,job,ifnull(mgr,boss),hiredate,sal,comm,deptno from emp;第70页/共125页DQL知识-基本查询 .字符串类型可以做连续运算。 Java中字符串连接符号为+; Oracle中字符串连接符号为|; MySQL中字符串连接符号为CONCAT ; 例
42、如:SELECT CONCAT($, sal) FROM emp;又如:select concat(ename,job) from emp;select concat(my name is ,ename, my job is ,job) from emp;第71页/共125页DQL知识-基本查询 . 给列起别名 你也许已经注意到了,当使用列运算后,查询出的结果集中的列名称很不好看,这时我们需要给列名起个别名,这样在结果集中列名就显示别名了 SELECT *,sal+IFNULL(comm, 0) AS jiangjin FROM emp; - 其中AS可以省略又如: select concat
43、(my name is ,ename, my job is ,job) as descr from emp;第72页/共125页DQL知识-基本查询 . 给列起别名 以下两者等价:select ename as name,job as work from emp;等价于:select ename name,job work from emp;问题: select empno,ename job,sal,comm from emp;是否有错,结果如何?第73页/共125页DQL知识-基本查询2、 条件控制1)条件查询 与前面介绍的UPDATE和DELETE语句一样,SELECT语句也可以使用WH
44、ERE子句来控制记录。说明: 条件必须是一个boolean类型的值或表达式; 运算符:=、!=(不等于)、 (不等于) 、=、 10000 AND comm IS NOT NULL; SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000; SELECT empno,ename,job FROM emp WHERE job IN (chairman, manager);第75页/共125页DQL知识-基本查询2) 模糊查询 当你想查询姓名中以“Z”开头,并且名字包含7个字符的员工时,就可以使用模糊查询: SELECT
45、* FROM emp WHERE ename LIKE z_; 注意: 模糊查询需要使用运算符:LIKE,其中_匹配一个任意字符,注意,只匹配一个字符而不是多个。 SELECT * FROM emp WHERE ename LIKE _; 表示姓名由6个字符组成的员工。第76页/共125页DQL知识-基本查询2 )模糊查询 如果想查询姓名中以“Z”开头的所有员工(姓名中字符个数任意),就要使用“%”了。 SELECT * FROM emp WHERE ename LIKE z%; 注意:其中%匹配0n个任意字符。 查询姓名中包含“Z”的所有员工。 SELECT * FROM emp WHERE
46、 ename LIKE %z%; 注意:千万不要认为上面语句是在查询姓名中间带有阿字的员工,因为%匹配0n个字符,所以姓名以阿开头和结尾的员工也都会查询到。 第77页/共125页DQL知识-基本查询2) 模糊查询 SELECT * FROM emp WHERE ename LIKE %; 注意:这个条件等同于不存在(该条件有无均可,既可以去掉),但如果姓名为NULL的查询不出来! 查询姓名中第二个字符为“h”的所有员工。SELECT * FROM emp WHERE ename LIKE _h%;第78页/共125页DQL知识-排序二、排序1、升序 SELECT * FROM emp ORDE
47、R BY sal ASC; - 按sal排序,升序! - 其中ASC是可以省略的第79页/共125页DQL知识-排序2、降序 SELECT * FROM emp ORDER BY comm DESC; - 按comm排序,降序!- 其中DESC不能省略第80页/共125页DQL知识-排序3、 使用多列作为排序条件SELECT * FROM emp ORDER BY sal ASC, comm DESC; - 使用sal升序排,如果sal相同时,使用comm的降序排。SELECT * FROM emp ORDER BY sal ASC, comm DESC,empno ASC; - 使用sal升
48、序排,如果sal相同时,使用comm的降序排,如果sal和comm都相同时,使用empno升序排列。第81页/共125页DQL知识-聚合函数聚合函数用来做某列的纵向运算。1、 COUNT功能:统计指定列不为NULL的记录行数; (1) SELECT COUNT(*) FROM emp; - 计算emp表中所有列都不为NULL的记录的行数。(2) SELECT COUNT(comm) FROM emp; - 计算emp表中comm列不为NULL的记录的行数。第82页/共125页DQL知识-聚合函数1、 COUNT(3)查询emp表中月薪大于25000的人数:SELECT COUNT(*) FRO
49、M emp WHERE sal 25000;(4)统计月薪与佣金之和大于25000元的人数:SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) 25000;(5)查询有佣金的人数,以及有上级领导的人数:SELECT COUNT(comm), COUNT(mgr) FROM emp;第83页/共125页DQL知识-聚合函数2、SUM功能:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;(1)查询所有雇员月薪和: SELECT SUM(sal) FROM emp;(2)查询所有雇员月薪和,以及所有雇员佣金和:SELEC
50、T SUM(sal), SUM(comm) FROM emp;(3)查询所有雇员月薪+佣金和: SELECT SUM(sal+IFNULL(comm,0) FROM emp;(4)统计所有员工平均工资: SELECT SUM(sal)/COUNT(sal) FROM emp; (5) SELECT SUM(ename) FROM emp; 第84页/共125页DQL知识-聚合函数3、AVG功能:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0。 (1) SELECT AVG(sal) FROM emp; - 查询平均工资(2) SELECT AVG(ename) FROM em
51、p; - 查看结果第85页/共125页DQL知识-聚合函数4、 MAX功能:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算。(1) SELECT MAX(sal) FROM emp; - 查询最高工资(2) SELECT MAX(ename) FROM emp; - 查询最大姓名第86页/共125页DQL知识-聚合函数5、 MIN功能:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算。(1) SELECT MIN(sal) FROM emp; - 查询最低工资(2) SELECT MIN(ename) FROM emp; - 查询最小姓名第87页/共125
52、页DQL知识-聚合函数综合应用:SELECT count(*) as renshu,sum(sal) gongzihe,avg(sal) pingjunz,max(sal) zuida,min(sal) as zuixiao FROM emp;第88页/共125页DQL知识-分组查询四、分组查询1、基本形式分组查询是把记录使用某一列进行分组(例如,按照性别将同学们分成两组,又如,按照是否戴眼镜将同学们也可以分为两组),然后查询组信息。注意:(1)用于分组的列必须有重复记录的。例如在emp表中,如果对empno或者ename列进行分组,则无任何意义。而对job列进行分组就很有意义,因为在该列中包
53、含众多重复记录。(2)分组查询,最终查询的为组信息,不是个人信息。若查询组信息,必须使用聚合函数来操作。第89页/共125页DQL知识-分组查询举例:(1)例如,使用job分组,查询工作名称和每个工作的记录数SELECT job, COUNT(*) FROM emp GROUP BY job;特点:select后面的列如果不加聚合函数,如job,则该列必须为分组列,即位于GROUP BY 后(技巧:实际操作时,先添加二者),否则select后面的列必须加聚合函数。(2)使用deptno分组,查询部门编号和每个部门的记录数SELECT deptno, COUNT(*) FROM emp GROU
54、P BY deptno;(3)使用job分组,查询每种工作的最高工资SELECT job, MAX(SAL) FROM emp GROUP BY job;第90页/共125页DQL知识-分组查询2、组条件(1)分组前条件:根据条件去除的记录没有参见分组。(WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组)例如,以部门编号分组,查询每组记录数。要求只保留sal大于15000的记录。SELECT deptno, COUNT(*) FROM emp where sal15000 GROUP BY deptno;与下面比较:SELECT deptno,
55、 COUNT(*) FROM emp GROUP BY deptno;第91页/共125页DQL知识-分组查询2、组条件(2)分组后条件: HAVING后的条件部分必须使用聚合函数作为条件。以部门编号分组,查询每组记录数。条件为记录数大于3。SELECT deptno, COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*) 3;与下面比较SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;第92页/共125页DQL知识-总结selectfromwheregroup byhavingorder by在se
56、lect语句中,如果同时使用上述关键字,则各个关键字的出现顺序如上,实际的执行顺序也为上。第93页/共125页DQL知识- limit子句(方言)五、limit子句(方言)-其他数据如果想实现limit的对应功能,必须使用多表查询(子查询)来实现。 功能:LIMIT用来限定查询结果的起始行,以及总行数。主要用于分页查询场合。 (1)例如:查询起始行为第5行,一共查询3行记录 SELECT * FROM emp LIMIT 4, 3; - 其中4表示从第5行开始,其中3表示一共查询3行。即第5、6、7行记录。第94页/共125页DQL知识- limit子句(方言)(2)例如:查询起始行为第1行,
57、一共查询5行记录select * from emp limit 0, 5;(3)例如:查询起始行为第13行,一共查询5行记录select * from emp limit 12, 5;注意:因为表中只剩下两条记录,所以只查到两条记录。第95页/共125页DQL知识- limit子句(方言)适用场合:分页查询问题描述:如果一页记录为10条,希望查看第3页记录应该怎么查呢?实现: select * from emp limit 20, 10;分析:(1)第一页记录起始行为0,一共查询10行,即09;(2)第二页记录起始行为10,一共查询10行,即1019 ;(3)第三页记录起始行为20,一共查询1
58、0行,即2029 ;公式: limit 数字1,数字2 数字1公式:(当前页-1) * 每页记录数 数字2公式:每页记录数举例:每页8条记录,查询第17页记录?limit (17-1)*8,8第96页/共125页单表查询练习:准备知识:SQLyog软件的安装与使用。该软件能够实现创建数据库、创建数据表、插入表记录等操作。但这些操作都是在可视化界面下通过鼠标操作来完成的,其本质也是转换成SQL语句。直接使用该软件,不利于我们对基本SQL语法的学习。本节只是使用该软件来演示查询的结果。注意该软件保存的文件扩展名为.sql。该文件中可以包含多个select查询语句。第97页/共125页单表查询练习:
59、第98页/共125页在屏幕中可以输入多条语句,选中需要执行的,单击F9即可。第99页/共125页在做具体操作之前,首先切换至当前数据表所在的数据库。第100页/共125页单表查询练习:1. 查询出部门编号为30的所有员工SELECT * FROM emp WHERE deptno=30;2. 查询出所有销售员的姓名、编号和部门编号。SELECT ename,empno,deptno FROM emp WHERE job=salesman;3. 找出奖金高于工资的员工。SELECT * FROM emp WHERE commsal;4. 找出奖金高于工资30%的员工。SELECT * FROM
60、emp WHERE comm sal*0.3;第101页/共125页单表查询练习:5.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。SELECT * FROM emp WHERE (deptno=10 AND job=manager)OR(deptno=20 AND job=salesman);6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。SELECT * FROM emp WHERE (deptno=10 AND job=manager)OR(deptno=20 AND job=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵黄高速房屋拆迁安置合同
- 二零二五预付购房定金买卖合同
- 二零二五版工程款支付简单协议书
- 大班安全课:不能咬铅笔
- 2025安徽合肥现代职业技术学院合同教学楼结构安全检测
- 中医护理操作流程刮痧
- 2025简易版民间借贷合同模板
- 国企采购操作指南解读
- 2025年医疗机构医疗器械集中招标采购合同协议样本(合同版本)
- 2025企业租赁合同民间标准版
- 《社会主义核心价值观》优秀课件
- 髋关节的解剖-课件
- 公路工程施工现场安全检查手册
- 幼儿园绘本故事:《十二生肖》 课件
- (完整版)人教版小学3-6年级英语单词表-可直接打印
- 一例心肌梗塞患者的病例讨论培训课件
- GB∕T 13171.2-2022 洗衣粉 第2部分:试验方法
- 楷书(课件)课件
- 工程监理部人员分工与职责
- 课程设计 CA6140拨叉说明书
- 成语故事杞人忧天PPT教案
评论
0/150
提交评论