传智播客_韩顺平_Mysql数据库_第1页
传智播客_韩顺平_Mysql数据库_第2页
传智播客_韩顺平_Mysql数据库_第3页
传智播客_韩顺平_Mysql数据库_第4页
传智播客_韩顺平_Mysql数据库_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 phpphp数据库数据库(mysql)(mysql)编程编程讲师:讲师:韩顺平韩顺平高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平php 培训日志 从入门到精通主讲:韩顺平email:本章节的讲解:参考视频jdbc详解关于mysql数据库部分!高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp进阶进阶- -内容介绍内容介绍(一) 项目演示(二) php数据库编程-mysql2.1 mysql数据库-基础部分2.2 mysql数据库-加强部分1- mysql表类型和存储引擎- mysql中

2、事务处理2.3 mysql数据库-加强部分2- mysql表的基本查询加强- mysql表的复杂查询- 维护数据的完整性约束- mysql内连接、外连接2.4 mysql数据库-加强部分3- 维护数据的完整性约束- mysql表自增- mysql索引高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp进阶进阶- -雇员管理系统演示雇员管理系统演示高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp进阶进阶-oa(-oa(办公自动化办公自动化) )系统演示系统演示高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp数据库编程数据库编程-

3、mysql-mysql1. 数据库的基本概念2. mysql数据库的基本操作3. mysql的curd操作4. mysql常用函数5. php如何操作mysql数据库高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平学习目标学习目标1. mysql基本操作2. mysql简单的crud操作3. php操作mysql高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平一个问题一个问题淘宝网,天涯网,校友网, 雇员管理系统,留言本.都有各自的功能,那么当我们关闭系统的时候,下次再访问这些网站时,为什么他们各自的信息还存在?再比如c/s的软件,比如网游、qq、他们又是怎样保存数据的

4、? a.游戏积分 b.qq聊天记录.高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平 解决之道解决之道- -文件、数据库文件、数据库我们刚学习过文件,大家可能回答用文件就可以保存数据嘛!没有错,可以如果用文件保存数据存在几个缺点:(1)文件的安全性问题(2)文件不利于查询和对数据的管理(3)文件不利于存放海量数据(4)文件在程序中控制不方便高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平 解决之道解决之道- -文件、数据库文件、数据库 为了解决上述问题,专家们设计出更加利于管理数据的东东-数据库,它能更有效的管理数据。数据库是衡量一个程序员水平的重要指标。举一个生活化的

5、案例说明如果说 图书馆是保存书籍的,那么数据库就是保存数据的。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平 数据库简介n SQL Server、Oracle、n MySQL、DB2、n SyBase* 对当前主流数据库做一个比较介绍 MySQL数据库的安装和配置 使用命令行窗口连接MYSQL数据库n mysql h 主机名 u用户名 p密码启动mysql数据库的常用方式:l服务方式启动(界面) stop mysql服务名 net start mysql服务名高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平数据库服务器、数据库和表的关系数据库服务器、数据库和表的关系M

6、ySQLdbmsDBDB数据对象(表)数据对象(表)数据对象(表)Clientn所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。n为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。n数据库服务器、数据库和表的关系如图所示:高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平数据在数据库中的存储方式数据在数据库中的存储方式雇员表雇员表(employee)(employee)行行(row)(row)列列(column)(column)n表的一行称之为一条记录表的一行称之为一条记录n

7、表中一条记录对应一个表中一条记录对应一个phpphp对象的数据对象的数据高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SQLSQL语句分类语句分类DDL : 数据定义语句 (create alter drop)DML : 数据操作语句 (insert update delete)DQL : 数据查询语句(select)DCL : 数据控制语句(grant revoke commit rollback)小面试题:mysql数据库的sql语句分几类?高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平创建数据库创建数据库CREATE DATABASE IF NOT EXIST

8、S db_name create_specification , create_specification . create_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_name n CHARACTER SET:指定数据库采用的字符集:指定数据库采用的字符集n COLLATE:指定数据库字符集的比较方式:指定数据库字符集的比较方式练习练习:创建一个名称为创建一个名称为db1db1的数据库。的数据库。创建一个使用创建一个使用utf-8utf-8字符集的字符集的db2db2数据库。数据库

9、。 创建一个使用创建一个使用utf-8utf-8字符集,并带校对规则的字符集,并带校对规则的mydb3mydb3数据库数据库高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平查看、删除数据库查看、删除数据库显示数据库语句:SHOW DATABASES显示数据库创建语句:SHOW CREATE DATABASE db_name 数据库删除语句:DROP DATABASE IF EXISTS db_name 练习: 查看当前数据库服务器中的所有数据库 查看前面创建的db2数据库的定义信息 删除前面创建的db1数据库高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平修改、备份、恢

10、复数据库修改、备份、恢复数据库ALTER DATABASE IF EXISTS db_name alter_specification , alter_specification . alter_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_name| ENGINE|TYPE = engine_name /表存储引擎再事务是再讲解 备份数据库表中的数据备份数据库表中的数据mysqldump -u 用户名用户名 -p 数据库名数据库名 文件名文件名.sql 恢复数据库恢复数据库Sourc

11、e 文件名文件名.sql 练习练习1 查看服务器中的数据库,并把其中某一个库的字符集修改为查看服务器中的数据库,并把其中某一个库的字符集修改为utf8;2 备份备份test库中的数据,并恢复库中的数据,并恢复高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平体验体验Mysql-Mysql-安装安装ecshopecshop安装的时候,可能在创建管理员会报错误,解决方法如下: 重新设置date.timezone = PRC ,需要重新启动apache才能生效.Date; Defines the default timezone used by the date functions; ht

12、tp:/ = PRC高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平创建表创建表( (基本语句基本语句) )CREATE TABLE table_name(field1 datatype,field2 datatype,field3 datatype,)character set 字符集字符集 collate 校对规则校对规则 engine 存储引擎方式存储引擎方式field:指定列名datatype:指定列类型 注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:定义相应的列类型。例

13、:user表表id 整形整形 name 字符串字符串password 字符串字符串birthday 日期日期高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysql mysql 常用的数据类型常用的数据类型lVARCHAR、BLOB和和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度。类是变长类型。每个类型的存储需求取决于列值的实际长度。 分类数据类型说明数值类型BIT(M)TINYINT UNSIGNEDBOOL,BOOLEAN SMALLINT UNSIGNED INT UNSIGNED BIGINT UNSIGNED FLOAT(M,D) UNSIGNED DO

14、UBLE(M,D) UNSIGNED 位类型。M指定位数,默认值1,范围1-64带符号的范围是-128到127。无符号0到255。默认是有符号使用0或1表示真或假带符号是 负的 2的15次方 到 2的15次方-1 ,无符号 2的16方 -1带符号是 负的 2的31次方 到 2的31次方-1 ,无符号 2的32方 -1带符号是 负的 2的63次方 到 2的63次方-1 ,无符号 2的64方 -1 M指定显示长度,d指定小数位数表示比float精度更大的小数文本、二进制类型CHAR(size) char(20)VARCHAR(size) varchar(20)BLOB LONGBLOBTEXT L

15、ONGTEXT固定长度字符串 最大255可变长度字符串 最大65532 【在mysql5.0中最大21844】二进制数据大文本,不支持全文索引,不支持默认值,建议使用varchar时间日期DATE/DATETIME/TimeStamp日期类型(YYYY-MM-DD) (YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysql mysql 常用的数据类型常用的数据类型分类数据类型说明String类型ENUM类型SET类型ENUM是一个字符串对象,其值来自表创建

16、时在列规定中显式枚举的一列值。在某些情况下,ENUM值也可以为空字符串()或NULL:SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(,)间隔开。这样SET成员值本身不能包含逗号。SET最多可以有64个不同的成员可以使用FIND_IN_SET()函数或LIKE操作符搜索SET值高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysql mysql 字符集和校验规则字符集和校验规则 查询的乱码出现原因:lcharacter_set_clinet 设置和客户端实际发出的不一致.1.charset_set

17、_results 设置和客户端实际需要的编码不一致.高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysql mysql 字符集和校验规则字符集和校验规则 collate : 校对规则指: 在对某个字段排序时,按照怎样的规则来排序这里我们先简单举一个案例,大家了解即可. 请查看Mysql关于校对规则手册 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平创建表练习创建表练习n创建一个员工表字段字段属性属性IdId整形整形namename字符型字符型sexsex字符型或字符型或bitbit型型brithdaybrithday日期型日期型Entry_dateEntry_da

18、te日期型日期型jobjob字符型字符型SalarySalary小数型小数型resumeresume大文本型大文本型高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平修改表修改表l 使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.ALTER TABLE tablenameADD (column datatype DEFAULT expr , column datatype.);ALTER TABLE tablenameMODIFY (column datatype DEFAULT expr , column datatype.);ALTER TABLE tablen

19、ameDROP (column);修改表的名称:Rename tableRename table 表名 toto 新表名修改表的字符集:alter table student character set utf8;高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平修改表修改表练习练习n 在上面员工表的基本上增加一个在上面员工表的基本上增加一个image列。列。n 修改修改job列,使其长度为列,使其长度为60。n 删除删除sex列。列。n 表名改为表名改为user。n 修改表的字符集为修改表的字符集为utf-8n 列名列名name修改为修改为usernamealter table u

20、ser change column name username varchar(20);高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平帮助命令的使用帮助命令的使用在在mysql使用中,我们可能忘记一个使用中,我们可能忘记一个mysql命令的使用,我们可以通过命令的使用,我们可以通过 帮助命令帮助命令 ? 来查看相关命令的使用来查看相关命令的使用方式方式1. ? create 方式方式2? create table提示: 控制台给出的都是英文说明,如果英文不好,还是用mysql中文手册吧!高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平数据库数据库CRUDCRUD语句语

21、句n Insert语句 (增加数据)n Update语句 (更新数据)n Delete语句 (删除数据)n Select语句(查找数据)高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平InsertInsert语句语句INSERT INTOtablename (column , column.)VALUES(value , value.);l 使用 INSERT 语句向表中插入数据。 注意事项n插入的数据应与字段的数据类型相同。n数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。n在values中列出的数据位置必须与被加入的列的排列位置相对应。n

22、字符和日期型数据应包含在单引号中。字符和日期型数据应包含在单引号中。n插入空值,不指定或insert into table value(null)高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平InsertInsert语句练习语句练习字段名字段类型id整形name字符串型sex字符或整数类型birthday日期型salary浮点型entry_date日期型resume大文本型n注意:字符和日期要包含在单引号中。nshow variables like character%;nset character_set_results=gbk;练习:使用练习:使用insert语句向表中插入三

23、个员工的信息。语句向表中插入三个员工的信息。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平updateupdate语句语句UPDATE tbl_name SET col_name1=expr1 , col_name2=expr2 . WHERE where_definition 使用 update语句修改表中数据。 注意事项:nUPDATE语法可以用新值更新原有表行中的各列。nSET子句指示要修改哪些列和要给予哪些值。nWHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平updateupdate语句练习

24、语句练习练习:在上面创建的employee表中修改表中的纪录。要求将所有员工薪水修改为5000元。将姓名为zs的员工薪水修改为3000元。将wu的薪水在原有基础上增加1000元。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平deletedelete语句语句delete from tbl_name WHERE where_definition 使用 delete语句删除表中数据。 注意事项:n如果不使用where子句,将删除表中所有数据。nDelete语句不能删除某一列的值(可使用update)n使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句

25、。n同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。n删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同,参看mysql文档。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平deletedelete语句练习语句练习n 删除表中名称为zs的记录。n 删除表中所有记录。n 使用truncate删除表中记录。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(1)(1)SELECT DISTINCT *|column1, co

26、lumn2. column3.FROMtablename; 注意事项 (需要创建新的学生表)nSelect 指定查询哪些列的数据。ncolumn指定列名。n*号代表查询所有列。nFrom指定查询哪张表。nDISTINCT可选,指显示结果时,是否剔除重复数据l基本select语句高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(1)(1)练习:n 查询表中所有学生的信息。n 查询表中所有学生的姓名和对应的英语成绩。n 过滤表中重复数据。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(2)(2)SELECT

27、*|column1expression, column2expression,.FROMtablename;l在select语句中可使用表达式对查询的列进行运算l在select语句中可使用as语句SELECT columnname as 别名别名 from 表名表名;高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(2)(2)练习n在所有学生分数上加10分特长分(即查询所有学生总分再加10分)。n统计每个学生的总分。n使用别名表示学生分数。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(3)(3)n使用w

28、here子句,进行过滤查询。练习:n查询姓名为wu的学生成绩n查询英语成绩大于90分的同学n查询总分大于200分的所有同学高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(4)(4)在where子句中经常使用的运算符比较运算符 = = 大于、小于、大于(小于)等于、不等于BETWEEN .AND.显示在某一区间的值IN(set)显示在in列表中的值,例:in(100,200)LIKE 张张pattern模糊查询IS NULL判断是否为空逻辑运算符and多个条件同时成立or多个条件任一成立not不成立,例:where not(salary100);Li

29、ke语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like _a%;高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(4)(4)n 查询英语分数在 8090之间的同学。n 查询数学分数为89,90,91的同学。n 查询所有姓李的学生成绩。n 查询数学分80,语文分80的同学。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(5)(5)SELECT column1, column2. column3.FROMtable;order by column asc|descn使用or

30、der by 子句排序查询结果。n Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。n Asc 升序、Desc 降序n ORDER BY 子句应位于SELECT语句的结尾。n 练习:n对数学成绩排序后输出。n对总分排序后输出,然后再按从高到低的顺序输出n对姓李的学生成绩排序输出高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平合计函数合计函数countcountSelect count(*)|count(列名列名) from tablenameWHERE where_definition 练习:n统计一个班级共有多少学生?n统计数学成

31、绩大于90的学生有多少个?n统计总分大于250的人数有多少?nCount(列名)返回某一列,行的总数高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平合计函数合计函数sumsumSelect sum(列名列名),sum(列名列名) from tablenameWHERE where_definition n练习:n统计一个班级数学总成绩?n统计一个班级语文、英语、数学各科的总成绩n统计一个班级语文、英语、数学的成绩总和n统计一个班级语文成绩平均分n注意:sum仅对数值起作用,否则会报错。n注意:对多列求和,“,”号不能少。nSum函数返回满足where条件的行的和高级软件人才实作培训

32、专家高级软件人才实作培训专家主讲 韩顺平合计函数合计函数avgavgSelect sum(列名列名),sum(列名列名) from tablenameWHERE where_definition n练习:n求一个班级数学平均分?n求一个班级总分平均分nAVG函数返回满足where条件的一列的平均值高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平合计函数合计函数max/minmax/minSelect max(列名列名)from tablenameWHERE where_definition n练习:n求班级最高分和最低分(数值范围在统计中特别有用)nMax/min函数返回满足whe

33、re条件的一列的最大/最小值高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平SelectSelect语句语句(6)(6)SELECT column1, column2. column3. FROM table group by columnl练习:对订单表中商品归类后,显示每一类商品的总价l使用group by 子句对列进行分组SELECT column1, column2. column3.FROMtable group by column having .l使用having 子句过滤l练习:查询购买了几类商品,并且每类总价大于100的商品lHaving和和where均可实现过滤

34、,但在均可实现过滤,但在having可以使用合计函数可以使用合计函数,having通常跟在通常跟在group by后,它作用于组。后,它作用于组。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平时间日期相关函数时间日期相关函数CURRENT_DATE ( )当前日期当前日期CURRENT_TIME ( )当前时间当前时间CURRENT_TIMESTAMP ( )当前时间戳当前时间戳DATE (datetime )返回返回datetime的日期部分的日期部分DATE_ADD (date2 , INTERVAL d_value d_type )在在date2中加上日期或时间中加上日期或

35、时间DATE_SUB (date2 , INTERVAL d_value d_type )在在date2上减去一个时间上减去一个时间DATEDIFF (date1 ,date2 )两个日期差两个日期差(结果是天结果是天)TIMEDIFF(date1,date2)两个时间差两个时间差(多少小时多少分钟多少秒多少小时多少分钟多少秒)NOW ( )当前时间当前时间YEAR|Month|DATE (datetime )年月日年月日示例:select date_add(entry_date,INTERVAL 2 year) from student;增加两年* 特别注意date_add() date_s

36、ub() datediff() timediff() 参与运算的可以是date/datetime/timestamp均可 * 查看 mysql 的帮助文档即可知道 d_type有哪些高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平字符串相关函数字符串相关函数CHARSET(str)返回字串字符集返回字串字符集CONCAT (string2 ,. )连接字串连接字串INSTR (string ,substring )返回返回substring在在string中出现的位置中出现的位置,没有返回没有返回0UCASE (string2 )转换成大写转换成大写LCASE (string2 )

37、转换成小写转换成小写LEFT (string2 ,length )从从string2中的左边起取中的左边起取length个字符个字符LENGTH (string )string长度长度REPLACE (str ,search_str ,replace_str )在在str中用中用replace_str替换替换search_strSTRCMP (string1 ,string2 )逐字符比较两字串大小逐字符比较两字串大小,SUBSTRING (str , position ,length )从从str的的position开始开始,取取length个字符个字符LTRIM (string2 ) RT

38、RIM (string2 ) trim去除前端空格或后端空格去除前端空格或后端空格高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平数学相关函数数学相关函数ABS (number2 )绝对值绝对值BIN (decimal_number )十进制转二进制十进制转二进制CEILING (number2 )向上取整向上取整CONV(number2,from_base,to_base)进制转换进制转换FLOOR (number2 )向下取整向下取整FORMAT (number,decimal_places )保留小数位数保留小数位数HEX (DecimalNumber )转十六进制转十六进制

39、LEAST (number , number2 ,.)求最小值求最小值MOD (numerator ,denominator )求余求余RAND(seed)RAND(seed)rand()返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 v 1.0)。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平流程控制函数流程控制函数IF(expr1,expr2,expr3)如果如果expr1为为True ,则返回则返回 expr2 否则返回否则返回 expr3IFNULL(expr1,expr2)如果如果

40、expr1不为空不为空NULL,则返回则返回expr1,否则返回否则返回expr2SELECT CASE WHEN expr1 THEN expr2 ELSE expr3 END; 也可以多也可以多重分支重分支.如果如果expr1 为为TRUE,则返回则返回expr2,否则返回否则返回expr3随机设计案例,比如emp表的案例.来想一想吧!(根据职位不同来加薪的案例!) 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平其它函数其它函数USER()查询用户查询用户DATABASE()数据库名称数据库名称MD5(str)为字符串算出一个为字符串算出一个 MD5 128比特检查和比特检查

41、和,通常用通常用于对应用程序使用到的表的某个字段于对应用程序使用到的表的某个字段(比如用户密比如用户密码码)加密加密PASSWORD(str)从原文密码从原文密码str 计算并返回密码字符串计算并返回密码字符串,通常用于对通常用于对mysql数据库的用户密码加密数据库的用户密码加密高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql中文乱码中文乱码mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。n client是客户端使用的字符集。 n connection是连接数据库的字符

42、集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。 n database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。 n results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。 n server是服务器安装时指定的默认字符集设定。 n system是数据库系统使用的字符集设定。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp操作操作mysqlmysql数据库实例数据库实例/1.对对mysql完成查询完成查询,得到连接得到连接$conn=mysql

43、_connect(localhost,root,root);/选择数据选择数据mysql_select_db(hspdb1,$conn); /查询数据查询数据,返回结果返回结果$res=mysql_query(select * from users,$conn);/得到查询到多少记录得到查询到多少记录$recs=mysql_num_rows($res); echo 共共.$recs. 条记录条记录;/取出记录取出记录.while($row=mysql_fetch_array($res) /打印打印echo 编号编号:.$row0. 名称名称 .$row1. 邮件邮件.$row2. ;/添加记录

44、添加记录/ mysql_query(insert into users (name,email)values(abc1,beijing),$conn)/修改修改/mysql_query(update users set email= where id=4,$conn);/删除删除mysql_query(delete from users where id=4,$conn);echo 执行执行ok!;高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp数据库编程数据库编程(2)-mysql(2)-mysql1. mysql表类型和存储引擎2. mysql中事务处理高级软件人才

45、实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql表类型和存储引擎表类型和存储引擎介绍: MySQL的表类型由存储引擎(Storage Engines)决定,类型包括MyISAM、innoDB、BDB等。 MySQL 数据表主要支持六种类型 ,分别是:BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB。(参考mysql文档.)这六种又分为两类,一类是”事务安全型”(transaction-safe),包括BDB和InnoDB;其余都属于第二类,称为”非事务安全 型”(non-transaction-safe)。显示当前数据库支持的存储引擎:show engi

46、nes;高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql表类型和存储引擎表类型和存储引擎高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql表类型和存储引擎表类型和存储引擎我这里重点给大家介绍三种: MyISAM、InnoDB、MEMORY (Heap) MyISAM不支持事务、也不支持外键,但其访问速度快,对事 务完整性没有要求 InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事 务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。 MEMORY存储引擎使用存在内存中

47、的内容来创建表。 每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉 。 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql表类型和存储引擎表类型和存储引擎 案例说明:对前面我们提到的三种存储引擎,我们举例说明: 如何选择表的存储引擎如果你的应用是不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择一般来说,如果需要事务支持,并且有较高的并发读写 频率,InnoDB是不错的选择。 Heap 存储引擎就是将数据存储在内存中,由于没有磁

48、盘I./O的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。(经典用法 用户的在线状态.) 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql表类型和存储引擎表类型和存储引擎 修改存储引擎ALTER TABLE 表名 ENGINE = 储存引擎; 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql中事务处理中事务处理 什么是事务什么是事务事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:网上转账就是典型的要用事务来处理,用以保证数据的一致性。当执使用co

49、mmit语句可以提交事务.当执行了commit语句子后,会确认事务的变化、结束事务、删除保存点、释放锁,当使用commit语句结束事务子后,其它会话将可以查看到事务变化后的新数据 提交事务提交事务当执行事务操作时(dml语句),mysql会在被作用的表上加锁,防止其它用户改表表的结构.这里对我们用户来讲是非常重要的。 事务和锁事务和锁高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql中事务处理中事务处理 回退事务回退事务在介绍回退事务前,我们先介绍一下保存点在介绍回退事务前,我们先介绍一下保存点(savepoint)的概念和作用的概念和作用.保存点是事务中的一点保

50、存点是事务中的一点.用于取消部分事务,当结束事务时,会自动的用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点删除该事务所定义的所有保存点.当执行当执行rollback时,通过指定保存点可以回退到指定的点时,通过指定保存点可以回退到指定的点,这里我们作这里我们作图说明图说明 mysql mysql 数据库控制台数据库控制台事务的几个重要操作事务的几个重要操作0) start transaction /开始一个事务开始一个事务 1) savepoint 保存点名 /设置保存点2) rollback to 保存点名 /取消部分事务3) rollback /取消全部事务4) com

51、mit /提交事务.高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp程序中事务处理程序中事务处理 php程序中如何使用事务程序中如何使用事务在php操作数据库时,为了保证数据的一致性,比如转帐操作(图):(1)从一个帐户减掉10$(2)在另一个帐户上加入10$,我们看看如何使用事务?高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql事务处理事务处理事务隔离级别事务隔离级别n多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。n 如果不考虑隔离性,可能会引发如下问题:1. 脏读2. 不可重复读

52、3. 幻读(虚读)高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql事务处理事务处理事务隔离级别事务隔离级别 事务隔离级别事务隔离级别概念:隔离级别定义了事务与事务之间的隔离程度。ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别(这是国际标准化组织定义的一个标准而已,不同的数据库在实现时有所不不同的数据库在实现时有所不同同):隔离级别隔离级别 脏读脏读 不可重复读不可重复读 幻读幻读 读未提交(Read uncommitted)VVV读已提交(Read committed)xVV可重复读(Repeatable read)xxV可串行化(Seriali

53、zable )xxxV 可能出现 x 不会出现 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql事务处理事务处理事务隔离级别事务隔离级别 事务隔离级别事务隔离级别我们待会举例一个案例来说明mysql的事务隔离级别. 以对account表的操作来说明上面的几种情况.脏读(脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。不可重复读(不可重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改修改或删除,每次返回不同的结果集,此时发生非重复读。幻读(幻读(phantom read):同一

54、查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql事务处理事务处理事务隔离级别事务隔离级别 1.查看当前会话隔离级别 select tx_isolation; 2.查看系统当前隔离级别 select global.tx_isolation; 3.设置当前会话隔离级别 set session transaction isolation level repeatable read; 4.设置系统当前隔离级别 set global transaction isolation l

55、evel repeatable read; 5. mysql 默认的事务隔离级别是 repeatable read ,一般情况下,没有特殊要求,没有必要修改(因为该级别可以满足该级别可以满足绝大部分项目需求绝大部分项目需求)高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql事务处理事务处理事务隔离级别事务隔离级别 mysql的事务隔离级的事务隔离级-案例案例 我们举例一个案例来说明mysql的事务隔离级别. 以对account表进行操作为例。mysql控制台mysql控制台高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql事务处理事务

56、处理事务隔离级别事务隔离级别 mysql的事务隔离级在的事务隔离级在php程序中如何使用程序中如何使用没有完成测试:connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);特别说明特别说明:java程序中Connection.XXXXXX有五个,但不是所有的数据库对有对应的五个事务隔离级别实现。在实际工作中,我们极少去修改各个数据库默认的隔离级别。 高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql中事务处理中事务处理事务的事务的acidacid特性特性 原子性(Atomi

57、city)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。 隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。 持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平phpphp数据库编程数据库编程(3)-mysql(3)

58、-mysql1. mysql表的基本查询加强2. mysql表的复杂查询3. 维护数据的完整性约束高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平mysqlmysql表的基本查询表的基本查询- -加强加强 介绍介绍 在前面我们讲过mysql表的基本查询,但是都是对一张表进行的查询,这在实际的软件开发中,还远远的不够。下面我们讲解的过程中,将模拟一个简单的公司管理系统,创建 三张表(emp,dept,salgrade)为大家演示如何进行多表查询,select语句在软件编程中非常的有用,希望大家好好的掌握。高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平 介绍主键和外键介绍

59、主键和外键 mysqlmysql表的基本查询表的基本查询- -加强加强高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平 查看表结构 查询所有列 查询指定列 如何取消重复行?查询查询SMITH 的薪水的薪水,工作工作,所在部门所在部门mysqlmysql表的基本查询表的基本查询- -加强加强高级软件人才实作培训专家高级软件人才实作培训专家主讲 韩顺平 使用算数表达式?显示每个雇员的年工资 使用列的别名select ename 姓名,sal*12 as 年收入 from emp; mysqlmysql表的基本查询表的基本查询- -加强加强高级软件人才实作培训专家高级软件人才实作培训专家

60、主讲 韩顺平 使用使用where子句子句?如何显示工资高于如何显示工资高于3000的员工的员工?如何查找如何查找1982.1.1后入职的员工后入职的员工?如何显示工资在如何显示工资在2000到到2500的员工情况的员工情况 如何使用如何使用like操作符操作符%: 表示表示0到多个字符到多个字符 _: 表示单个字符表示单个字符?如何显示首字符为如何显示首字符为S的员工姓名和工资的员工姓名和工资?如何显示第三个字符为大写如何显示第三个字符为大写O的所有员工的姓名和工资的所有员工的姓名和工资 在在where条件中使用条件中使用in ?如何显示如何显示empno为为 123,345,800.的雇员情

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论