- MySQL 是
最流行的关系型数据库管理系统
,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一
MySQL实战文章目录
- MySQL必会知识点梳理 (必看)
- 【介绍】
- 【数据类型】
- 【约束】
- 【常用命令】
- 【常用函数】
-
- 一. 数学函数
- 二. 字符串函数
-
- 1. CHAR_LENGTH(str)
- 2. CONCAT(s1,s2,…)
- 3. CONCAT_WS(x,s1,s2,…)
- 4. INSERT(s1,x,len,s2)
- 5. LOWER(str)和LCASE(str)、UPPER(str)和UCASE(str)
- 6. LEFT(s,n)、RIGHT(s,n)
- 7. LPAD(s1,len,s2)、RPAD(s1,len,s2)
- 8. LTRIM(s)、RTRIM(s)
- 9. TRIM(s)
- 10. TRIM(s1 FROM s)
- 11. REPEAT(s,n)
- 12. SPACE(n)
- 13. REPLACE(s,s1,s2)
- 14. STRCMP(s1,s2)
- 15. SUBSTRING(s,n,len)、MID(s,n,len)
- 16. LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1)
- 17. REVERSE(s)
- 18. ELT(N,str1,str2,str3,str4,…)
- 三. 日期和时间函数
-
- 1. CURDATE()、CURRENT_DATE()
- 2. CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()
- 3. UNIX_TIMESTAMP()、UNIX_TIMESTAMP(date)
- 4. FROM_UNIXTIME(date)
- 5. UTC_DATE()和UTC_TIME()
- 6. MONTH(date)和MONTHNAME(date)
- 7. DAYNAME(d)、DAYOFWEEK(d)、WEEKDAY(d)
- 8. WEEK(d)
- 9. DAYOFYEAR(d)、DAYOFMONTH(d)
- 10. YEAR(date)、QUARTER(date)、MINUTE(time)、SECOND(time)
- 11. EXTRACE(type FROM date)
- 12. TIME_TO_SEC(time)
- 13. SEC_TO_TIME()
- 14. DATE_ADD(date,INTERVAL expr type)、ADD_DATE(date,INTERVAL expr type)
- 15. DATE_SUB(date,INTERVAL expr type)、SUBDATE(date,INTERVAL expr type)
- 16. ADDTIME(date,expr)、SUBTIME(date,expr)
- 四. 条件判断函数
- 五. 系统信息函数
- 六. 加密函数
- 七. 其他函数
- 【SQL实战练习】
-
- 创建数据库
- 创建表(并初始化数据)
- 表结构
- 习题
-
- 1. 查询"01"课程比"02"课程成绩高的学生的信息及课程分数
- 2. 查询"01"课程比"02"课程成绩低的学生的信息及课程分数
- 3. 查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
- 4. 查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
- 5. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
- 6. 查询"流"姓老师的数量
- 7. 查询学过"流浪法师"老师授课的同学的信息
- 8. 查询没学过"张三"老师授课的同学的信息
- 9. 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
- 10. 查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
- 11. 查询没有学全所有课程的同学的信息
- 12. 查询至少有一门课与学号为"01"的同学所学相同的同学的信息
- 13. 查询和"01"号的同学学习的课程完全相同的其他同学的信息
- 14. 查询没学过"邪恶小法师"老师讲授的任一门课程的学生姓名
- 15. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
- 16. 检索"01"课程分数小于60,按分数降序排列的学生信息
- 17. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
- 18. 查询各科成绩最高分、最低分和平均分:
- 19. 按各科成绩进行排序,并显示排名(实现不完全)
- 20. 查询学生的总成绩并进行排名
- 21. 查询不同老师所教不同课程平均分从高到低显示
- 22. 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
- 23. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
- 24. 查询学生平均成绩及其名次
- 25. 查询各科成绩前三名的记录
- 26. 查询每门课程被选修的学生数
- 27. 查询出只有两门课程的全部学生的学号和姓名
- 28. 查询男生、女生人数
- 29. 查询名字中含有"德"字的学生信息
- 30. 查询同名同性学生名单,并统计同名人数
- 31. 查询1990年出生的学生名单
- 32. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
- 33. 查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
- 34. 查询课程名称为"数学",且分数低于60的学生姓名和分数
- 35. 查询所有学生的课程及分数情况
- 36. 查询任何一门课程成绩在70分以上的姓名、课程名称和分数
- 37. 查询不及格的课程
- 38. 查询课程编号为01且课程成绩在80分以上的学生的学号和姓名
- 39. 求每门课程的学生人数
- 40. 查询选修"死亡歌颂者"老师所授课程的学生中,成绩最高的学生信息及其成绩
- 41. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
- 42. 查询每门功成绩最好的前两名
- 43. 统计每门课程的学生选修人数(超过5人的课程才统计)
- 44. 检索至少选修两门课程的学生学号
- 45. 查询选修了全部课程的学生信息
- 46. 查询各学生的年龄
- 47. 查询本周过生日的学生
- 48. 查询下周过生日的学生
- 49. 查询本月过生日的学生
- 50. 查询下月过生日的学生
- 【阿里巴巴开发手册】
MySQL必会知识点梳理 (必看)
- MySQL面试题链接:精品MySQL面试题,备战八月99%必问!过不了面试算我的
评论区评论要资料三个字即可获得MySQL全套资料 !
【介绍】
什么是数据库
- 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
- 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
- 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
MySQL数据库
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL 是开源的,目前隶属于 Oracle 旗下产品。
- MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- MySQL 使用标准的 SQL 数据语言形式。
- MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
- MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
- MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
- MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
RDBMS 术语
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的
关系型
可以理解为表格
的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格
数据库表的存储位置
MySQL数据表以文件方式存放在磁盘中:
- 包括表文件、数据文件以及数据库的选项文件
- 位置:MySQL安装目录data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表
注:
InnoDB
类型数据表只有一个*. frm文件,以及上一级目录的ibdata1文件
MylSAM
类型数据表对应三个文件:
- *. frm —— 表结构定义文件
- *. MYD —— 数据文件
- *. MYI —— 索引文件
存储位置:因操作系统而异,可查my.ini
【数据类型】
- MySQL提供的数据类型包括数值类型(整数类型和小数类型)、字符串类型、日期类型、复合类型(复合类型包括enum类型和set类型)以及二进制类型 。
一. 整数类型
- 整数类型的数,默认情况下既可以表示正整数又可以表示负整数(此时称为有符号数)。如果只希望表示零和正整数,可以使用无符号关键字“unsigned”对整数类型进行修饰。
- 各个类别存储空间及取值范围。
二. 小数类型
-
decimal(length, precision)用于表示精度确定(小数点后数字的位数确定)的小数类型,length决定了该小数的最大位数,precision用于设置精度(小数点后数字的位数)。
-
例如: decimal (5,2)表示小数取值范围:999.99~999.99 decimal (5,0)表示: -99999~99999的整数。
-
各个类别存储空间及取值范围。
三. 字符串
- char()与varchar(): 例如对于简体中文字符集gbk的字符串而言,varchar(255)表示可以存储255个汉字,而每个汉字占用两个字节的存储空间。假如这个字符串没有那么多汉字,例如仅仅包含一个‘中’字,那么varchar(255)仅仅占用1个字符(两个字节)的储存空间;而char(255)则必须占用255个字符长度的存储空间,哪怕里面只存储一个汉字。
- 各个类别存储空间及取值范围。