表与表之间的引用,即为外键
范式:第一范式,第二范式,第三范式
关系运算
选择:挑选符合的行
投影:挑选符合的列表与表之间的连接,外链接、内连接
数据库是由表组成的,索引是表中的某个字段或特定数据,B+树等,索引会影响写入操作
视图:虚表,即select后的结果
-
SQL:结构化查询语言,
- DDL:数据定义语言,操作表,索引等
- DML:数据操作语言,操作表中的数据
-
也提供了编程接口:代码片段
- 存储过程:没有返回值的函数,对数据的加工,
- 存储函数:有返回结果的代码片段,funciton,有输入、输出
- 触发器:一类sql语句,或一段代码,如插入语句执行时,会触发原
有的插入程序。
表连接:join,为了满足关系范式,拆表之后再合表去查询数据,会消耗内存
-
RDBMS:
- MySql:MySql、MariaDB,Percona-server
- PostgreSQL:即pgsql,商业版为EnterpriseDB
- Oracle:
- MSSQL:微软的数据库,只能运行在windows上
独占锁和共享锁:写的过程不能读,读的时候可以都读
事务:ACID:原子性、一致性、隔离性、持久性
事务日志和数据日志,在放写入事务日志而没来得及写入数据日志时,出现问题。则恢复管理器从事务日志中恢复写入数据日志中
-
SQL:Structure Qurey Language结构化查询语言
- 数据存取协议:mysql协议、oracle协议都属于应用层协议。
- server端监听在套接字,接收请求
- client端:程序接口(CLI和GUI)、应用编程接口(ODBC:Open Database Connection开放数据库系统互联)
* (1)现成的程序:如php-mysql客户端程序- (2)通过自己编写代码实现交互
-
基础概念:
- 1、约束:constraint,输入的数据符合一定的规范,向数据表提供的数据要遵守的限制
主键(也是一种约束):只能有1个,一个或多个字段组合,能唯一标识本行,并且不能为空,not null
唯一键:可以有多个,与主键描述一致,只是允许为空,null
外键:一个表中的某字段填入的数据,取决于另一个表的主键已有的数据
- 1、约束:constraint,输入的数据符合一定的规范,向数据表提供的数据要遵守的限制
2、索引:将1个或几个字段数据抽取出来,并按照特定顺序排序存储
稠密索引:
稀疏索引:3、关系运算 :选择(挑选部分行)、投影(挑选需要的字段,挑选列)、连接(笛卡尔乘积、左联接、右联结)
4、数据抽象:
物理层:决定数据的存储格式,在磁盘上如何组织文件,一张表存储于多个文件or多张表存储于一个文件
逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系。100张表,某个用户只能查看20张表5、关系模型的分类:
关系模型
实体-关系模型
基于对象的关系模型
半结构化的关系模型:以XML格式存储数据6、安装MySQL:
源代码:编译安装:
二进制格式的程序包:展开至特定路径,简单配置后即可使用
程序包管理的程序包:
rpm
deb7、 MariaDB:存储引擎也称之为“表类型”
支持更多的存储引擎:MyISAM的升级版----->Aria、InnoDB升级版--->XtraDB-
8、centos7:直接提供MariaDB
centos6: 自行安装
rpm -e 包名 卸载包
9、MySQL配置文件查找次序:
/etc/my.cnf--->/etc/mysql/my.cnf----> --default-extra-file=/PATH/TO/CONF_FILE---> ~/.my.cnf/
10、在mysql的bin目录下,是mysql的执行程序,其中的mysqld_multi是mysql的多实例程序,类似于虚拟主机的概念,通过不同的端口启用多个mysql进程
11、MariaDB的程序组成:
Client:
mysql:cli交互式客户端程序
mysqldump,mysqladmin
Server:
mysqld_safe
mysqld
mysqld_multi
12、服务器监听的两种socket:
ip socket:监听在tcp的3306端口,支持远程通信
unix sock:监听在sock文件(/tmp/mysql.sock,/var/lib/mysql/mysql.sock),仅支持本地通信,server地址只能为localhost或127.0.0.113、mysql:
-uUSERNAME:用户名,默认为root
-hHOST:服务器主机,默认为localhost
-pPASSWORD:用户的密码,默认为空密码
用户账号由两部分组成:‘USERNAME'@'HOST';其中HOST用于限制此用户可通过哪些主机远程连接mysql服务
支持使用通配符:
%:匹配任意长度的任意字符
_:匹配任意单个字符
安全初始化:执行/usr/local/mysql/bin/mysql_secure_installation命令:
客户端命令:本地执行,如在mysql下执行help,查看status
服务端命令:通过mysql协议发往服务器执行并取回结果,每个命令都必须有命令结束符号,默认为分号;-
14、关系型数据库的常见组件:
数据库:database,由多张表组成的数据集合
表:table,包含行和列
索引:index
视图:view虚拟出的多个表
用户:user
权限:privilege用户对数据库、表的访问权限被调用代码:
存储过程:procedure,调用一下,执行,使用call,没有返回值
存储函数:function,使用select,有返回值
触发器:trigger,触发已经写好的代码片段,触发额外代码,如谁查了表等代码
事件调度器:event scheduler 15、SQL语句
DDL:数据定义语言
create、drop、alter
DML:数据操纵语言
insert、delete、update、select
grant、revoke
使用:
(1)创建数据库:create database|schema 'DB_NAME';
帮助命令:myslq>help create database
字符集和排序规则
(2)删除数据库:drop database|schema 'DB_NAME';