Mysql資料庫學習(一):資料庫基本概念、關係型資料庫、Mysql資料庫安裝配置、DDL/DCL/DML語句

s1mba發表於2014-02-18

一、資料庫基本概念

資料庫(DB)

按照資料結構來組織、儲存資料的倉庫

資料庫管理系統(DBMS)

資料庫管理系統(Database Management System)是一套操縱和管理資料庫的軟體,是用於建立、使用和維護資料庫

資料庫系統(DBS)

資料庫

資料庫管理系統(及其開發工具)

應用系統

資料庫管理員

使用者


二、關聯式資料庫

關聯式資料庫

採用關係模型作為資料組織方式。簡單地說資料的邏輯結構是一張二維表,由行和列組成。表的每一行為一個元組,每一列為一個屬性。

關係的完整性約束

實體完整性

主鍵不為空(不能重複)

參照完整性(外來鍵)

或者為空,或者等於另一個關係的主碼值

使用者定義的完整性

用於設定某個屬性的取值範圍


如果將民族編碼和部門編碼設定為外來鍵,那麼出現的值必須為1 or 2 or NULL。


常見的關係型資料庫:

1.MySQL 2.SQL Server 3.Oracle 4.Sybase 5.DB2 6. Informix 7.Access



三、資料庫設計三正規化

1NF,資料庫表的每一列都是不可分割的基本資料項



2NF,首先滿足1NF,要求資料庫表中的每個實體必須可以被唯一地區分(主關鍵字),要求實體的非主屬性完全依賴於主關鍵字

3NF,首先滿足2NF,每一列資料都和主鍵直接相關,而不能間接相關,即不能傳遞依賴於主關鍵字

最後滿足三正規化拆分為多個表:
學號 姓名 系號
系號 系名 系主任
學號 課程號 成績
課程號 課程


四、Mysql資料庫的安裝啟動

mysqld.exe 伺服器端程式(如果安裝的時候沒有啟動,則在cmd 中 mysqld -install)
mysql.exe 客戶端程式 (用於連線資料庫,也推薦使用navicat)
其它工具集


啟動服務

通過服務控制皮膚來控制(services.msc)

通過命令列

net start MySQL

net stop MySQL


修改密碼:

mysqladmin -u root -poldpass password newpass

mysqladmin -usimba -p123456 password 123 /*要有許可權才可以修改*/

如果重灌,需要把regedit 登錄檔中有關mysql的部分清理乾淨

伺服器啟動時會讀取my.ini 配置檔案,如果沒有,可以直接建立一個,類似如下的內容:

[mysqld]

#繫結IPv4和3306埠
bind-address = 0.0.0.0
port = 3306

# 設定mysql的安裝目錄
basedir=D:/mysql-5.6.13

# 設定mysql資料庫的資料的存放目錄
datadir=D:/mysql-5.6.13/data

# 允許最大連線數
max_connections=200

五、一些基本的DDL/DCL/DML語句

SQL即StructuredQuery Language;

DDL( Data Definition Language資料定義語言)

——用來建立資料庫、資料庫物件和定義其列

——CREATE 、DROP 、ALTER 等

DCL( Data Control Language資料控制語言)

——用來控制存取許可、存取許可權等;

——GRANT、REVOKE 等;

DML( Data Manipulation Language資料操作語言)

——查詢、插入、刪除和修改資料庫中的資料;

——SELECT、INSERT、 UPDATE 、DELETE等;

 SQL Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create database dbname [資料庫選項]; /* 如果資料庫名是特殊的如 234 或者保留名稱如 database,那麼需要使用反引號`` 括起來 */

show create database dbname;    /* 建立過程都做了哪些設定 */

alter database dbname character set gbk     /* 支援中文 */

create user username identified by '123456' /* 密碼用引號括起 */

grant select,insert,update,delete on *.* to username @'%' identified by '123456' /*  *.*表示任意資料庫的任意表  '%'表示任意主機 */
# 注:grant 會 在 系統增加一個 user.

grant all privileges on *.* to username@'%'
revoke all privileges on *.* from username@'%'




# kill 掉特定使用者的所有連線
mysql>select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)

mysql>source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)

#殺掉鎖定的MySQL連線
for id in `mysqladmin processlist|grep -i locked|awk -F '|' '{print $2}'`; do    mysqladmin kill ${id}; done 

#mysql 進入shell 環境
mysql> \! sh
sh-4.1$ exit
exit

六、常見錯誤

1). Can't connect to local MySQL server through socket '/tmp/mysql.sock'

這時候先看 tmp 目錄下是否有 mysql.sock 這個檔案,如果/tmp下有該檔案的話就是許可權問題(看是否是 mysql 客戶端連線,還是 

apache->php 連線),如果沒有則 find /  -name 'mysql.sock' 看這個檔案存在哪個目錄,假如是 /var/lib/mysql/mysql.sock,直接

建一個軟連結,ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock  。


2).Access denied for user 'zabbix'@'localhost' (using password: YES)

一般是許可權或者密碼錯誤問題,grant 一下許可權。



參考:

資料庫系統概論

mysql 5.1 參考手冊


相關文章