Mysql數(shù)據(jù)庫的基礎(chǔ)理論

2017年2月21日23:56:26 發(fā)表評論 4,169 ℃

Mysql數(shù)據(jù)庫

數(shù)據(jù)庫的組織結(jié)構(gòu)

層次型

網(wǎng)狀型

關(guān)系型

RDBMS:

1、數(shù)據(jù)庫創(chuàng)建、刪除

2、創(chuàng)建表、刪除表、修改表

3、索引的創(chuàng)建、刪除

4、用戶和權(quán)限

5、數(shù)據(jù)增、刪、改

6、查詢

DML:Date Manapulage Lanague:數(shù)據(jù)操作語言

insert ,replace, update ,delete,select

DDL:Date Defination Lanauage:數(shù)據(jù)定義語言

create , alter ,drop

約束

域約束:數(shù)據(jù)類型約束

外域約束:引用完整性約束

主鍵約束:某字段能唯一標(biāo)識此字段所屬的實體,并且不允許為空 (一張表只能有一個主鍵)

唯一性約束:每一行的某字段都不允許出現(xiàn)相同值,可以為空(一張表中可以有多個)

檢查性約束:

DCL:Date Control Language:數(shù)據(jù)控制語言

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

反關(guān)系模型:NoSQL

MongoDB

Redis

HBase

DBMS:datebase management system

數(shù)據(jù)管理獨立性

有效地完成數(shù)據(jù)存取

數(shù)據(jù)完整性和安全性

數(shù)據(jù)集中管理

并發(fā)存儲與故障恢復(fù)

減少應(yīng)用程序開發(fā)時間

SQL:ANSI(美國國家標(biāo)準(zhǔn)化組織

sql86,  sql89,  sql92,  sql99

Mysql數(shù)據(jù)庫的基礎(chǔ)理論

DDL,DML ,DCL

MySQL:

Community Edtion 社區(qū)版

Enterprise Edtion 企業(yè)版

軟件包格式:

軟件包管理器特有的格式

rpm包, .exe格式等

通用二進制格式

源程序

mysql

-u username

-P password

-h hostname

Linux :socket

Windows :memory

mysql客戶端:

交互式模式

批處理模式

執(zhí)行mysql腳本

交互式模式中的命令類別

客戶端命令

服務(wù)端命令

都必須使用域名結(jié)束符,默認為分號

用戶:USERNAME@HOSTNAME

mysqld

RDBMS:

/var/lib/mysql

初始化:

關(guān)系數(shù)據(jù)庫對象:

庫、表、索引、視圖、約束、存儲過程、存儲函數(shù)、觸發(fā)器、游標(biāo)、用戶、權(quán)限、事務(wù)

數(shù)據(jù)類型:

字符:

CHAR(n)

VARCHAR(n)不區(qū)分大小寫  

BINARY(n)

VARBINARY(n)區(qū)分大小寫

TEXT(n)

BLOB(n)

數(shù)值:

精確數(shù)值:

整型:

TINYINT

SMALLINT

KEDIUMINT

INT

BIGINT

修飾符:UNSIGNED,無符號

NOT NULL

十進制:DECIMAL

近似數(shù)值

浮點型

FLOAT

DOUBLE

日期時間

DATE

TIME

DATETIME

STAMP

布爾

內(nèi)置:ENUM  SET

DDL

CREATE

ALTER

DROP

DML

INSERT

UPDATE

DELETE

DCL

GRANT

REVOKE

創(chuàng)建數(shù)據(jù)庫:

create database db_name;

create database if not exists db_name;

刪除數(shù)據(jù)庫:

drop database [ if exists ] db_name;

創(chuàng)建表:

create table tb_name(col1,col2,...);

查看庫中的表:show tables from db_name;

查看表的結(jié)構(gòu):desc tb_name;

刪除表: drop table tb_name;

修改表:

alter table tb_name

modify

change

add

drop

添加數(shù)據(jù):

insert into  tb_name(col1,col2,....)value('string',num,..);

insert into  tb_name(col1,col2,....)value('string',num,..),('string',num,..);

修改數(shù)據(jù):

update tb_name set col='new_value' where condition;

刪除數(shù)據(jù):

delete from tb_name where condition;

查看數(shù)據(jù):

select 字段 from tb_name where condition;

* : 所有字段

where :沒有條件表示顯示所有行

創(chuàng)建用戶:

create user  'username'@'host' identified by 'password';

drop user 'username'@'host'; #刪除用戶

HOST:

IP

HOSTNAME

NETWORK

通配符

_:匹配任意單個字符,172.16.9._

%:匹配任意字符

用戶授權(quán):

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'; #刪除權(quán)限

show grants for 'username'@'host'; #查看用戶授權(quán)

all privileges  # 所有權(quán)限

grant all privileges on mydb.* to 'myuser'@'192.168.130.%' identified by '123456';  #允許192.168.130網(wǎng)段的用戶使用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;   #刷新權(quán)限

mysql圖形客戶端工具:

Phpmyadmin

Workbench

Mysql front

Navicat

Toad

mysql:配置文件格式,集中式配置文件,可以為多個程序提供配置

[mysql]

[mysqld]

[client]

/etc/my.cnf -->/etc/mysql.my.cnf -->$BASEDIR/my.cnf -->~/.my.cnf

MySQL服務(wù)器維護了兩類變量

服務(wù)器變量:

定義MySQL服務(wù)運行特殊性

show global variables [like 'string'];

狀態(tài)變量:

保存了MySQL服務(wù)器運行統(tǒng)計數(shù)據(jù)

show global status [like 'string']

show engines;  查看默認的存儲引擎

select version();  #查看版本號

select database(); #查看當(dāng)前數(shù)據(jù)庫

select user(); #查看當(dāng)前登錄的用戶

 MySQL通配符:

_:匹配任意單個字符
%:匹配任意字符

mysql基礎(chǔ)理論

事務(wù)、隔離、并發(fā)

用戶和權(quán)限

監(jiān)控

STATUS

索引類型:查詢

VARLABLES

備份和恢復(fù)

復(fù)制功能

集群

文件:

數(shù)據(jù)冗余和不一致性

數(shù)據(jù)訪問困難

數(shù)據(jù)孤立

完整性問題

原子性問題

并發(fā)訪問異常

安全性問題

DBMS

層次模型

網(wǎng)狀模型

關(guān)系模型(結(jié)構(gòu)化數(shù)據(jù)模型)

關(guān)系模型

實體-關(guān)系模式

對象關(guān)系模式:基于對象的數(shù)據(jù)模型

半結(jié)構(gòu)化數(shù)據(jù)模型:XML(擴展標(biāo)記語言)

RDBMS

數(shù)據(jù)查詢和存儲:

存儲管理器

權(quán)限及完整性管理器

事務(wù)管理器

文件管理器

緩存區(qū)管理器

查詢管理器

DML解析器

DDL解釋器

查詢執(zhí)行引擎

關(guān)系運算:

投影:只輸出指定屬性

選擇:只輸出符合條件的行

自然連接:具有相同名字的屬性上取值相同的行

笛卡爾積:(a+b)*(c+d)=ad+ac+bd+dc

并:集合運算

sql語言的組成部分

DDL

SML

完整性定義語言:DDL的一部分功能

視圖定義

事務(wù)控制:

嵌入式SQL和動態(tài)SQL

授權(quán):dcl

使用程序設(shè)計語言如何跟RDBMS交互:

嵌入式SQL:與動態(tài)SQL類似,但其語言必須程序編譯時完全確定下來

ODBC

動態(tài)SQL:程序設(shè)計語言使用函數(shù)(mysql_connect())或者方法與RDBMS服務(wù)器建立連接,并進行交互,通過建立連接向sql服務(wù)器發(fā)送查詢語句,并將結(jié)果保存至變量中而后進行處理

JDBC

mysql插件式存儲引擎

5.5.8以前:MySAM

5.5.8以后:InnoDB

表管理器:負責(zé)創(chuàng)建、讀取或修改表定義文件;維護表描述符高速緩存;管理表鎖

表結(jié)構(gòu)定義文件

表修改模塊:表創(chuàng)建、刪除、重命名、移出、更新或插入之類的操作

表維護模塊:檢查、修改、備份、恢復(fù)、優(yōu)化(碎片整理)及解析

Mysql數(shù)據(jù)庫的基礎(chǔ)理論

文件中記錄組織

堆文件組織:一條記錄可以放在文件中的任何地方

順序文件組織:根據(jù)“搜索碼”為順序存放。

散列文件組織:

表結(jié)構(gòu)定義文件,表數(shù)據(jù)文件

表空間:table space

數(shù)據(jù)字典:Data Dictionary

關(guān)系的元數(shù)據(jù)

關(guān)系的名字

字段名字

字段的類型和長度

視圖

約束

用戶名字,授權(quán),密碼

緩存區(qū)管理器:

緩存置換策略

被盯住的塊

訪問路徑的選擇性:一個訪問路徑的選擇性是所有獲取的頁面數(shù)(如果使用這個訪問路徑去獲取所有想要的元組)。如果一個表包含一個與給定條件相匹配的索引,就至少存在兩條訪問路徑:使用索引和掃描整個數(shù)據(jù)文件。

最有選擇性的路徑是檢索最少頁數(shù)的路徑;使用最有選擇性的路徑將使用獲取數(shù)據(jù)的代價降到最小。而一個訪問路徑的選擇性依賴于選擇條件中的主合取體(與涉及的索引有關(guān)),每個合取體就好比表上的一個過濾器,滿足一個給定合取的元組在表中所占的百分比稱為縮減因子。

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論

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