Mysql数据库
数据库的组织结构
层次型
网状型
关系型
RDBMS:
1、数据库创建、删除
2、创建表、删除表、修改表
3、索引的创建、删除
4、用户和权限
5、数据增、删、改
6、查询
DML:Date Manapulage Lanague:数据操作语言
insert ,replace, update ,delete,select
DDL:Date Defination Lanauage:数据定义语言
create , alter ,drop
约束
域约束:数据类型约束
外域约束:引用完整性约束
主键约束:某字段能唯一标识此字段所属的实体,并且不允许为空 (一张表只能有一个主键)
唯一性约束:每一行的某字段都不允许出现相同值,可以为空(一张表中可以有多个)
检查性约束:
DCL:Date Control Language:数据控制语言
grant ,revoke
select
RBBMS: egreSQL
Oracle , Sybase , Infomix ,SQL Server , DB2
MySQL ,PostgreSQL , pgsql ,EnterpriseDB
MySQL , SQL , MySQL AB
阿里巴巴去IOE : IBM ,Oralce , EMC
Oracle
IBM
SUN-->MySQL
BEA:WebLogic
PepoleSoft
Openoffice
Libreoffice
MariaDB
MySQL --> Percona
反关系模型:NoSQL
MongoDB
Redis
HBase
DBMS:datebase management system
数据管理独立性
有效地完成数据存取
数据完整性和安全性
数据集中管理
并发存储与故障恢复
减少应用程序开发时间
SQL:ANSI(美国国家标准化组织)
sql86, sql89, sql92, sql99
DDL,DML ,DCL
MySQL:
Community Edtion 社区版
Enterprise Edtion 企业版
软件包格式:
软件包管理器特有的格式
rpm包, .exe格式等
通用二进制格式
源程序
mysql
-u username
-P password
-h hostname
Linux :socket
Windows :memory
mysql客户端:
交互式模式
批处理模式
执行mysql脚本
交互式模式中的命令类别
客户端命令
服务端命令
都必须使用域名结束符,默认为分号
用户:USERNAME@HOSTNAME
mysqld
RDBMS:
/var/lib/mysql
初始化:
关系数据库对象:
库、表、索引、视图、约束、存储过程、存储函数、触发器、游标、用户、权限、事务
数据类型:
字符:
CHAR(n)
VARCHAR(n)不区分大小写
BINARY(n)
VARBINARY(n)区分大小写
TEXT(n)
BLOB(n)
数值:
精确数值:
整型:
TINYINT
SMALLINT
KEDIUMINT
INT
BIGINT
修饰符:UNSIGNED,无符号
NOT NULL
十进制:DECIMAL
近似数值
浮点型
FLOAT
DOUBLE
日期时间
DATE
TIME
DATETIME
STAMP
布尔
内置:ENUM SET
DDL
CREATE
ALTER
DROP
DML
INSERT
UPDATE
DELETE
DCL
GRANT
REVOKE
创建数据库:
create database db_name;
create database if not exists db_name;
删除数据库:
drop database [ if exists ] db_name;
创建表:
create table tb_name(col1,col2,...);
查看库中的表:show tables from db_name;
查看表的结构:desc tb_name;
删除表: drop table tb_name;
修改表:
alter table tb_name
modify
change
add
drop
添加数据:
insert into tb_name(col1,col2,....)value('string',num,..);
insert into tb_name(col1,col2,....)value('string',num,..),('string',num,..);
修改数据:
update tb_name set col='new_value' where condition;
删除数据:
delete from tb_name where condition;
查看数据:
select 字段 from tb_name where condition;
* : 所有字段
where :没有条件表示显示所有行
创建用户:
create user 'username'@'host' identified by 'password';
drop user 'username'@'host'; #删除用户
HOST:
IP
HOSTNAME
NETWORK
通配符
_:匹配任意单个字符,172.16.9._
%:匹配任意字符
用户授权:
grant pri1(命令),pri2,.... on db_name.tb_name to 'username'@'host' [identified by 'password'];
revoke pri1,pri2...on db_name.tb_name from 'username'@'host'; #删除权限
show grants for 'username'@'host'; #查看用户授权
all privileges # 所有权限
grant all privileges on mydb.* to 'myuser'@'192.168.130.%' identified by '123456'; #允许192.168.130网段的用户使用myuser登录管理mydb表。
修改用户密码:
1、set password for 'username'@'localhost' =password('newpasswd');
2、mysqladmin -uusername -h127.0.0.1 -p password 'newpasswd'
3、update user set password=password('newpasswd') where user='username'
flush privileges; #刷新权限
mysql图形客户端工具:
Phpmyadmin
Workbench
Mysql front
Navicat
Toad
mysql:配置文件格式,集中式配置文件,可以为多个程序提供配置
[mysql]
[mysqld]
[client]
/etc/my.cnf -->/etc/mysql.my.cnf -->$BASEDIR/my.cnf -->~/.my.cnf
MySQL服务器维护了两类变量
服务器变量:
定义MySQL服务运行特殊性
show global variables [like 'string'];
状态变量:
保存了MySQL服务器运行统计数据
show global status [like 'string']
show engines; 查看默认的存储引擎
select version(); #查看版本号
select database(); #查看当前数据库
select user(); #查看当前登录的用户
MySQL通配符:
_:匹配任意单个字符
%:匹配任意字符
mysql基础理论
事务、隔离、并发
用户和权限
监控
STATUS
索引类型:查询
VARLABLES
备份和恢复
复制功能
集群
文件:
数据冗余和不一致性
数据访问困难
数据孤立
完整性问题
原子性问题
并发访问异常
安全性问题
DBMS
层次模型
网状模型
关系模型(结构化数据模型)
关系模型
实体-关系模式
对象关系模式:基于对象的数据模型
半结构化数据模型:XML(扩展标记语言)
RDBMS
数据查询和存储:
存储管理器
权限及完整性管理器
事务管理器
文件管理器
缓存区管理器
查询管理器
DML解析器
DDL解释器
查询执行引擎
关系运算:
投影:只输出指定属性
选择:只输出符合条件的行
自然连接:具有相同名字的属性上取值相同的行
笛卡尔积:(a+b)*(c+d)=ad+ac+bd+dc
并:集合运算
sql语言的组成部分
DDL
SML
完整性定义语言:DDL的一部分功能
视图定义
事务控制:
嵌入式SQL和动态SQL
授权:dcl
使用程序设计语言如何跟RDBMS交互:
嵌入式SQL:与动态SQL类似,但其语言必须程序编译时完全确定下来
ODBC
动态SQL:程序设计语言使用函数(mysql_connect())或者方法与RDBMS服务器建立连接,并进行交互,通过建立连接向sql服务器发送查询语句,并将结果保存至变量中而后进行处理
JDBC
mysql插件式存储引擎
5.5.8以前:MySAM
5.5.8以后:InnoDB
表管理器:负责创建、读取或修改表定义文件;维护表描述符高速缓存;管理表锁
表结构定义文件
表修改模块:表创建、删除、重命名、移出、更新或插入之类的操作
表维护模块:检查、修改、备份、恢复、优化(碎片整理)及解析
文件中记录组织
堆文件组织:一条记录可以放在文件中的任何地方
顺序文件组织:根据“搜索码”为顺序存放。
散列文件组织:
表结构定义文件,表数据文件
表空间:table space
数据字典:Data Dictionary
关系的元数据
关系的名字
字段名字
字段的类型和长度
视图
约束
用户名字,授权,密码
缓存区管理器:
缓存置换策略
被盯住的块
访问路径的选择性:一个访问路径的选择性是所有获取的页面数(如果使用这个访问路径去获取所有想要的元组)。如果一个表包含一个与给定条件相匹配的索引,就至少存在两条访问路径:使用索引和扫描整个数据文件。
最有选择性的路径是检索最少页数的路径;使用最有选择性的路径将使用获取数据的代价降到最小。而一个访问路径的选择性依赖于选择条件中的主合取体(与涉及的索引有关),每个合取体就好比表上的一个过滤器,满足一个给定合取的元组在表中所占的百分比称为缩减因子。