MySQL
基础概念
数据(Data):文本,数字,图片,视频,音频等多种表现形式,能够被计算机存储和处理。
**数据库(Data Base—简称DB):**存储数据的仓库,位于计算机存储上设备之上,数据按照一定格式存放的。
**数据库管理系统(DataBase Management System,简称DBMS)😗*用于建立、使用和维护数据库。是管理数据库的软件。
**数据库系统(DataBase System,简称DBS)😗*是一个完整的数据操作链路,包含从用户到数据的所有内容。
三者之间的关系:
数据库系统中的核心是数据库管理系统
数据管理发展史
第一阶段:人工管理阶段(入学填写纸质档案)
第二阶段:文件系统阶段(将信息录入Excel表)
第三阶段:数据库管理系统阶段(将excel表导入校园管理系统)
数据库系统的特点
1.数据结构化
2.数据共享性
3.数据独立性
4.DBMS统一管理
数据模型
数据模型的组成
数据结构:根据对象与对象之间的关系划分为不同的结构模型,如层次模型,网状模型和关系模型。
数据操作:包含数据的查询与更新(增删改)
数据的完整性约束条件:保证数据库中数据的正确,有效和相容。
概念模型
实体:现实世界中实际存在的物体将之虚拟到计算机中,称为实体。例如:一个人,一条狗
属性:实体中所包含的某一特征,实体可以有多个属性。例如:人的身高,体重,年龄
码:表示实体的属性集, 多个相同实体的共同特征。
实体型:具有相同属性的实体具有共同的特征和性质,用实体名和属性抽象为实体,称为实体型。
实体集:同一类型的实体集合称为实体集。
关系:一对一(学生—学号),一对多(班级------学生),多对多(学生------课程)
逻辑模型
逻辑模型只针对数据内容中所有实体,实体的属性以及实体间的关系的设计,并不涉及这些数据的具体实现。
物理模型
描述数据在系统内部的表示方法和存在方式,是具体实现数据库管理的模型。
逻辑模型分类
层次模型:
网状模型:
关系模型:
关系:一张表
元组:一行数据
属性:表中字段
域:字段的取值范围
关键字:标志数据唯一性的字段
主关键字:多个字段做关键字时,选定其中的一个。
外部关键字:某字段在当前表中不是主关键字,确实另一张表中的主关键字(例如,成绩表中的学号)
候选关键字:能唯一标识表中行的列,称为候选关键字。
关系模型中二维表应满足的条件
- 表中不允许有重复的字段名。
- 表中每一列数据的数据类型必须相同
- 表中不允许有两条完全相同的数据
- 表中行的排列次序以及列的排列次序可以任意,且不影响表中的关系
数据库系统的三级模式
- 模式:也称为逻辑模式,是数据库系统模式结构的中间层。一个数据库只有一个模式。
- 外模式:连接应用程序和用户,一个数据库可以有多个外模式。
- 内模式:数据物理结构和存储方式的描述,一个数据库自由一个内模式。
数据库的种类
- 关系型数据库:mysql(开源)、Oracle(收费)、visual foxpro、oceanbase、sqlserver(财务系统)
- 非关系型数据库:redis,mongodb-------作为缓存使用
Mysql发展史
mysqlAB-------》sun公司----------》oracle
Mysql特点
- 开源免费
- 容易使用
- 高性能
- 功能强大
- 运行速度快
- 数据安全
- 支持跨平台
- 丰富的接口
mysql应用
- 数据分析
- 数据库集群
- Web开发
- 应用程序
- 数据库管理
mysql版本
- 社区版
- 商业版
mysql安装
- 使用安装包
- 解压版
环境变量的配置
鼠标右键计算机------>属性
![]()
点击高级系统设置
![]()
点击环境变量
![]()
编辑Path(将mysql安装路径添加至path中)
![]()
D:\database\mysql-5.6.40-winx64\mysql-5.6.40-winx64\bin\
mysql服务的启动与停止
视图方式
命令方式
net start mysql --启动 net stop mysql --停止
使用Mysql客户端登录服务
1.没有配置环境变量情况下,先打开mysql安装目录,打开bin文件夹,执行登录口令
2.配置了环境变量情况下直接执行口令即可
登录语法:mysql -u用户名 [-h主机名] -p密码 [-P端口号] mysql -uroot -h127.0.0.1 -p123456 -P3306 -- root表示用户名 -- 127.0.0.1表示本机IP,也可使用localhost代替 -- 123456mysql登录密码 -- 3306表示MySQL端口号 -- 如果登录本机数据库,ip和端口号可以省略不写
完整操作步骤
1.打开cmd命令符操作界面,输入cmd回车
win+r
2.登录mysql服务
mysql -uroot -p 输入密码
3.查看数据库列表
show databases;
4.打开mysql数据库
use mysql;
5.展示当前库所有数据表
show tables;
6.查询user表中记录
select * from user;
7.退出mysql
1.exit 2.quit 3.\q
数据库图形化管理工具
- Navicat
- SQLyog
- Datagrip
- Workbench
Navicat连接mysql
软件运行流程
SQL(结构化查询语言)
结构化查询语言分类
-
DDL(数据定义语言):对数据库、表、视图、索引等数据库对象进行创建、删除、修改操作。
-
DML(数据操作语言):对数据进行增删改的操作
-
DQL(数据查询语言):对数据进行查询的
-
DCL(数据控制语言):用来管理数据库的语言,包括管理权限及数据更改
SQL类型 命令动词 功能描述 数据定义语言DDL create 创建 drop 删除 alter 修改 数据操作语言DML insert 新增数据 delete 删除数据 update 修改数据 数据查询语言DQL select 查询数据 数据控制语言DCL grant 为用户增加权限 revoke 为用户收回权限 SQL语言的特点
- SQl语言是一种一体化的语言。
- SQL语言是一个高度非过程化的语言。
- SQL语言非常简洁。
- SQL语言技能使用命令方式交互使用也可以嵌入到程序内部以程序方式运行。
SQL语法规则
- sql语句可以写在一行或者多行。较长的sql语句分成多行书写,必要时进行缩进。
- 每条命令以“;”或者“\g”或“\G”结束。
- 关键字不能缩写,也不能分行书写。
- 必须保证所有的括号,单引号、双引号成对出现。
- mysql再windows环境下不区分大小写,但是在Liunx系统中区分大小
- 注释分为单行注释和多行注释
- 单行注释:-- 注释内容
- 多行注释:/注释内容/
MySQL数据类型
类型 | 详细分类 | 类型举例 |
---|---|---|
数值类型 | 整数类型 | int、smallint、tinyint、bigint、mediumint |
浮点数类型 | float、double | |
定点数类型 | decimal | |
位类型 | bit | |
日期和时间型 | 日期和时间型 | datetime、year、time、date、timestamp(时间戳) |
字符串类型 | 文本字符串类型 | char、varchar、tinytext、text、mediumtext、longtext |
枚举、集合类型 | enum、set | |
二进制字符串类型 | binary、varbinary、tinyblob、blob、mediublod、longblob |
整数类型
取值范围:tinyint、smallint、mediumint、int、bigint
符号取值:
int 取值范围:0~4294967295 int unsigned 取值范围:-2147483648~2147483647
显示宽度:
tinyint (3) :括号中的数字用来指定该字段的显示长度,显示长度并不会影响真正的取值范围。
默认值填充
int(3) zerofill :定义为整型变量后未赋值情况下,使用0做填充。
类型的选择:
- 确定字段取值范围
- 确定值是否有负数
小数类型
取值范围:float、double、decimal(M,D)
decimal(M,D)
M:精度,表示数字的总位数。 取值范围:0~255
D:标度,表示小数点后的位数。 取值范围:0~30
日期和时间型
year类型:1901~2155
date类型:YYYYY-MM-DD、YYYY/MM/DD、YYYY\MM\DD、YYYY.MM.DD、YYYY,MM,DD
time类型:HH:MM:SS
datetime:YYYYY-MM-DD HH:MM:SS
timestemp:显示从1970到现在所经过的毫秒数。
字符串类型
char: 定长字符串
char(长度):长度取值范围1~255
![]()
varchar:变长字符串
varchar(最大长度):最大长度取值范围:1~21845
![]()
char与varchar区别:
char与varchar类型都可以指定长度,(字符数)。
当输入的字符长度大于指定的字符长度时,系统报错。当输入的字符小于指定长度时,char类型使用空格填充,varchar保留实际长度+1。
char类型最大长度255,varchar类型最大长度21845。
char类型查询效率高于varchar类型。
二进制类型字符串
binary:固定长度,参考char
varbinary:可变长度,参考 varchar
文本类型
text:保存的是非二进制的长文本数据,例如文章内容、评论等比较长的文本。
子类型:tinytext、text、mediumtext、longtext
blob:保存数据量很大的二进制数据,如图片、声音、视频一级扫描文档。
子类型:tinyblob、blob、mediumblob、longblob
text与blob的区别
- text以文本形式存储数据,blob以二进制方式存储。
- text不区分大小写,blob区分大小写
- 字符集对text有影响,对blob没有影响
- text和blob执行效率低于char和varchar类型
枚举和集合类型
enum:枚举类型
格式:ENUM(‘值1’,‘值2’,‘值3’…)
枚举列表最多可以存储65535个值
ENUM(‘男’,‘女’)
set:集合类型
格式:SET(‘值1’,‘值2’,‘值3’…)
集合列表最多可以存储64个值。
SET(‘唱歌’,‘跳舞’,‘打篮球’)
枚举和集合的区别
- 枚举只支持单选,集合支持多选
- 只能插入规定的数据项,节省空间,提高查询效率
- 枚举和集合都支持中文
- 插入和查询操作时自动忽略末尾空格。
mysql运算符
-
算术运算符
运算符 书写格式 功能 + n1+n2 加法运算 - n1-n2 减法运算 * n1*n2 乘法运算 /或div(整除) n1/n2 或 n1 div n2 除法运算 mod或% n1 mod n2 或n1%n2 取余运算 取余注意:
-
如果n1的绝对值能被n2的绝对值整除,余数为零。
-
n1与n2取余时,所得余数的符号与被除数n1的符号相同。
-
小数也能实现取余(求模)操作。
-
-
运算过程中只要有null参与也运算,那么最终结果就为null。
-
-
如果除法或取余运算除数为零时,系统不报错,结果为null。
-
-
-
比较运算符
运算符 功能 >、>= 判断大于、大于等于 <、<= 判断小于、小于等于 = 等值判断 <>、!= 判断不等于 <=> 判断是否为null in、not in 判断是否包含 is null、is not null 判断是否为空 between and、not between and 范围判断 like、not like 字符串匹配判断 regexp 正则表达式判断 注意:
- 比较运算符可用于多种数据类型的比较。
- 比较运算符返回值为逻辑型,可分为三种,分别是1(表示True)、0(表示False)、null。
- 比较字符串时,不区分大小写。
- null值与任何类型的内容进行运算时,结果都为null。
-
逻辑运算符
运算符 功能 && 或 and 运算符左右两边同时为真,结果才为真,其他情况都为假 || 或 or 运算符左右两边有一个结果为真,最终结果几位真。 ! 或 not 取反 XOR(异或) 运算符左右两边的结果相反,最终结果为真。否则结果为假。 注意:
- 逻辑与运算时,如果操作数中含有null,另一个操作数为真,结果为null,如果另一个操作数为假,结果为0
- 逻辑或运算时,如果操作数中含有null,另一个操作数为真,结果为1,如果另一个操作数为假时,结果为null
- 异或运算中,操作数中含有null,结果为null。
-
运算符优先级
优先级 运算符 1 ! 2 +(正号)、-(负号) 3 ^(幂次方) 4 *、/、DIV、%(mod) 5 +、- 6 =、>、<。。。。关系运算符 7 between…and… 8 not 9 &&、and 10 XOR 11 ||、or 12 =(赋值) mysql函数
-
聚合函数
函数格式 功能 count(*) 计数函数,统计表中记录数 sum(字段名) 统计该字段名的和 avg(字段名) 统计该字段平均值 max(字段名) 统计该字段中最大值 min(字段名) 统计该字段中最小值 聚合函数通常需要配合group by分组语句使用。
-
数学函数
函数格式 功能 示例 sign(n) 符号函数,如果n为整数,返回值为1,如果n为负数,返回值为-1,如果n为0,返回值就为0 abs(n) **绝对值函数,**返回n的绝对值。 sqrt(n) **平方根函数,**返回n的平方根。n不能为负数,否则返回值为null。 mod(n1,n2) 取余函数,返回n1除以n2所得的余数。 ceil(n)或ceiling(n) 向上取整函数,返回大于或等于n的整数。 floor(n) 向下取整函数,返回小于或等于n的整数。 rand() 随机函数,返回0~1之间的随机数。获取指定范围随机数公式floor(下限+rand()*(上限-下限)) rand(n) 随机函数,返回0~1之间的随机数,n不变的话,每次返回的结果相同。 round(n) 四舍五入函数,将n进行四舍五入取整数。 round(n1,n2) 四舍五入函数,将n1四舍五入保留n2位小数。 format(n1,n2) 格式化函数,将n1四舍五入保留n2位小数,并将结果进行格式化“#,###,##”,结果以字符串形式返回。 truncate(n1,n2) 截断函数,将n1保留n2位小数,不四舍五入 pow(n1,n2)或power(n1,n2) 返回n1的n2次方 exp(n) 指数函数 log(n) 对数函数 log10(n) 对数函数,以10为底数 PI() 圆周率函数 radians(n) 将角度转换为弧度 degress(n) 将弧度在转换为角度 sin(n) 正弦函数 asin(n) 反正弦函数 cos(n) 余弦函数 acos(n) 反余弦函数 tan(n) 正切函数 atan(n) 反正切函数 cot(N) 正切函数 greatest(n1,n2,n3…) 返回列表中最大值 least(n1,n2,n3…) 返回列表中最小值 -
字符串函数
函数名 功能 示例 upper或ucase 将字符串中小写字母转换为大写 lower或lcase 将字符串中大写字母转换为小写 left(字符串,数值) 将字符串从左往右取n个字符 right(c,n) 将字符串从右往左取n个字符 substring(字符串,数值1,数值2)或mid(c,n1,n2) 将字符串从n1位置开始截取n2个长度的字符 ltrim© 去除字符串左边开头的空格 rtrim© 去除字符串右边结尾的空格 trim© 将字符串中头尾的空格删除掉 trim(c1 from c) 删除字符串c开始和结尾处的字符串c1 reverse© 将字符串倒序返回 concat(c1,c2…) 将括号中的字符串合并为一个字符串 concat_ws(x,c1,c2…) 使用x作为连接符连接各个字符串 char_length© 返回字符串的字符数。一个汉字为一个字符。 length© 返回字符串的字节数,gbk中一个汉字占用2个字节,utf-8中一个汉字占用3个字节。 position(c in c1)或locate(c,c1) 返回字符串c在c1中的第一次出现位置。 instr(c,c1) 返回字符串c1在c中第一次出现的位置 field(c,c1,c2…) 返回字符串c字符串列表中的位置。 find_in_set(c,c1) 返回c在含有英文逗号分隔的字符串c1中出现的位置。 elt(n,c1,c2…) 返回多个字符串中的第n个。 replace(c,c1,c2) 将c字符串中的c1字符替换为c2 insert(c1,n1,n2,c2) 使用字符串c2替换c1中第n1个位置开始的长度为n2的字符串,c1中第一个字符位置为1 Lpad(c1,n,c2) 使用字符串c2填充c1的开始处,使字符串长度达到n rpad(c1,n,c2) 使用字符串c2填充在c1的结尾处,使字符串长度达到n repeat(c,n) 将字符串重复n次 space(n) 返回n个空格 ord©或ascii© 返回字符串中第一个租房有的ASCII码 char(n) 返回ASCII码对用的字符 strcmp(c1,c2) 比较两个字符串,如果c1大于c2,返回1;如果c1等于c2返回0;c1小于c2返回-1; -
日期和时间函数
函数 功能 示例 curdate()或current_date() 返回当前日期 curtime或current_time 返回当前的时间 now()或current_timestamp或sysdate() 返回当前的日期和时间 localtime()或localtimestamp() 返回当前的日期和时间 date(d) 返回表达式中的日期值 time(t) 返回表达式中的时间值 year(d) 返回表达式中的年份 month(d) 返回表达式中的月份 day(d) 返回表达式中的日期值 monthname(d) 返回表达式中月份的名称 dayname(d) 返回表达式中对应的星期名称 dayofyear(d) 返回日期是本年的第几天 dayofmonth(d) 返回日期是本月的第几天 dayofweek(d) 返回日期是本周的第几天 week(d) 返回表达式中的日期是本年的第几周 weekofyear(d) 同上(周一为第一天) quarter(d) 返回表达式日期是本年的第几个季度 hour(t) 返回小时数 minute(t) 返回分钟时 second(t) 返回秒数 adddate(d,n) 返回起始日期加上n天后的日期 subdate(d,n) 返回起始日期减去n天后的日期 addtime(t,n) 返起始日期时间t加上n秒后的日期 subtime(t,n) 返回起始日期时间减去n秒后的日期 datediff(d1,d2) 计算算两个日期相差的天数 timediff(t1,t2) 计算两个日期时间之间相差的秒数 -
系统信息函数
函数 功能 演示 version 查看mysql版本号
-