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
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)化(碎片整理)及解析
文件中記錄組織
堆文件組織:一條記錄可以放在文件中的任何地方
順序文件組織:根據(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)),每個合取體就好比表上的一個過濾器,滿足一個給定合取的元組在表中所占的百分比稱為縮減因子。