• 1. 北京传智播客教育 www.itcast.cnMySQL数据库陈军
  • 2. 目标掌握MYSQL基本知识 学习数据库管理和操作 掌握数据库设计方法 熟练运用SQL编程语言
  • 3. 什么是数据库?
  • 4. 为什么是MySQL?常用的数据库:
  • 5. 关系型数据库实体结构+实体联系
  • 6. 关系型数据(RDBMS)的常用术语数据库 表 行 列 记录 字段 SQL
  • 7. MySQL架构C/S Client/Server,客户端/服务器
  • 8. 管理MySQL服务器作为Windows服务管理,服务(services.msc) Net start MySQL Net stop MySQL 直接运行mysqld服务器程序
  • 9. 操作MySQL通过MySQL客户端操作MySQL Mysql(mysql.exe) –hlocalhost –P3306 –uroot –p Exit quit \q 步骤: 1,连接,认证。 2,客户端发送操作指令到服务器端 3,服务器端处理请求指令 4,服务器端将处理结果返回给浏览器 5,客户端显示得到的结果
  • 10. 指令-SQL结构化查询语言SQL=DDL,DML(DQL+DML),DCL
  • 11. SQL之数据库操作语言创建数据库 Create database [if not exists] 数据库名 [数据库选项] 数据库名:可以是任意字符(目录可以创建成功),但特殊的字符需要使用反引号包裹。标识符的大小写区别于操作系统的大小写特征。 If not exists 表示在数据库不存在时创建。 数据库选项中,可以设定数据库字符集(character set utf8)和校对集(collate utf8_general_ci)。
  • 12. SQL之数据库操作语言查询已经存在的数据库: Show databases [like ‘pattern’] Like pattern 指的是显示符合哪些命名规则的。不存在指的是所有的数据库。 查询创建数据库的语句: Show create database db_name;
  • 13. SQL之数据库操作语言删除数据库 Drop database [if exists] db_name; If exists 表示数据库存在才删除。 当删除一个数据库时,同时删除该数据库相关的目录及其目录内容。
  • 14. SQL之数据库操作语言更新数据库选项信息 alter Database db_name 更新的表选项 (表选项与定义时是一致的)
  • 15. SQL之表操作创建表: Create table [if not exists] tbl_name (列定义) [表选项] Create table [if not exists] tbl_name like old_tbl_name; Create table [if not exists] tbl_name select 语句; 每当创建一个表,会在数据目录创建对应的文件保存表信息。
  • 16. SQL之表操作列定义: 列名 类型 [是否为空] [Default 默认值] [是否为自动增长] [是否为主索引或唯一索引] [comment 注释] [引用定义] 类型指的是 当前列所保存数据的类型。(简单的 int 整型,varchar字符串类型,需要指定最大长度) 每个列定义使用逗号分隔。
  • 17. SQL之表操作表选项,常用的表选项 表引擎:engine|type=引擎 表字符集与校对集 charset=字符集 collate=校对集 注释 comment=‘注释’
  • 18. SQL之表操作查询表: 查询数据库中存在的数据表 Show tables [from db_name] [like ‘pattern’]; 如果没有数据库名,则采用当前数据库,如果没有like则获得所有表。 查询当前表的定义语句: Show create table tbl_name; 查看当前表的列结构: Desc|describe tbl_name;(show columns from tbl_name);
  • 19. SQL之表操作删除表 Drop table [if exists] tbl_name; 注意,可以同时删除多个表名,表名之间使用逗号分割。
  • 20. SQL之表操作更新表 重命名,rename table tbl_name to new_tbl_name; 可以同时针对多个表进行重命名,甚至可以跨数据库。 更新表结构,alter table。可以提供对表选项和列定义的修改。
  • 21. SQL之表操作更新表结构——表选项管理 与新建表格一致对表选项重新设置。
  • 22. SQL之表操作更新表结构——列定义管理 增加列:Alter table tbl_name add column_definition。可以同时增加多个列,使用括号括起来多个列的定义。 删除列:alter table tbl_name drop column_name; 修改已有列定义:alter table tbl_name change old_column new_column_definition;或者Alter table tbl_name modify column_definition。其中change可以重命名列
  • 23. 简单的数据操作DML增加数据: Insert into tbl_name (字段列表) values (值列表); 查询数据: Select 字段列表 from tbl_name 检索条件; 删除数据: Delete from tbl_name 删除条件; 更新数据: Update tbl_name set 字段=值 列表 更新条件
  • 24. 字符集&校对集字符集:是一套字符与字符编码的集合。 字符,用于显示的抽象符号。 编码,计算机都是二进制存储,因此需要将显示符号转换成二进制数才能存储,每个字符所转换成的二进制数,就是字符编码。 常见的字符集&编码: Ascii字符集,GB2312字符集,gbk字符集,latin1字符集,unicode字符集等。
  • 25. MySQL字符集Show character set; 可以获得MySQL支持的所有字符集。 MySQL可以使用多种字符集保存数据。 MySQL,可以针对字段,表,数据库,服务器进行字符集的设置,还可以设定连接字符集(客户端与服务器端交互时)
  • 26. 服务器字符集数据字符集确定:
  • 27. 连接字符集连接字符集由以下三个部分组成:
  • 28. 校对规则指的是,当前字符集内,字符之间的比较关系。
  • 29. 列类型
  • 30. 数值型-整数类型类型字节最小值(有符号/无符号)最大值(有符号/无符号)TINYINT1-128/0127/255SMALLINT2-32768/032767/65535MEDIUMINT3-8388608/08388607/16777215INT/INTEGE4-2147483648/02147483647 /4294967295BIGINT8-9223372036854775808/09223372036854775807/18446744073709551615可使用unsigned控制是否有正负 可以使用zerofill来进行前导零填充 也存在 布尔bool类型,但是就是tinyint(1)的别名
  • 31. 数值型-小数类型类型存储空间(字节)最小值(理论)最大值(理论)FLOAT4-3.402823466E+383.402823466E+38DOUBLE8-1.7976931348623157E+3081.7976931348623157E+308DECIMAL变长,大致是每9个数字,采用4个字节存储。整数和分数分开计算M,最大是65 D,最大是30 默认是10,2 -(65个9)(+65个9)可以利用M,D控制数值范围;可以无符号; 可以zerofill;可以使用科学计数法
  • 32. 日期时间类型类型显示格式取值存储空间零值DATETIMEYYYY-MM-DD HH:MM:SS'1000-01-01 00:00:00'到'9999-12-31 23:59:59'80000-00-00 00:00:00TIMESTAMPYYYY-MM-DD HH:MM:SS是‘1970-01-01 00:00:00’到2038-01-19 03:14:0740000-00-00 00:00:00 DATEYYYY-MM-DD'1000-01-01'到'9999-12-3130000-00-00TIMEHH:MM:SS-838:59:59'到'838:59:59'300:00:00YEARYYYY1901到215510000
  • 33. 字符串类型类型最大长度备注char255Char(M),M字符数varchar65535,但需要1-2个保存信息,同时由于记录的限制,因此最大为65532编码不同字符数不同: Gbk<=32767 Utf8<=21845tinyText,text,mediumText,longtextL + n。L为最大长度 2^8+1, 2^16+2, 2^24+3, 2^32+4定义时,通常不用指定长度,可以自己计算。enum1、2。枚举选项量(65535)内部存储是整型表示。 字段值只能是某一个Set1、2、3、4、8。元素数量:64Binary,varbinary,blobBinary(char),varbinary(varchar),blob(text) 做类比二进制数据(字节而非字符)
  • 34. 列类型-如何选择参考原因:
  • 35. 定义列属性列属性,列约束
  • 36. 列属性-NULLNull,表示没有值。与任何数据不同。表示什么都没有。 Null | not null可以规定当前列,是否可以为null。 Null的操作: 插入值null。 判断null,需要使用 is null or is not null来判断,不能直接比较=null
  • 37. 列属性-defaultDEFAULT子句用于为列指定一个默认,当该字段不存在值时,会被启用。 默认值必须为一个常数,不能为一个函数或一个表达式 可以不存在default,但是mysql会判断: 如果该列可以为空,则默认值为null;如果不可以,则不设置默认值。
  • 38. 列属性-主键|唯一索引
  • 39. 列属性-自动增长Auto_increment,为新行生成唯一标识
  • 40. 实体之间的关系实现
  • 41. 外键约束Foreign key
  • 42. 存储引擎
  • 43. 范式-1NF属性不可再分,字段保证原子性讲师性别班级教室代课时间代课时间(开始,结束)韩忠康Malephp033110230天2013-03-31,2013-05-05韩忠康Malephp022810630天2013-02-28,2013-03-30韩顺平malePhp022810615天2013-03-31,2013-05-05讲师性别班级教室代课时间开始结束韩忠康Malephp033110230天2013-03-312013-05-05韩忠康Malephp022810630天2013-02-282013-03-30韩顺平malePhp022810615天2013-03-312013-04-20
  • 44. 范式-2NF不能出现部分依赖,增加单列关键字讲师P性别班级P教室代课时间开始结束韩忠康Malephp033110230天2013-03-312013-05-05韩忠康Malephp022810630天2013-02-282013-03-30韩顺平malePhp022810615天2013-03-312013-04-20IDP讲师性别班级教室代课时间开始结束1韩忠康Malephp033110230天2013-03-312013-05-052韩忠康Malephp022810630天2013-02-282013-03-303韩顺平malephp022810615天2013-03-312013-04-20
  • 45. 范式-3NF不能出现传递依赖IDP讲师性别班级教室代课时间开始结束1韩忠康Malephp033110230天2013-03-312013-05-052韩忠康Malephp022810630天2013-02-282013-03-303韩顺平malephp022810615天2013-03-312013-04-20IDP讲师班级代课时间开始结束1韩忠康php033130天2013-03-312013-05-052韩忠康php022830天2013-02-282013-03-303韩顺平php022815天2013-03-312013-04-20讲师性别韩忠康male韩顺平male班级教室Php0228106Php0331102
  • 46. 常用SQL-获取数据
  • 47. Select-select_expr,tbl_name
  • 48. select-where
  • 49. Select-group byId教师班级天数1韩信0331252李世民0228223韩信0228204韩非子0228155李世民033122如果需要查询 某个教室,或者 某个班级的代课情况 可以按照教师或班级 分组,右图中, 按教师分组
  • 50. 聚合(合计)函数Group function
  • 51. Select-havingId教师班级天数1韩信0331252李世民0228223韩信0228204韩非子0228155李世民033122按照教师分组后, 如果期望得到代课天数 大于40天的老师 思路就是,先分组计算 老师的代课天数,比较执行顺序
  • 52. Select-order byId教师班级天数1韩信0331252李世民0228225李世民0331223韩信0228204韩非子022815按照代课天数 进行降序排序
  • 53. Select-limitId教师班级天数1韩信0331252李世民0228225李世民0331223韩信0228204韩非子022815我只需要, 天数最多的两个记录分页的核心技术 就是 limit
  • 54. Select-选项
  • 55. Select-union联合
  • 56. Select-subquery子查询
  • 57. Subquery-子查询返回值
  • 58. Subquery-子查询位置
  • 59. Select-Join连接(连结)查询
  • 60. Select-into outfile结果导出
  • 61. insert & replace
  • 62. Load data infile导入
  • 63. Delete删除
  • 64. update
  • 65. 备份/还原
  • 66. 视图
  • 67. 事务
  • 68. 触发器触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象
  • 69. SQL编程
  • 70. SQL编程-变量
  • 71. SQL编程-函数
  • 72. SQL编程-内置函数
  • 73. SQL编程-自定义函数
  • 74. SQL编程-控制结构
  • 75. SQL编程-局部变量
  • 76. SQL编程-存储函数delimiter $$ create function x3 (n int) returns int begin return n*3; end $$ delimiter ;
  • 77. SQL编程-存储过程delimiter $$ create procedure count_student () begin select count(*) from student_info; end $$ delimiter ;
  • 78. 认证管理——用户管理添加用户 删除用户 给用户增加权限 移除用户权限
  • 79. 权限列表
  • 80. index
  • 81. 索引
  • 82. Explain
  • 83. Thank you!北京传智播客教育 www.itcast.cnFROM:陈军 QQ:375303563