1. 程式人生 > >資料庫基礎 快速學習 理解 一張圖理解資料庫(附帶相關資源)第一天

資料庫基礎 快速學習 理解 一張圖理解資料庫(附帶相關資源)第一天

資料庫

資料庫管理系統:指一種操作和管理資料庫的大型軟體,用於建立、使用和維護資料庫,
對資料庫進行統一管理和控制,以保證資料庫的安全性和完整性。使用者通過資料庫管理系
統訪問資料庫中表內的資料。

資料庫表

資料庫中以表為組織單位儲存資料。

常見資料庫

MYSQL :開源免費的資料庫,小型的資料庫.已經被Oracle收購了.MySQL6.x版本也開始收費。
Oracle :收費的大型資料庫,Oracle公司的產品。Oracle收購SUN公司,收購MYSQL。
DB2 :IBM公司的資料庫產品,收費的。常應用在銀行系統中.
SQLServer:MicroSoft 公司收費的中型的資料庫。C#、.net等語言常使用。
SyBase :已經淡出歷史舞臺。提供了一個非常專業資料建模的工具PowerDesigner。
SQLite : 嵌入式的小型資料庫,應用在手機端。
常用資料庫:MYSQL,Oracle.

SQL語句

SQL語句分類

l SQL分類:
n 資料定義語言:簡稱DDL(Data Definition Language),用來定義資料庫物件:資料庫,表,列等。關鍵字:create,alter,drop等
n 資料操作語言:簡稱DML(Data Manipulation Language),用來對資料庫中表的記錄進行更新。關鍵字:insert,delete,update等
n 資料控制語言:簡稱DCL(Data Control Language),用來定義資料庫的訪問許可權和安全級別,及建立使用者。
n 資料查詢語言:簡稱DQL(Data Query Language),用來查詢資料庫中表的記錄。關鍵字:select,from,where等

SQL通用語法

l SQL語句可以單行或多行書寫,以分號結尾
l 可使用空格和縮排來增強語句的可讀性
l MySQL資料庫的SQL語句不區分大小寫,關鍵字建議使用大寫
n 例如:SELECT * FROM user。
l 同樣可以使用/**/的方式完成註釋
l MySQL中的我們常使用的資料型別如下
這裡寫圖片描述

詳細的資料型別如下(不建議詳細閱讀!)
這裡寫圖片描述

DDL之資料庫操作:database

建立資料庫

create database 資料庫名
create database 資料庫名 character set 字符集;

例:
#建立資料庫 資料庫中資料的編碼採用的是安裝資料庫時指定的預設編碼 utf8
CREATE
DATABASE webdb_1;
#建立資料庫 並指定資料庫中資料的編碼 CREATE DATABASE webdb_2 CHARACTER SET utf8; 檢視資料庫MySQL伺服器中的所有的資料庫: show databases; 檢視某個資料庫的定義的資訊: show create database 資料庫名; 刪除資料庫 drop database 資料庫名稱; l 檢視正在使用的資料庫: select database(); 切換資料庫: use 資料庫名; 檢視資料庫中所有的表: show tables; 查看錶結構: desc 表名;

DDL之表操作:table

 建立表
create table 表名(
   欄位名 型別(長度) [約束],
   欄位名 型別(長度) [約束],
   ...
);
primary key 主鍵,被主鍵修飾字段中的資料,不能重複、不能為null。

 查看錶
l 檢視資料庫中的所有表:
show tables;

 刪除表
drop table 表名;

修改表結構格式:
l alter table 表名 add 列名 型別(長度) [約束];
作用:修改表新增列.

l alter table 表名 modify 列名 型別(長度) 約束;
作用:修改表修改列的型別長度及約束.

l alter table 表名 change 舊列名 新列名 型別(長度) 約束;
作用:修改表修改列名.

l alter table 表名 drop 列名;
作用:修改表刪除列.

l rename table 表名 to 新表名;
作用:修改表名

l alter table 表名 character set 字符集(瞭解);
作用:修改表的字符集

DML資料操作語言

插入表記錄:insert
-- 向表中插入某些欄位
insert into 表 (欄位1,欄位2,欄位3..) values  (值1,值2,值3..);
-- 向表中插入所有欄位,欄位的順序為建立表時的順序
insert intovalues (值1,值2,值3..);

 注意:
值與欄位必須對應,個數相同,型別相同
 值的資料大小必須在欄位的長度範圍內
除了數值型別外,其它的欄位型別的值必須使用引號引起。(建議單引號)
如果要插入空值,可以不寫欄位,或者插入 null。

更新表記錄:update
用來修改指定條件的資料,將滿足條件的記錄指定列修改為指定值
--更新所有記錄的指定欄位
update 表名 set 欄位名=值,欄位名=值,...;
--更新符合條件記錄的指定欄位
update 表名 set 欄位名=值,欄位名=值,... where 條件;

l 注意:
u 列名的型別與修改的值要一致.
u 修改值得時候不能超過最大長度.
u 除了數值型別外,其它的欄位型別的值必須使用引號引起

刪除記錄:delete
delete from 表名 [where 條件];
或者
truncate table 表名;

注意:
刪除表中所有記錄使用delete from 表名; 還是用truncate table 表名;
刪除方式:delete 一條一條刪除,不清空auto_increment記錄數。
truncate 直接將表刪除,重新建表,auto_increment將置為零,從新開始。

DOS操作資料亂碼解決

1)檢視MySQL內部設定的編碼
show variables like ‘character%’; 檢視所有mysql的編碼
2)需要修改client、connection、results的編碼一致(GBK編碼)
解決方案1:在cmd命令視窗中輸入命令,此操作當前視窗有效,為臨時方案。
set names gbk;
解決方案2:安裝目錄下修改my.ini檔案,重啟服務所有地方生效。
default -character -set=“ ” 這裡改成要改的碼錶

SQL約束

主鍵約束

PRIMARY KEY 約束唯一標識資料庫表中的每一條記錄。
primary key primary
逐漸必須包含唯一的值。
主鍵列不能包含null值。
每一個表都應該有一個主鍵,並且每個表只能有一個主鍵。

新增主鍵約束
方式一:建立表時,在欄位描述處,宣告指定欄位為主鍵
Id_P int PRIMARY KEY,
方式二:建立表時,在constraint約束區域,宣告指定欄位為主鍵
n 格式:[constraint 名稱] primary key (欄位列表)
n 欄位列表需要使用小括號括住,如果有多欄位需要使用逗號分隔。宣告兩個以上欄位為主鍵,我們稱為聯合主鍵。
CONSTRAINT pk_PersonID PRIMARY KEY (FirstName,LastName)
或
PRIMARY KEY (FirstName,LastName)
l 方式三:建立表之後,通過修改表結構,宣告指定欄位為主鍵:
ALTER TABLE Persons ADD [CONSTRAINT 名稱] PRIMARY KEY (欄位列表)
alter table persons add primary key
ALTER TABLE Persons ADD PRIMARY KEY (FirstName,LastName)

刪除主鍵約束
如需撤銷 PRIMARY KEY 約束,請使用下面的 SQLALTER TABLE Persons DROP PRIMARY KEY
alter table presons drop primary key

自動增長列
我們可以在表中使用 auto_increment(自動增長列)關鍵字,自動增長列型別必須是整形,自動增長列必須為鍵(一般是主鍵)
P_Id int PRIMARY KEY AUTO_INCREMENT,    auto_in cre ment   auto_in cre ment 
l 向persons新增資料時,可以不為P_Id欄位設定值,也可以設定成null,資料庫將自動維護主鍵值。
擴充套件:預設AUTO_INCREMENT 的開始值是 1,如果希望修改起始值,請使用下列 SQL 語法:ALTER TABLE Persons AUTO_INCREMENT=100
alter table prisons auto_increment

非空約束
NOT NULL 約束強制列不接受 NULL 值。
NOT NULL 約束強制欄位始終包含值。這意味著,如果不向欄位新增值,就無法插入新記錄或者更新記錄。
Id_P int NOT NULL,

唯一約束
UNIQUE 約束唯一標識資料庫表中的每條記錄。 unique  unique unique
UNIQUEPRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
 新增唯一約束
與主鍵新增方式相同,共有3種,
l 方式1:建立表時,在欄位描述處,宣告唯一:
Id_P int UNIQUE,
l 方式2:建立表時,在約束區域,宣告唯一:
CONSTRAINT 名稱UNIQUE (Id_P)
l 方式3:建立表後,修改表結構,宣告欄位唯一:
ALTER TABLE Persons ADD [CONSTRAINT 名稱] UNIQUE (Id_P)
alter table persons add unique id

 刪除唯一約束
l 如需撤銷 UNIQUE 約束,請使用下面的 SQLALTER TABLE Persons DROP INDEX 名稱
alter table persons dorp index 
l 如果新增唯一約束時,沒有設定約束名稱,預設是當前欄位的欄位名。

外來鍵約束
FOREIGN KEY 表示外來鍵約束

使用SQL語句要注意:
SQL語句不區分大小寫,建議關鍵字大寫,其他小寫。
java中的string型別對應資料庫中varcahr(長度)
新增或修改時,值的個數必須和列的個數對應。
如果是數字型別可以直接寫,其他型別必須要加’‘;
sql語句的結束標識是;
進行刪除和修改操作之前,一定要備份。

最後給大家福利:
先是一張思維記憶圖
這裡寫圖片描述