Mysql數據庫的基礎理論

2017年2月21日23:56:26 發表評論 4,251 ℃

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: