資料庫基礎 快速學習 理解 一張圖理解資料庫(附帶相關資源)第一天
資料庫
資料庫管理系統:指一種操作和管理資料庫的大型軟體,用於建立、使用和維護資料庫,
對資料庫進行統一管理和控制,以保證資料庫的安全性和完整性。使用者通過資料庫管理系
統訪問資料庫中表內的資料。
資料庫表
資料庫中以表為組織單位儲存資料。
常見資料庫
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 into 表 values (值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 約束,請使用下面的 SQL:
ALTER 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
UNIQUE 和 PRIMARY 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 約束,請使用下面的 SQL:
ALTER TABLE Persons DROP INDEX 名稱
alter table persons dorp index
l 如果新增唯一約束時,沒有設定約束名稱,預設是當前欄位的欄位名。
外來鍵約束
FOREIGN KEY 表示外來鍵約束
使用SQL語句要注意:
SQL語句不區分大小寫,建議關鍵字大寫,其他小寫。
java中的string型別對應資料庫中varcahr(長度)
新增或修改時,值的個數必須和列的個數對應。
如果是數字型別可以直接寫,其他型別必須要加’‘;
sql語句的結束標識是;
進行刪除和修改操作之前,一定要備份。
最後給大家福利:
先是一張思維記憶圖