SQL的基礎及MySQL的安裝

三種數據組織管理模式:
層次性:很難描述對象之間的關係,冗餘大,數據與程序耦合度不高。
網狀型:在對象之間建立關係,但複雜度高,並沒改變數據與程序的耦合度。
關係型:關係稱爲二維表,即表,行表示實體,列表示實體的某方面的屬性,數據被記錄在二維關係中,降低了數據與程序的程度耦合。

面向對象的關係模型:
將對應的數據定義一個對象,在表中存放對象的實體化對應與磁盤的某個位置,表中是指針。
xml,擴展標記語言,在不同的數據庫軟件之間導入或導出

RDBMS:關係型數據管理系統,是個軟件,提供兩個視圖
 Oracle,甲骨文
   RMAN,數據庫備份、恢復工具
   DATA GUARD非高可用集羣,但類似能提供高可用
   RAC  真應用集羣
   認證:OCA,OCP,OCM
   版本:oracle8i,9i,10g,11g,現在最常用的是9i

 DB2,IBM公司的,
   目前在國內的證券等傾向DB2
 
 SQL Server,只能做在Window上

數據庫的正在發展趨勢:
NoSQL:非關係型數據庫,基於key-value,即鍵值對,存儲讀出非常快,時時在線。
Realtime:把數據庫應在內存中,所用操作在內存中,不往磁盤存儲。

邏輯視圖:通過sql接口管理
表:數據庫的核心
索引:加速查找速度,例書的目錄
視圖:數據庫的對象,存儲SELECT語句
用戶:獲取資源的權限。
以下從編程的角度,由開發人員的開發的組件:
觸發器:當數據庫中的表做出一定的修改,相應的另一邊也要做出操作,即一邊發生變化另一邊要響應。
存儲例程:存儲過程和存儲函數,直接存儲在服務器中
事件:類似任務計劃

物理視圖:對應的工具來實現管理
存儲在磁盤的方式,通常由文件組成,文件的存儲方式不同。一表一個文件,多表一個文件(表空間).Oracle直接使用裸設備存儲,存取速度快

普通用戶只能操作邏輯視圖,管理員都要關注。

DataBase:
開發DBA:數據庫設計,存儲過程,存儲函數,觸發器
管理DBA:數據庫備份、恢復,數據庫軟件的管理,用戶管理,安全管理,架構設計,實施

DBMS基本功能:
Managing storage管理存儲
Maintaining security管理安全
Maintaining metadata管理源數據
Managing transactions管理事務
Supporting connectivity支持連接管理
Optimizing performance性能優化
Providing back-up and recovery mechanisma提供備份恢復的機制
Processing requests for data retrieval and modfication處理數據的檢索與修改

對於表,使用不同的索引,篩選的結果可能也不一樣
同一個SQL語句,同一個索引可以有多條路徑,可以從中選最優的。

ACID:事務的特性,A原子性,C一致性,I隔離性,D持久性。

SQL:結構化查詢語言,類似腳本,但比腳本簡單,功能強大,由SQL解釋器完成。
 DDL:數據庫定義語言
   CREATE,DROP
 DML:數據管理
   SELECT,INSERT,DELETE,UPDATE

ANSI:數據庫的標準,以年份定義的
 SQL-86,SQL-89,SQL-92,
 標準非常嚴格,但效率非常低
 SQL-92標準的三個級別:
  Entry:基礎標準(實體)
  Intermediate:中級
  Full:完全
 SQL-99:劃分爲CoreSQL核心級別
 SQL-03:引進了XML

結構化編程:(即擴展)
Oracle, PL/SQL PL過程化
SQL Server, T-SQL
MySQL,  SQL

範式:數據庫設計遵循的標準

約束:
候選鍵:能夠表示表中唯一標識某行的字段。
primary key 主鍵,不允許爲空
foreign key 外鍵,在兩個表之間建立關聯
檢查性約束,對字段的約束,例:ages大於1小於200
unique key 唯一鍵,對應可以爲空

MySQL的端口3306

MySQL的官方名稱:“My S-Q-L”或“My Sequel”

MySQL的特性:
1、speed速度快,完全多線程,查詢緩存,不僅可以緩存SELECT語句,還可以緩存結果。
2、Reliability可靠性
3、scalability伸縮性
4、Ease of use 易用
5、Potability and Standdands Complicance可移植性標準,兼容性好
6、Multiuser Support支持多用戶
7、Internationalization國際化,即支持多種語言
8、wide Application Support廣泛的應用程序,(C,C++,Java,Perl,PHP,)(JDBC,ODBC,NET)
9、Open Source開源

MySQL的版本:
Alpha 內部測試
Beta 公開測試
GA版本,在生產環境中使用,是我們用的版本
4.1曾加了子查詢
5.0引入了觸發器,遊標,存儲過程
5.1引入了表分區,基於行的複製,可插入式的存儲引擎,事件調度器
MySQL Community社區版
MySQL Enterprise企業版,需付費的

MySQL的軟件版本:
MySQL Server    MySQL服務器
MySQL Cluster   MySQL集羣
MySQL Proxy     MySQL代理
MySQL Adminitrator整合起來的圖形的管理工具,至少包含兩個組件MySQL Query Browser和MySQL Workbench設計工具
MySQL Migration Toolkit 移植工具
MySQL Embedded Server 潛入式
MySQL Drivers and Connectors 驅動和連接器

存儲引擎:用於實現物理文件的管理的接口,5.1之前的My1SAM不支持事務,之後是InnoDB完全事務,從性能上MySAM較好。

MySQL的工作特徵:
五個主要組件:連接/線程處理,分析器,查詢緩存,優化器,存儲引擎。
connection pool:連接池,包括認證,線程重用,連接限制,內存檢查,緩存
SQL Interface:DML DDL
Paser;詞法分析器(查詢翻譯,對象權限)
Optimlzer:詞法優化(路徑選擇)
Cache & Buffers:緩存,加速工作效率
存儲引擎:索引,真正存放數據,最終放在文件系統中。

複製:提供負載均衡,多臺服務器,提供相同的數據,主服務器可讀可寫,從服務器可讀。

分區:對錶進行切分

MySQL RPM Packages:
MySQL-client客戶端
MySQL-devel開發包,頭文件,庫文件
MySQL-enbedded潛入式,很小
MySQL-debuginf o調試
MySQL-shared共享庫
MySQL-shared-compat兼容老版本的共享庫
MySQL-test測試組件
PLATFORM.src.rpm源碼的rpm

二進制解壓就能使用的綠色軟件所包含的目錄及子目錄:bin,data,include,lib,man,mysql-test,scripts,share,sql-bench,support-files

在unix上是個集中式的配置文件,爲各種工具提供配置
mysqld按順序查找配置文件
 /etc/my.cnf
 /etc/mysql/my.cnf
 $MYSQL_HOME/my.cnf安裝目錄,默認basedir,datadir
 /path/to/file when defaults-extra-file=/path/to/file is specified
 ~/.my.cnf隱藏文件,登錄到liunx系統上的當前用戶
配置文件最終生效的是所有,若有重複從下往上優先,後找到的覆蓋之前的。

在Windows找配置文件的順序
%WINDIR%\my.init或%WINDIR%\my.cnf
C:\my.ini,C:\my.cnf
%INSTALLDIR%\my.ini,%INSTALLDIR%\my.cnf
/path/to/file when defaults-extra-file=/path/to/file is specified

MySQL的認證結構:
用戶名+主機名,表示誰從那臺主機可以登錄

用戶加密碼:
1、mysqladmin -uroot password 'redhat'
   mysqladmin -uroot password 'redhat' -p指定原密碼
   mysqladmin -uroot -h127.0.0.1 password 'redhat'
2、mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('redhat');
3、mysql> UPDATA user SET PASSWORD = PASSWORD('redhat') WHERE USER='root' and HOST='mysql.magedu.com';

刪除用戶:
mysql> DROP USER ''@localhost;匿名的
mysql> DROP USER 'root'@'::1';

重讀
mysql> FLUSH PRIVILEGES

創建用戶:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY 'redhat'


安裝MySQL:
1、下載軟件包mysql-5.5.15-linux2.6-i686.tar.gz
rpm -qa | grep mysql 查看系統是否安裝
tar xf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local
cd /usr/local
ln -sv mysql-5.5.15-linux2.6-i686 mysql
cd mysql
ls

2、創建邏輯卷
fdisk /dev/sdb
 n
 5
 +10G
 t
 8e
 n
 6
 +10G
 t
 8e
 w
partprobe /dev/sdb
pvcreate /dev/sdb{5,6}
vgcreate myvg /dev/sdb{5,6}
vgs
lvcreate -L 10G -n mydata myvg
lvs
mke2fs -j -L MYDATA /dev/myvg/mydata
mkdir /mydata
vim /etc/fstab
 LABEL=MYDATA /mydata ext3 defaults 0 0
mount -a
mount
(mount /dev/mapper/myvg-mydata /mydata)

3、mkdir -pv /mydata/data
ll /mydata/
groupadd -r mysql
useradd -g mysql -r -M -s /sbin/nologin mysql
id mysql
pwd
ll
chown -R mysql:mysql .
chown -R mysql:mysql /mydata/data/
ls

4、初始化及配置
script/mysql_install_db --datadir=/mydata/data/ --user=mysql
ll
chown -R root .
ln -sv /usr/local/mysql/include /usr/include/mysql
vim /etc/ld.so.conf.d/mysql.conf
 /usr/local/mysql/lib
ldconfig
ls
ls man/
vim /etc/man.config
 MANPATH /usr/local/mysql/man
man mysqld
vim /etc/profile
 PATH=$PATH:/usr/local/mysql/bin
 在export之前
. /etc/profile 生效

4、cd support-files/
ls
cp my-large.cnf /etc/my.cnf
vim /etc/my.cnf
 datadir = /mydata/data
 在[mysqld]中添加
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
service mysqld start

5、mysql連接
mysql> use mysql;設置默認表
mysql> SHOW TABLES;
mysql> DESC user;查看錶
mysql> SELECT HOST,USER,PASSWORD from user;
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('redhat');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY 'redhat';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.%.%' IDENTIFIED BY 'redhat';
mysql> DROP USER ''@localhost;刪除匿名的
mysql> FLUSH PRIVILEGES;
mysql> \q

在Windows中安裝MySQL
mysql -uroot -p -h172.16.6.1連接測試

 

 

 

 

 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章