今天的内容比较少,以后有时间再去补充
PS:已经补充了安装过程中最坑爹的字符问题的解决办法
MYSQL 列(字段),除字段名那行外,每一行称为记录
模型是现实中事物特征 和事物行为 的抽象,
模型分为:数学模型、描述模型、图像模型等
数据建模:事物特征的抽象,例子:数据库设计
业务建模:事物行为的抽象,例子:程序设计
E-R图(实体-关系图)
实体、关系、属性
基数、元(关联实体的个数)和关联
主键:表的唯一标识,一般是一个字段
复合主键:表中多个字段的集合
外键: A表内字段a对应另一个表的主键b,则字段a称为A的外键
函数依赖: 字段a唯一确定字段b,则字段b函数依赖于字段a。
第一范式(1NF): 满足数据库基本要求,不冲突
第二范式(2NF): 基于第一范式,每个“非关键字”字段仅仅函数依赖于主键(主键是一个字段一般都满足2NF)
第三范式(3NF): 不存在“非关键字”字段函数依赖于任何其他“非关键字”字段。
未完待续。。。
补充
=
概念模型到逻辑模型(数据库设计人员要做的事情),逻辑模型到物理模型(DBMS要做的事情)
信息世界的基本概念:实体、属性、码、域、实体型、实体集、联系
图形表示:
实体用矩形、属性用椭圆、联系用菱形
关系模型 | 概念 |
---|---|
关系 | 二维表 |
元组 | 一行 |
属性 | 一列 |
主码 | 唯一确定的一个元组 |
域 | 属性取值范围 |
分组 | 元组中一属性值 |
数据独立性:逻辑独立性、物理独立性
码:
候选码:属性唯一标识一个元组
主码:多个候选码中的一个
全码:所有属性组共同组成的候选码
五种基本操作:
选择、投影、并、差、笛卡儿积
R(关系名)、U(组成该关系的属性名集合)、D(属性域)、DOM(映像集合)、F(属性间数据依赖关系集合)
常见的定义约束条件: 主键约束、外键约束、唯一性约束、非空约束、检查约束、(Mysql暂不支持)、默认值约束
MYSQL的基础知识
MYSQL :单进程多线程、支持多用户、基于C/S
MYSQL使用流程:
一、操作系统启动MYSQL服务
二、MYSQL启动期间,将MYSQL配置文件中的参数信息读入MYSQL服务器内存
三、根据MYSQL配置文件的参数信息或者编译MYSQL时参数的默认值生成一个MYSQK服务实例进程
四、MYSQL服务实例进程派生出多个线程为多个MYSQL客户机提供服务
五、数据库用户访问MYSQL服务器的数据时,首先需要登陆一台主机,然后在主机上开启MYSQL客户机,输入账号密码,建立一条MYSQL客户机域服务器之间的“通信链路”
六、接着数据库用户就可以在MySQL客户机上书写MySQL命令或者语句,这些将会通过通信链路传送给MySQL服务实例,此过程称为Mysql客户机向MySQL服务器发送请求
七、MySQL服务实例负责解析这些命令和语句,并计划执行,然后将结果返回给MYsql客户机,此过程称为MYsQL服务器向MYSQL客户机返回响应。
八、数据库用户关闭MySQL客户机,通信链路断开,该客户机对应的会话结束
注意: 因为MYSQL是单进程多线程的,所以一台主机可以开启多个MYSQL客户机,进行多个MYSQL会话(session)
MYSQL服务: 是保存在MySQL服务器硬盘上的一个服务软件,实际上是静态的代码集合
MYSQL服务实例: 是一个正在运行的MySQL服务,其实质是一个进程,只有处于运行状态的服务实例才可以响应MySQL客户机的请求
MySQL服务器 : 一台硬件设备
MYSQL的InnoDB存储引擎(支持事务处理):主要面向在线事务处理(OLTP),例如:银行转账等服务
MYSQL的MyISAM存储引擎(以高速著称):主要面向在线分析处理(OLAP),例如天气查询等
MYSQL的字符集和字符序
字符集:。。。
字符序:在同一字符集中字符之间的比较规则。以ci结尾的大小写不敏感,以cs结尾的大小写敏感,以bin结尾的表示字符集按二进制编码值比较。
MySQL默认使用Latin1字符集,使用show character set; 可查看支持的字符集
使用 show variables like ‘character%’; 可查看当前会话使用的字符集
MySQL字符集的转换过程
一、在命令提示符窗口输入MySQL命令或SQL语句,回车后,由命令提示符窗口转换为character_set_client定义的字符集
二、使用命令提示符窗口连接成功MySQL服务器后,进入数据通信链路由character_set_client定义的字符集转换为character_set_connection定义的字符集
三、MySQL服务实例将character_set_connection定义的字符集转换为 character_set_server定义的字符集
四、若MySQL语句针对的是某个数据库进行操作,则此时将 character_set_server定义的字符集转换为 character_set_database
定义的字符集
五、MySQL语句执行结束后,将执行结果设置为character_set_results定义的字符集,
六、执行结果沿着已打开的数据通信链路原路返回,依次是 character_set_connection、character_set_client、命令提示符窗口。
注意: my.ini 配置文件中的
[mysql]
/* 设置mysql客户端默认字符集,包括character_set_connection、character_set_client、character_set_results */
default-character-set=utf8
[mysqld]
# character_set_server
character-set-server=utf8
MySQL字符集的设置
大家都知道,MySQL默认的字符集是Latin1,我就是坑爹的这个,所以一般有以下几种办法改变字符集
方法一
修改my.ini 中的配置文件,具体请看我的前一篇文章中的设置5.7.20版MYSQL从安装到坑爹,但是本人是不建议的,因为5.7.20版本似乎总是出现一些小小的error,所以这种设置暂且不用理会
方法二
使用临时的修改,通过MySQL命令行去修改,只能够确保当前会话修改成功,重启后又会失效
实战:
查看字符集
查看字符序
本人的比较坑爹,于是采用临时办法修改字符集,成功。
临时修改字符序,成功。
重点来了。。。
这个临时办法真好,省去了修改my.ini 导致崩溃的麻烦,但是,麻烦又来了,总不可能次次都手打一遍去设置吧,这多麻烦啊,嘿嘿,就是这么麻烦,但是谁叫砸是挨踢一族呢,用机器代替执行呀,学习MySQL 不就是学习它的使用方法吗,那么办法来了。
敲黑板了!
将上述设置语句保存在SQL脚本里面不久完事了吗,多好的法子啊,只要每次开启MySQL时记得执行一遍脚本不就OK了吗,这可真是个临时的永久办法。
实战:
将下面的内容保存在 init.sql 中,我的路径是放在E:\MYSQL\init.sql(自己的字符集和字符序看着加即可,都是这么改的)
#字符序临时设置办法
set collation_database =gbk_chinese_ci;
set collation_server =gbk_chinese_ci;
show variables like 'collation%';
#字符集临时设置办法
set character_set_database =gbk;
set character_set_server=gbk;
show variables like 'character%';
然后在MySQL命令行中执行 ,记住千万不要加; 这里没有;哦
\. E:\MYSQL\init.sql
或者
source E:\MYSQL\init.sql
完美解决!
重启MySQL,再来一遍
完美!
小结
-
个人感觉MySQL是十分的有趣的,真是太会折腾人了,不过这也是一个好事,可玩性极度飙升,可还行