三种数据组织管理模式:
层次性:很难描述对象之间的关系,冗余大,数据与程序耦合度不高。
网状型:在对象之间建立关系,但复杂度高,并没改变数据与程序的耦合度。
关系型:关系称为二维表,即表,行表示实体,列表示实体的某方面的属性,数据被记录在二维关系中,降低了数据与程序的程度耦合。

面向对象的关系模型:
将对应的数据定义一个对象,在表中存放对象的实体化对应与磁盘的某个位置,表中是指针。
xml,扩展标记语言,在不同的数据库软件之间导入或导出

RDBMS:关系型数据管理系统,是个软件,提供两个视图
 Oracle,甲骨文
   RMAN,数据库备份、恢复工具
   DATA GUARD非高可用集群,但类似能提供高可用
   RAC  真应用集群
   认证:OCA,OCP,OCM
   版本:oracle8i,9i,10g,11g,现在最常用的是9i

 DB2,IBM公司的,
   目前在国内的证券等倾向DB2
 
 SQL Server,只能做在Window上

数据库的正在发展趋势:
NoSQL:非关系型数据库,基于key-value,即键值对,存储读出非常快,时时在线。
Realtime:把数据库应在内存中,所用操作在内存中,不往磁盘存储。

逻辑视图:通过sql接口管理
表:数据库的核心
索引:加速查找速度,例书的目录
视图:数据库的对象,存储SELECT语句
用户:获取资源的权限。
以下从编程的角度,由开发人员的开发的组件:
触发器:当数据库中的表做出一定的修改,相应的另一边也要做出操作,即一边发生变化另一边要响应。
存储例程:存储过程和存储函数,直接存储在服务器中
事件:类似任务计划

物理视图:对应的工具来实现管理
存储在磁盘的方式,通常由文件组成,文件的存储方式不同。一表一个文件,多表一个文件(表空间).Oracle直接使用裸设备存储,存取速度快

普通用户只能操作逻辑视图,管理员都要关注。

DataBase:
开发DBA:数据库设计,存储过程,存储函数,触发器
管理DBA:数据库备份、恢复,数据库软件的管理,用户管理,安全管理,架构设计,实施

DBMS基本功能:
Managing storage管理存储
Maintaining security管理安全
Maintaining metadata管理源数据
Managing transactions管理事务
Supporting connectivity支持连接管理
Optimizing performance性能优化
Providing back-up and recovery mechanisma提供备份恢复的机制
Processing requests for data retrieval and modfication处理数据的检索与修改

对于表,使用不同的索引,筛选的结果可能也不一样
同一个SQL语句,同一个索引可以有多条路径,可以从中选最优的。

ACID:事务的特性,A原子性,C一致性,I隔离性,D持久性。

SQL:结构化查询语言,类似脚本,但比脚本简单,功能强大,由SQL解释器完成。
 DDL:数据库定义语言
   CREATE,DROP
 DML:数据管理
   SELECT,INSERT,DELETE,UPDATE

ANSI:数据库的标准,以年份定义的
 SQL-86,SQL-89,SQL-92,
 标准非常严格,但效率非常低
 SQL-92标准的三个级别:
  Entry:基础标准(实体)
  Intermediate:中级
  Full:完全
 SQL-99:划分为CoreSQL核心级别
 SQL-03:引进了XML

结构化编程:(即扩展)
Oracle, PL/SQL PL过程化
SQL Server, T-SQL
MySQL,  SQL

范式:数据库设计遵循的标准

约束:
候选键:能够表示表中唯一标识某行的字段。
primary key 主键,不允许为空
foreign key 外键,在两个表之间建立关联
检查性约束,对字段的约束,例:ages大于1小于200
unique key 唯一键,对应可以为空

MySQL的端口3306

MySQL的官方名称:“My S-Q-L”或“My Sequel”

MySQL的特性:
1、speed速度快,完全多线程,查询缓存,不仅可以缓存SELECT语句,还可以缓存结果。
2、Reliability可靠性
3、scalability伸缩性
4、Ease of use 易用
5、Potability and Standdands Complicance可移植性标准,兼容性好
6、Multiuser Support支持多用户
7、Internationalization国际化,即支持多种语言
8、wide Application Support广泛的应用程序,(C,C++,Java,Perl,PHP,)(JDBC,ODBC,NET)
9、Open Source开源

MySQL的版本:
Alpha 内部测试
Beta 公开测试
GA版本,在生产环境中使用,是我们用的版本
4.1曾加了子查询
5.0引入了触发器,游标,存储过程
5.1引入了表分区,基于行的复制,可插入式的存储引擎,事件调度器
MySQL Community社区版
MySQL Enterprise企业版,需付费的

MySQL的软件版本:
MySQL Server    MySQL服务器
MySQL Cluster   MySQL集群
MySQL Proxy     MySQL代理
MySQL Adminitrator整合起来的图形的管理工具,至少包含两个组件MySQL Query Browser和MySQL Workbench设计工具
MySQL Migration Toolkit 移植工具
MySQL Embedded Server 潜入式
MySQL Drivers and Connectors 驱动和连接器

存储引擎:用于实现物理文件的管理的接口,5.1之前的My1SAM不支持事务,之后是InnoDB完全事务,从性能上MySAM较好。

MySQL的工作特征:
五个主要组件:连接/线程处理,分析器,查询缓存,优化器,存储引擎。
connection pool:连接池,包括认证,线程重用,连接限制,内存检查,缓存
SQL Interface:DML DDL
Paser;词法分析器(查询翻译,对象权限)
Optimlzer:词法优化(路径选择)
Cache & Buffers:缓存,加速工作效率
存储引擎:索引,真正存放数据,最终放在文件系统中。

复制:提供负载均衡,多台服务器,提供相同的数据,主服务器可读可写,从服务器可读。

分区:对表进行切分

MySQL RPM Packages:
MySQL-client客户端
MySQL-devel开发包,头文件,库文件
MySQL-enbedded潜入式,很小
MySQL-debuginf o调试
MySQL-shared共享库
MySQL-shared-compat兼容老版本的共享库
MySQL-test测试组件
PLATFORM.src.rpm源码的rpm

二进制解压就能使用的绿色软件所包含的目录及子目录:bin,data,include,lib,man,mysql-test,scripts,share,sql-bench,support-files

在unix上是个集中式的配置文件,为各种工具提供配置
mysqld按顺序查找配置文件
 /etc/my.cnf
 /etc/mysql/my.cnf
 $MYSQL_HOME/my.cnf安装目录,默认basedir,datadir
 /path/to/file when defaults-extra-file=/path/to/file is specified
 ~/.my.cnf隐藏文件,登录到liunx系统上的当前用户
配置文件最终生效的是所有,若有重复从下往上优先,后找到的覆盖之前的。

在Windows找配置文件的顺序
%WINDIR%\my.init或%WINDIR%\my.cnf
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、mysqladmin -uroot password 'redhat'
   mysqladmin -uroot password 'redhat' -p指定原密码
   mysqladmin -uroot -h127.0.0.1 password 'redhat'
2、mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('redhat');
3、mysql> UPDATA user SET PASSWORD = PASSWORD('redhat') WHERE USER='root' and HOST='mysql.magedu.com';

删除用户:
mysql> DROP USER ''@localhost;匿名的
mysql> DROP USER 'root'@'::1';

重读
mysql> FLUSH PRIVILEGES

创建用户:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY 'redhat'


安装MySQL:
1、下载软件包mysql-5.5.15-linux2.6-i686.tar.gz
rpm -qa | grep mysql 查看系统是否安装
tar xf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local
cd /usr/local
ln -sv mysql-5.5.15-linux2.6-i686 mysql
cd mysql
ls

2、创建逻辑卷
fdisk /dev/sdb
 n
 5
 +10G
 t
 8e
 n
 6
 +10G
 t
 8e
 w
partprobe /dev/sdb
pvcreate /dev/sdb{5,6}
vgcreate myvg /dev/sdb{5,6}
vgs
lvcreate -L 10G -n mydata myvg
lvs
mke2fs -j -L MYDATA /dev/myvg/mydata
mkdir /mydata
vim /etc/fstab
 LABEL=MYDATA /mydata ext3 defaults 0 0
mount -a
mount
(mount /dev/mapper/myvg-mydata /mydata)

3、mkdir -pv /mydata/data
ll /mydata/
groupadd -r mysql
useradd -g mysql -r -M -s /sbin/nologin mysql
id mysql
pwd
ll
chown -R mysql:mysql .
chown -R mysql:mysql /mydata/data/
ls

4、初始化及配置
script/mysql_install_db --datadir=/mydata/data/ --user=mysql
ll
chown -R root .
ln -sv /usr/local/mysql/include /usr/include/mysql
vim /etc/ld.so.conf.d/mysql.conf
 /usr/local/mysql/lib
ldconfig
ls
ls man/
vim /etc/man.config
 MANPATH /usr/local/mysql/man
man mysqld
vim /etc/profile
 PATH=$PATH:/usr/local/mysql/bin
 在export之前
. /etc/profile 生效

4、cd support-files/
ls
cp my-large.cnf /etc/my.cnf
vim /etc/my.cnf
 datadir = /mydata/data
 在[mysqld]中添加
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
service mysqld start

5、mysql连接
mysql> use mysql;设置默认表
mysql> SHOW TABLES;
mysql> DESC user;查看表
mysql> SELECT HOST,USER,PASSWORD from user;
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('redhat');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY 'redhat';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.%.%' IDENTIFIED BY 'redhat';
mysql> DROP USER ''@localhost;删除匿名的
mysql> FLUSH PRIVILEGES;
mysql> \q

在Windows中安装MySQL
mysql -uroot -p -h172.16.6.1连接测试