1. 程式人生 > >初識資料庫

初識資料庫

一、認識資料庫

關係型資料庫: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 關聯表名(關聯欄位);

#注意:新增外來鍵約束時,外來鍵表在前,主鍵表在後!主鍵是被引用,外來鍵是引用主鍵!
#刪除時要先刪除子表,再刪除主表。