初識資料庫
一、認識資料庫
關係型資料庫:MySQL資料庫、Oracle、SQL Server資料庫等。
非關係型資料庫:MongoDB、Redis等。
其中MySQL資料庫是現在應用非常廣泛的的資料庫:
主要優勢如下:
- 執行速度快
- 使用成本低
- 容易使用,複雜程度較低
- 可移植性強
- 適用於更多使用者,免費開源(一般適用於大多數中小公司)
資料庫管理系統和資料庫系統,是兩個不同的概念!
資料庫管理系統(DataBase Management System, DBMS )是一種軟體,由一個互相關聯的資料集合和一組訪問資料的程式構成,通常我們都叫資料庫管理系統為資料庫!
主要功能是維護資料庫。
資料庫系統(DataBase System,DBS)是一個實際可以執行的系統,可以對系統提供的資料進行儲存,維護和應用!
資料冗餘和資料完整性:
在資料庫系統中,資料重複就是資料冗餘。
資料完整性就是指資料庫中資料的準確性。
資料庫中的主鍵和外來鍵:
主鍵(primary key):在資料庫中,有這樣一列,可以用來唯一標識表中的每一行,用於強制表的實體完整性,這樣的列就是表的主鍵!
如果兩列或者多列組合起來唯一標識表中的每一行,那麼這個主鍵就叫做複合主鍵!!!
外來鍵(Foreign key):是用來引用主表中的資料,是相對於主鍵而言的。外來鍵用來強制引用完整性,一個表裡面可以有多個外來鍵。
二、使用資料庫
1.使用命令檢查資料庫是否啟動:
可以在DOS視窗輸入 net start mysql啟動資料庫服務,或者輸入 net stop mysql停止MySQL服務!
2.連線資料庫:
mysql -h伺服器主機地址 -u使用者名稱 -p密碼
注意:如果是在本機操作,不用寫-h.....-p和密碼之間沒有空格!!!
3.檢視當前安裝的MySql版本資訊和連線使用者名稱:
SELECT VERSION(),USER();
其中VERSION()返回的是版本號:如 5.5.20 , USER()返回的是連線資料庫的使用者名稱:如 [email protected]
4.SQL:全稱是結構化查詢語言(Structured Query Language),也是關係資料庫的標準語言!
5.SQL的組成:根據功能劃分,SQL語言主要由以下幾個部分組成。
(一)DML (資料操作語言,又叫資料操縱語言):用來插入,修改,刪除資料庫中的資料,如INSERT ,UPDATE,DELETE等。
(二)DDL (資料定義語言):用來建立資料庫,資料庫物件,定義資料表結構等。大部分是以CREATE 開頭的命令,如CREATE TABLE ,CREATE VIEW 以及DROP TABLE等。
(三)DQL(資料查詢語言):用來對資料的查詢,如SELECTdent
(四)DCL (資料控制語言):用來控制資料庫元件的存取許可,存取許可權等。如GRANT ,REVOKE,COMMIT等。
6.資料庫中的運算子:
(一)算術運算子
運算子 | 說明 |
+ | 加號運算,求兩個數或表示式的和 |
- | 減號運算,求兩個數或表示式的差 |
* | 乘號運算,求兩個數或表示式的積 |
/ | 除號運算,求兩個數或表示式的商 |
% | 取模運算,求兩個數或表示式的餘數 |
(二)賦值運算子
" = ” 表示把一個數或者變數賦值給另一個變數。
(三)比較運算子
運算子 | 說明 |
= | 等於。如 age=20 |
> | 大於。如 price>9 |
< |
小於 |
<> | 不等於 |
>= | 大於等於 |
<= | 小於等於 |
!= | 不等於 |
注意:比較運算子中的計算結果是布林型別,返回值是TRUE或者FALSE
(四)邏輯運算子
運算子 | 說明 |
AND(&&) | 並且 |
OR(||) | 或者 |
NOT(!) | 非,取反,優先順序最高 |
三、MySQL 資料庫的基本操作:
1.對資料庫的基本
create database 資料庫名; #建立資料庫
注意:在Windows系統下,預設是不區分大小寫的!分號代表一行結束,一般都加上。
show databases; #檢視所有的資料庫
use 資料庫; #切換資料庫
drop database 資料庫名; #刪除資料庫
2.對資料表的基本操作
(一)資料型別(常用的)
資料型別 | 位元組數 | 取值範圍 |
TINYINT | 1 |
有符號:-2的7次方~2的7次方 無符號:0~2的8次方-1 |
INT | 4 | 有符號值:-2的31次方~2的31次方-1 |
DOUBLE | 8 | |
DECIMAL[(M),D] | M+2位元組 |
M:總位數 D:小數位精度位數 |
注意:有符號的可以存正數,負數,無符號的只能存正數!
(二)字串型
資料型別 | 位元組 |
說明 |
CHAR【M】 | M位元組 |
固定長度 M為0~255的整數 |
VARCHAR[M] | 可變長度 |
可變長度的字串 M為0~65535的整數 |
TINYTEXT | 0~255 | 微型文字串 |
TEXT | 0~65535 | 長文字 |
(三)日期型別
資料型別 | 格式 | 取值範圍 |
DATE | YYYY-MM-DD | 1000-01-01~9999-12-31 |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 ~9999-12-31 23:59:59 |
TIME | hh:mm:ss | |
TIMESTAMP | YYYYMMDDHHMMSS | 1970年某時刻~2038年某時刻,精度為1s |
YEAR | YYYY格式的年份 | 1901~2155 |
3.建立表
#語法如下:
create table [if not exists] 表名(
欄位名 資料型別 [欄位屬性] [約束] [索引] [註釋],
)[表型別][表字符集][註釋];
#注意:[]裡面的可寫可不寫,根據實際需求去寫就好!
常用的欄位屬性約束
欄位屬性約束名 | 關鍵字 | 說明 |
非空約束 | NOT NULL | 不允許為空NULL |
預設約束 | DEFAULT |
預設值設定 格式為:DEFAULT '男' 或者 DEFAULT 1 |
唯一約束 | UNIQUE KEY | 表示欄位的值是唯一的,允許為空,但只能有一個為空 |
主鍵約束 | PRIMARY KEY | 設定該欄位為表的主鍵,可以作為該表的唯一的標識 |
外來鍵約束 | FOREIGN KEY |
用於建立兩表之間的關係,需要指定那個表引用哪個欄位。 注意:InnoDB引擎:支援外來鍵,MyISAM不支援,外來鍵關聯的表要求都是InnoDB的表。 |
自動增長 | AUTO_INCREMENT |
(1)設定該列為自增欄位,預設為每條自增1 (2) 通常用來設定主鍵,而且是整數型別 (3) 可設定初始值和步長 |
補充:設定步長和自增
#設定初始值
auto_increment=5;
#設定步長
auto_increment_increment=3;
#設定步長起點偏移
auto_increment_offset=1;
4.設定主鍵
#建立表
create table student(
`studentNo` int(4) primary key, #設定主鍵,``區別保留字
);
#多欄位聯合主鍵
create table student(
id int(4),
name varchar(50),
primary key(id,name) #設定聯合主鍵
);
5.查看錶和刪除表
#查看錶
show tables;
#查看錶的定義
desc 表名;
#刪除表
drop table 表名;
6.修改表
#1.修改表名
alter table 舊錶名 rename 新表名;
#2.新增欄位
alter table 表名 add 欄位名 資料型別 [屬性];
#3.修改欄位
alter table 表名 change 原欄位名 新欄位名 資料型別 [屬性];
#4.刪除欄位
alter table 表名 drop 欄位名;
#5.新增主鍵約束
alter table 表名 add constarint 主鍵名 primary key 表名 (主鍵欄位);
#6.新增外來鍵約束:
alter table 表名 add constarint 外來鍵名 foreign key (外來鍵欄位)
references 關聯表名(關聯欄位);
#注意:新增外來鍵約束時,外來鍵表在前,主鍵表在後!主鍵是被引用,外來鍵是引用主鍵!
#刪除時要先刪除子表,再刪除主表。