数据(data):是数据库中存储的基本对象。
数据库(database):数据库是长时期存储在计算机中的有组织的,可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的数据冗余、较高的数据独立性和易扩展性,并可为多种用户共享。数据库数据具有永久存储、有组织和可共享三个基本特点。数据库是存放数据的仓库,只是这个仓库是存储在计算机存储设备上的,而且是按一定的格式存储的。
数据库管理系统(DBMS):是一个专门用于实现对数据进行管理和维护的系统软件。位于应用程序与操作系统之间。
DBMS的功能:
1、数据库的建立和维护功能
2、数据定义功能
3、数据组织、存储和管理功能
4、数据操作功能
5、事务的管理和运行功能
RDBMS的核心功能:
管理存储(由存储引擎进行管理)
安全性管理(管理的是用户访问的授权)
管理元数据(数据分为元数据和数据)
事务(transactions)管理(事务就是指可以被看成一个整体的多个SQL语句,只有符合ACID测试的才可以被称作事务)
支持(并发)连接
性能优化
提供备份和(back-up)恢复(recovery)的机制
处理对数据的检索和修改的请求
数据库系统(database system):由数据库、数据库管理系统(及相关的实用工具)、应用程序、数据库管理员组成。
数据库模型;
层次模型:一个子节点只能有一个父节点,数据库结果与应用程序耦合度很高。
网状模型:一个子节点可以有多个父节点,一个父节点也可以有多个子节点,数据库结果与应用程序耦合度很高。
关系型数据库模型:是由IBM的研究员codd在上个世纪70年代发表了一篇论文,而后被Larry Erison发展成为现在的Oracle。
(下面无特别说明,就是指的关系型数据库)
关系型模型中的对象:
表
键
数据库(一个数据库称为一个schema)
视图(视图是虚表,是被存储下来的SELECT语句)
触发器
索引(是可以加速查询操作的工具,但会减慢写操作)
存储过程、存储函数(这两个统称为存储例程)
游标
用户
事件调度器
SQL:Structure Query Language,结构化查询语言
SQL是一种操作接口,也是一种解释型编程语言,主要用于实现应用程序与数据库中的数据进行交互。
关系型数据库中的基本命令:
DDL:数据定义语言
用于创建数据库对象
CREATE 创建
ALTER 插入
DROP 删除
DML:数据操纵语言
用于管理数据表中的数据
INSERT,REPLACE 插入
DELECTE 删除
SELECT 查看,选择
UPDATE 更新
DCL:数据控制语言
用于管理数据权限
GRANT 授权
REVOKE 收权
在关系型数据库中常用到的几种键有:
主键:(primary key)
不能为空(即Not NULL)
不能有相同值
唯一的标识表中每一个字段
一张表只能有一个主键
外键(foreign key)
在两个表之间建立关联关系
唯一性约束/键(unique key)
允许为空
如果有值,则值不能相同
一个表中可以有多个唯一键
ANSI Standard 的三个级别:
Entry
Intermediate
Full
MySQL特征:
支持完全多线程和查询缓存
可靠、并具有可伸缩性
容易安装部署
方便快捷移植能力
支持多用户,每一个用户用一个单独的线程来响应
国际化的支持能力
支持广泛的编程语言
开源(遵循GPL规范)
Mysql的发展历史及增加的新功能:
MySQL的逻辑结构:
当客户端发起请求时,连接/线程处理会生成一个线程响应用户;此时会先查询缓存,如果缓存中有就直接响应用户;如果缓存中没有就请请求给分析器,查询分析、获取访问对象权限,然后交给优化器分析SQL语句,并将结果缓存至缓存;最后将结果返回给用户。
MySQL如何完成初始化:
(1)在Linux系统上:MySQL在查找配置文件时会依次查找下面这五个文件:
- /etc/my.cnf
- /etc/mysql/my.cnf
- $MYSQL_HOME/my.cnf
- /path/to/file when defaults-extra-file=/path/to/file is specified
- ~/.my.cnf
(2)在Windows系统上:MySQL在查找配置文件时会依次查找下面这五个文件:
- %WINDIR%\my.ini, %WINDIR%\my.cnf(eg. C:\my.ini, C:\my.cnf)
- %INSTALLDIR%\my.ini, %INSTALLDIR%\my.cnf
- /path/to/file when defaults-extra-file=/path/to/file is specified
注意:当一个参数在多个文件中被定义时,以最后找到的为准。
MySQL的初始账号:
(1)所有的初始账号是没有密码的
(2)包含3个root账号:root@localhost,[email protected],,[email protected],root@::1
(3)包含2个匿名账号:‘’@localhost,‘’@localhost.localdomain
为了安全,需要给root账号添加密码,并删除匿名账号:
(1)给root账号添加密码的方法有:
- 方法一:
- //当账号密码为空时,直接添加新密码
- # mysqladmin -u root password ’new-password’
- //为指定的主机名,添加密码
- # mysqladmin -u root -h host_name password ’new-password’
- 方法二:
- mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD(’new_password‘);
- 或者使用 mysql> UPDATE mysql.user SET password = PASSWORD(’new_password’) WHERE user = ’root’ and host='host_name';
- mysql> FLUSH PRIVILEGES; //注意:此时是为了重读授权表,让设置的密码立即生效
(2)删除匿名用户和主机为IPv6地址的用户:
- mysql> DROP USER ’’@localhost;
- 为了保证成功删除,可以使用下面这条命令查看一下:
- mysql> SELECT user,host,password FROM mysql.user WHERE user=’’;