一、數(shù)據(jù)庫概念
1、數(shù)據(jù)庫的組成:數(shù)據(jù)、表、數(shù)據(jù)庫
數(shù)據(jù)(data)
- 描述事物的符號記錄
- 包括數(shù)字,文字、圖形、圖像、聲音、檔案記錄等
- 以“記錄”形式按統(tǒng)一格式進行存儲(記錄可以看成一條記錄)
表
- 將不同的記錄組織在一起
- 用來存儲具體數(shù)據(jù)
- 記錄:行
- 字段(屬性):列
- 以行+列的形式就組成了表(數(shù)據(jù)存儲在表中)
數(shù)據(jù)庫
- 表的集合,是存儲數(shù)據(jù)的倉庫
- 以一定的組織方式存儲的相互有關的數(shù)據(jù)集合
- 多張表存儲在數(shù)據(jù)庫中
- “關系型數(shù)據(jù)庫”表與表字段/屬性的關聯(lián)
2、數(shù)據(jù)庫類型
(1)關系型數(shù)據(jù)庫
??存儲的往往是字符、字符串、數(shù)值、布爾值等
??代表有:Mysql (Oracle公司) 、SQL server (微軟) 、access (微軟公司office產(chǎn)品)"oracle、DB2 (IBM公司) 、 sybase (sybase)等等
(2)非關系型數(shù)據(jù)庫(NoSQL (Not Only SQL))
??存儲的往往是圖片、視頻、語音等
??代表有:MongoDB 、 Redis (內(nèi)存數(shù)據(jù)庫/緩存數(shù)據(jù)庫) K-V鍵值對、與之類似的Mcmcache K-V鍵值對
- redis 與 Mcmcache
?相同點:存儲高熱數(shù)據(jù)(在內(nèi)存中高速運行)
?不同點 :redis可以做持久化保存,可以存儲對象
3、數(shù)據(jù)庫的管理系統(tǒng)(DBMS)
- 是實現(xiàn)對數(shù)據(jù)庫資源有效組織、管理和存取的系統(tǒng)軟件
- 功能:數(shù)據(jù)庫的建立和維護功能、數(shù)據(jù)定義功能、數(shù)據(jù)操控功能、數(shù)據(jù)庫的運行管理功能、通信功能
4、數(shù)據(jù)庫系統(tǒng)(DBS)
- 是一個人機系統(tǒng),由硬件、OS、數(shù)據(jù)庫、DBMS、應用軟件和數(shù)據(jù)庫用戶組成
- 用戶可以通過DBMS或應用程序操作數(shù)據(jù)庫
二、數(shù)據(jù)庫系統(tǒng)發(fā)展史
1、第一代數(shù)據(jù)庫
- 自20世紀60年代起,第一代數(shù)據(jù)庫系統(tǒng)問世
- 是層次模型與網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)
- 為統(tǒng)一管理和共享數(shù)據(jù)提供了有力的支撐
2、第二代數(shù)據(jù)庫
- 20世紀70年代初,第二代數(shù)據(jù)庫——關系數(shù)據(jù)庫開始出現(xiàn)
- 20世紀80年代初,IBM公司的關系數(shù)據(jù)庫系統(tǒng)DB2問世,開始逐步取代層次與網(wǎng)狀模型的數(shù)據(jù)庫,成為行業(yè)主流
- 到目前為止,關系數(shù)據(jù)庫系統(tǒng)仍占領數(shù)據(jù)庫應用的主要地位
3、第三代數(shù)據(jù)庫
- 自20世紀80年代開始,適應不同領域的新型數(shù)據(jù)庫系統(tǒng)不斷涌現(xiàn)
面向對象的數(shù)據(jù)庫系統(tǒng),實用性強、適應面廣 - 20世紀90年代后期,形成了多種數(shù)據(jù)庫系統(tǒng)共同支撐應用的局面
- 一些新的元素被添加進主流數(shù)據(jù)庫系統(tǒng)中,例如:Oracle支持的“關系-對象"數(shù)據(jù)庫模型
4、當前主流使用
- 當前主流數(shù)據(jù)庫的使用方法為:SQL+NoSQL,能在高并發(fā)時,NoSQL能為SQL進行相應的減壓
三、當今主流數(shù)據(jù)庫
類型 | 特點 |
---|---|
SQL Server (微軟公司產(chǎn)品) | 面向Windows操作系統(tǒng) |
簡單、易用 | |
Oracle (甲骨文公司產(chǎn)品) | 面向所有主流平臺 |
安全、完善、操作復雜 | |
DB2 (IBM公司產(chǎn)品) | 面向所有主流平臺 |
大型、安全、完善 | |
MySQL (甲骨文公司收購) | 免費、開源、體積小 |
四、關系型數(shù)據(jù)庫
- 常見的關系型數(shù)據(jù)庫典型代表:Mysql(5.7 / 8.0)、Mariadb、Oracle、SQL Server、PostgreSQL、DB2
- 國產(chǎn)數(shù)據(jù)庫代表:阿里云的RDB、華為的高斯、騰訊的TDBA、阿里的Oceanbase、人大金倉、達夢
1、介紹
- 關系數(shù)據(jù)庫系統(tǒng)是基于關系模型的數(shù)據(jù)庫系統(tǒng)
- 關系模型的數(shù)據(jù)結構使用簡單易懂的二維數(shù)據(jù)表
- 每一行稱為一條記錄,用來描述一個對象的信息
- 每一行稱為一個字段,用來描述對象的一個屬性
- 關系模型可用簡單的"實體-關系-屬性"來表示
2、實體
- 也稱為實例,對應現(xiàn)實世界中可區(qū)別與其他對象的“事件”或“事物”
- 如銀行客戶、銀行賬戶等
3、關系
- 實體集之間的對應關系稱為聯(lián)系,也稱為關系
- 如銀行客戶和銀行賬戶之間存在“儲蓄”的關系
4、屬性
- 實體所具有的某一特性,一個實體可以有多個屬性
- 如“銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性
5.存儲結構
- 是二維表格,先建立庫,在建立,在建立列()和行*()
五、MySQL數(shù)據(jù)庫基本命令操作
類型 | 說明 |
---|---|
int | 整型(定義整數(shù)類型數(shù)據(jù)) |
float | 單精度浮點,4字節(jié)32位,準確到小數(shù)點后六位 |
double | 雙精度浮點,8字節(jié)64位 |
char | 固定長度的字符類型,定義字符類數(shù)據(jù) |
varchar | 可變長度的字符類型 |
text | 文本 |
image | 圖片 |
decimal (5,2) | 5個有效長度數(shù)字,小數(shù)點后面有2位,指定長度數(shù)組 |
1.查看數(shù)據(jù)庫結構
(1)、進入數(shù)據(jù)庫
mysql -u root -p
-u 連接數(shù)據(jù)庫的用戶名
-p 后面跟的是連接數(shù)據(jù)庫的密碼(不能有空格)
(2)、查看數(shù)據(jù)庫的信息
SHOW DATABASES; #大小寫不區(qū)分,分號“;”表示結束
(3)、查看數(shù)據(jù)庫中包含的表
USE 數(shù)據(jù)庫名;
SHOW TABLES;
(4)、查看表的結構(字段)
USE 數(shù)據(jù)庫名;
DESCRIBE [數(shù)據(jù)庫名.]表名;
可縮寫成:DESC 表名;
這里執(zhí)行就像我們在Linux中使用絕對路徑和相對路徑一樣,當你在所在表的庫中時,可省略前面的數(shù)據(jù)庫名(相對路徑)。
當你需要對其他庫中的表進行操作時,就需要加上庫名(絕對路徑)進行操作。
2.SQL語句概述
(1)、SQL語言
- Structured Query Language 的縮寫,即結構化查詢語言
- 關系型數(shù)據(jù)庫的標準語言
- 用于維護管理數(shù)據(jù)庫,包括數(shù)據(jù)查詢、數(shù)據(jù)更新、訪問控制、對象管理等功能
(2)、SQL分類
DDL | 數(shù)據(jù)定義語言,用于創(chuàng)建數(shù)據(jù)庫對象,如庫、表、索引等 |
---|---|
DML | 數(shù)據(jù)操縱語言,用于對表中的數(shù)據(jù)進行管理 |
DQL | 數(shù)據(jù)查詢語言,用于從數(shù)據(jù)表中查找符合條件的數(shù)據(jù)記錄 |
DCL | 數(shù)據(jù)控制語言,用于設置或者更改數(shù)據(jù)庫用戶或角色權限 |
3.SQL語句基本操作
(1)、DDL:用于創(chuàng)建數(shù)據(jù)庫對象,如庫、表、索引等
- 創(chuàng)建新的數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名;
- 創(chuàng)建新的表
CREATE TABLE 表名 (字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[,...][,PRIMARY KEY (主鍵名)]);
#主鍵一般選擇能代表唯一性的字段不允許取空值(NULL),一個表只能有一個主鍵。
create table class1(id int, name char(4), age int, sex char(4));
desc class1;
show tables;
field | 字段 |
---|---|
type | 類型 |
null | 允許為空 |
not null | 不允許為空 |
default | 默認為空 |
primary key | 主鍵(一般選擇沒有重復且不為空的字段) |
- 刪除指定的數(shù)據(jù)表
use 數(shù)據(jù)庫名;
drop table 表名;
或
drop table [數(shù)據(jù)庫名.]表名;
- 刪除指定的數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名;
例:show databases;
drop table internet.class2
show tables;
(2)、DML管理表中的數(shù)據(jù)記錄
- 向數(shù)據(jù)表中插入新的數(shù)據(jù)記錄:insert
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);;
insert into class1(id,name,age,sex) values(1, 'xc', 24, '男');
desc class1
select * from class1
- 查詢數(shù)據(jù)記錄
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 條件表達式];
select * from class1
select name,sex from class1 where id=2;
select name,age from class1 where id=1;
- 修改、更新數(shù)據(jù)表中的數(shù)據(jù)記錄:update
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 條件表達式];
insert into class1 values(4,'gw',26,'男');
insert into class1 values(6,'yxy',23,'女');
insert into class1 values(6,'yxy',23,'女');
select * from class1;
select * from class2
update class2 set address='江蘇南京鼓樓' where id =1;
select * from class2;
- 在數(shù)據(jù)表中刪除指定的數(shù)據(jù)記錄:delete
delete from 表名 [where 條件表達式];
delete class1 id=3 where name='ywy';
select * from class1;
(3)、DQL 查詢數(shù)據(jù)記錄——select
select 字段名1,字段名2[,...] from 表名 [where 條件表達式];
小技巧:
select * from 表名; #顯示全部
select 字段1,字段2 from 表名; #顯示字段1和字段2
select 字段1 from 表名\G; #以列表形式豎向顯示
select * from 表名 info limit 2; #只顯示頭2行
select * from 表名 info limit 2,3; #顯示第2行后的前3行
(4)、修改表名和表結構——alter
- 修改表名
ALTER TABLE 舊表名 RENAME 新表名;
例:alter table class1 rename class2;
show tables;
select * from class1;
select * from class2;
- 擴展表結構(增加字段)
alter table class2 add address varchar(30) default '地址不詳';
#default ‘地址不詳’:表示此字段設置默認值 地址不詳;可與 NOT NULL 配合使用
- 修改字段(列)名,添加唯一鍵
alter table 表名 change 舊列名 新列名 數(shù)據(jù)類型 [unique key];
#change 可修改字段名、數(shù)據(jù)類型、約束等所有項
唯一鍵:唯一,但可以為空(空值只能出現(xiàn)一次)
#每張表往往有多個字段具有唯一性,但是只能指定一個主鍵,所以唯一鍵就是用來解決表中多個字段需要具有唯一性的問題
主鍵包含唯一鍵的部分屬性
唯一鍵不能完全作為主鍵
select * from class2;
insert into class2(id,personal_name,age,sex) values(7,'nwt',22,'女'); #因為personal_name中已經(jīng)存在nwt,所以不能在創(chuàng)建相同的數(shù)據(jù)
insert into class2(id,personal_name,age,sex) values(7,'aklnjl',22,'女'); #因為設置的字數(shù)不超過5個,很明顯違反了規(guī)則
insert into class2(id,personal_name,age,sex) values(7,'opp',22,'女');
select * from class2;
4、刪除字段、主鍵文章來源:http://www.zghlxwxcb.cn/news/detail-482290.html
alter table 表名 drop 字段名;
alter table class2 drop age;
select * from class2;
alter table class2 drop sex;
select * from class2;
文章來源地址http://www.zghlxwxcb.cn/news/detail-482290.html
到了這里,關于MySQL數(shù)據(jù)庫概念、管理以及SQL語句的基本命令操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!