亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
慕課專欄

目錄

索引目錄

10+年DBA老司機帶你輕松玩轉 SQL

原價 ¥ 48.00

立即訂閱
02 了解數據庫和 SQL 語言的關系
更新時間:2020-08-19 09:42:47
知識猶如人體的血液一樣寶貴。——高士其

2.1 什么是數據庫?

數據庫(Database)是以特定組織方式存儲以及管理數據的倉庫,我們日常生活中經常會接觸到數據庫,通過瀏覽器打開網站查閱的新聞,打開微信查看的朋友圈,你從銀行賬戶中查詢到的金額等等,這些數據都存儲在數據庫中。

這么說可能你還是有些疑惑。換個說法:你知道 Excel 電子表格嗎?

電子表格和數據庫之間有很多的相似點:都可以存儲和訪問數據,都可以按照需求篩選出自己需要的記錄,也可以通過某些特定函數完成數據的統計。電子表格是一個后綴名為 .xls 或者 .xlsx 的文件。數據庫同樣是一個后綴名為 .sql 的文件。

2.2 有了 Excel 還需要數據庫嗎?

那你可能會問:既然有了Excel 了,為什么還要有數據庫呢?它們兩個有什么差別?

不知道你有沒有經歷過這樣一個場景:當你在電子表格中操作數據還未完成時,電腦突然宕機,導致前功盡棄。但是數據庫確具有完善的安全管理機制,在這種場景下能將數據進行完美恢復,并將數據損失降到最小。

另外,數據庫是可以在線共享的,它允許多人同時操作同一張表格,卻不會導致數據混亂。電子表格卻無法實現多人同時編輯同一張表格,即使可以也需要設置復雜的共享操作。

并且,數據庫在存儲硬件允許的情況下,可以存放海量的數據,并且支持比較復雜的計算和查詢,而且效率也是遠超電子表格,當然數據庫的功能遠不止這些,我們在后面的章節會一一把數據庫的優點向大家展示。

2.3 數據庫管理系統

有了數據庫,當然要對數據庫進行管理,自然而然的數據庫管理系統就應運而生了。數據庫管理系統就類似于 WPS 和 Office。這兩個軟件都可以管理后綴名為 .xls 或者 .xlsx 的電子表格。而數據庫管理系統就是用來管理后綴名為 .sql 的數據庫文件的一個軟件。

不同于 WPS 和 Office 的劃江而治,數據庫管理系統可以說是百花爭艷,比如說付費的有甲骨文公司的 Oracle、IBM的DB2、微軟的 SQL Server,開源的有 MySQL 和 PostgreSQL。都是比較成熟的數據管理系統產品。

在選擇數據庫時需要結合具體項目業務及投入成本等因素綜合考慮,比如銀行、金融、物流等數據量大、對安全性要求高且投入較大的項目使用Oracle和SQLL Server會更好,Mysql 和 PostgreSQL 則更適合互聯網方向的中小型項目,對于初學者可以選擇 SQLL Server 或者 Mysql 來入門。

為了讓大家更全面了解各個主流數據庫的差異,后續各小節會對同一功能 SQL 查詢在不同數據庫上進行對比驗證,如沒有特殊說明,本課程執行 SQL 語句的具體數據庫版本默認為 MariaDB 10.3.12(MySQL的一個分支)或者 SQL Server 2012、Oracle 11.2.0.1、PostgreSQL 11.6。

2.4 安裝 MariaDB 10.3.21

在使用數據庫之前,和大家一起了解下數據庫 MariaDB 10.3.21 的安裝過程:

首先 Vmware 上新建虛擬機安裝 CentOS7.5,root 用戶登錄:

圖片描述

進入 /etc/yum.repos.d 生成 MariaDB.repo 文件 :

[root@zh01 ~]# cd /etc/yum.repos.d/
[root@zh01 yum.repos.d]# cat Mariadb.repo 
[Mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

運行安裝命令安裝 MariaDB :

yum -y install MariaDB-server MariaDB-client

安裝成功之后啟動 MariaDB 服務,并設為開機自啟:

systemctl start mariadb #啟動服務  

systemctl enable mariadb #設置開機啟動

登錄到 MariaDB 數據庫:

  mysql -uroot -p

輸入上面命令后,系統會提示我們輸入密碼,此時 root 默認密碼為空,直接回車即可。

圖片描述

如果要退出 MariaDB,輸入 exit; 后回車即可。

進行MariaDB的相關簡單配置,在 Linux 命令行輸入命令:

mysql_secure_installation 

回車后,系統會提示我們進行以下內容的設置:

Enter current password for root (enter for none):<–初次運行直接回車
Set root password? [Y/n] <– 是否設置root用戶密碼,輸入y并回車或直接回車
New password: <– 設置root用戶的密碼
Re-enter new password: <– 再輸入一次你設置的密碼
Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,回車
Disallow root login remotely? [Y/n] <–是否禁止root遠程登錄,回車(后面授權配置)
Remove test database and access to it? [Y/n] <– 是否刪除test數據庫,回車
Reload privilege tables now? [Y/n] <– 是否重新加載權限表,回車

初始化MariaDB完成,再次登陸需要輸入設置的密碼。

配置 MariaDB 的字符集,使得 MariaDB 服務端支持中文 :

vi /etc/my.cnf  
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

systemctl restart mariadb #重新啟動  

2.5 什么是表?

表-Table,是數據庫存貯數據的基本單元。你可以把表設想為電子表格中的 Sheet 頁。而表就是數據庫中的 Sheet 頁。

上面的例子可能不太形象,換個說法。如果把數據庫比作一列貨運火車,那么Schema(模式,也叫架構)就是這列火車的一節節的車廂,每間車廂中放置有很多包裝箱,這些包裝箱就是表。

在同一個車廂中,包裝箱編號不能重名,但不同車廂中的包裝箱編號可以重名,Schema和表也同樣具有這個特點。同一間車廂存放著相同規格的包裝箱,就像同一個模式下的表具有相同的特性(表如何存儲,什么樣的數據,數據如何分解等)。也可以將 Schema 看做操作系統上的目錄,里面的文件就是表,只是 Schema 里面不能創建 Schema,而目錄里面是可以繼續創建目錄。

火車 ———>> 數據庫
車廂 ———>> Schema
包裝箱 ———>>
貨物 ———>> 表中存放數據

一張表只能存一種相關的實體,比如可以存放學生信息,課程信息,學生選課記錄等。 學生信息和課程信息不能存放在一張表中,這樣會導致查詢很困難,而且數據混亂。

值得注意的是,Schema 除包含表之外,還可以包含與表相關的視圖,索引,數據類型,函數以及操作符等數據庫對象。另外 Schema 在不同數據庫中它的含義稍有差別,在 SQL Server 和 PostgreSQL 中默認 Schema 分別為 dbo 和 public ,它們和用戶權限有很大關系,在你創建數據庫對象時,如果沒有指定 Schema,數據庫對象歸屬于這些默認的 Schema。而在 MySQL 中,Schema 就是指的數據庫,在Oracle 中一個 Schema 對應著一個用戶。

2.6 什么是列、行和數據類型

如果說一張表就是一個實體,那么表中的列就是這個實體的屬性,比如學生(實體)表中有年齡,性別和學號等列來表示學生的屬性,一行就是指一條記錄,一名學生的相關屬性數據就可以存放成一行數據。從上面可以看出數據庫中的行和列與Excel中的行和列很類似。

數據庫的數據類型是和列并存的,它指定了列在計算中以什么數據形式存儲,雖然常用的數據類型就幾種,但在各種數據庫中卻存在名稱上或用法上的細微差異,下表列出了四種數據庫主要數據類型對比:

SQLServer MySQL ORACLE PostgreSQL
int int NUMBER int4
varchar varchar VARCHAR2 varchar
nvarchar varchar NVARCHAR2 varchar
datetime datetime DATE timestamp
decimal decimal NUMBER numeric
text longtext CLOB text
tinyint tinyint NUMBER int2
bit tinyint NUMBER bool
float float FLOAT foloat8

2.7 SQL 語句

現在大家已經知道了數據庫,表,行列數據的概念了。那么問題就來了:我該怎么操作數據庫,表,行列數據呢?

這時,就不得不說一下本門課程的重點 SQL 語句了。Sql是操作和管理數據庫的工具,是人們與數據庫交互的一種計算機語言,它由關鍵字(如select ,from,where,order by ,create等)、表名、字段等組合成的一條語句,Sql 語句分為以下幾種類型:

  • DDL(Data Definition Language,數據定義語言) 日常使用的創建數據庫或表的Create 語句,刪除數據庫或表的Drop語句,以及修改數據庫或表的alter 語句都屬于該類型,比如我們在SQL Server上的數據庫中創建一張學生表:

圖片描述

  • DML(Data Manipulation Language,數據操作語言)對表的增刪改查都屬于 DM L語句,比如我們查詢年齡大于29歲的學生:

圖片描述

  • 除此之外,還有 DCL(Data Control Language,數據控制語言),它主要完成對數據庫變更操作的確認和取消,以及用戶對數據庫對象權限的設定。比如 update 語句后面出現 commit 表示確認更新完成,出現 rollback 代表取消更新,數據保持不變。

2.8 測試數據獲取

本專欄相關表結構和數據可以通過以下鏈接獲?。?a >https://github.com/zhujianhui/sql_zhuanlan

}
立即訂閱 ¥ 48.00

你正在閱讀課程試讀內容,訂閱后解鎖課程全部內容

千學不如一看,千看不如一練

手機
閱讀

掃一掃 手機閱讀

10+年DBA老司機帶你輕松玩轉 SQL
立即訂閱 ¥ 48.00

舉報

0/150
提交
取消