Mysql数据库的基础理论

2017年2月21日23:56:26 发表评论 3,081 ℃

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

Mysql数据库的基础理论

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

表管理器:负责创建、读取或修改表定义文件;维护表描述符高速缓存;管理表锁

表结构定义文件

表修改模块:表创建、删除、重命名、移出、更新或插入之类的操作

表维护模块:检查、修改、备份、恢复、优化(碎片整理)及解析

Mysql数据库的基础理论

文件中记录组织

堆文件组织:一条记录可以放在文件中的任何地方

顺序文件组织:根据“搜索码”为顺序存放。

散列文件组织:

表结构定义文件,表数据文件

表空间:table space

数据字典:Data Dictionary

关系的元数据

关系的名字

字段名字

字段的类型和长度

视图

约束

用户名字,授权,密码

缓存区管理器:

缓存置换策略

被盯住的块

访问路径的选择性:一个访问路径的选择性是所有获取的页面数(如果使用这个访问路径去获取所有想要的元组)。如果一个表包含一个与给定条件相匹配的索引,就至少存在两条访问路径:使用索引和扫描整个数据文件。

最有选择性的路径是检索最少页数的路径;使用最有选择性的路径将使用获取数据的代价降到最小。而一个访问路径的选择性依赖于选择条件中的主合取体(与涉及的索引有关),每个合取体就好比表上的一个过滤器,满足一个给定合取的元组在表中所占的百分比称为缩减因子。

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: