第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

目錄

索引目錄

10+年DBA老司機帶你輕松玩轉(zhuǎn) SQL

原價 ¥ 48.00

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

2.1 什么是數(shù)據(jù)庫?

數(shù)據(jù)庫(Database)是以特定組織方式存儲以及管理數(shù)據(jù)的倉庫,我們?nèi)粘I钪薪?jīng)常會接觸到數(shù)據(jù)庫,通過瀏覽器打開網(wǎng)站查閱的新聞,打開微信查看的朋友圈,你從銀行賬戶中查詢到的金額等等,這些數(shù)據(jù)都存儲在數(shù)據(jù)庫中。

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

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

2.2 有了 Excel 還需要數(shù)據(jù)庫嗎?

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

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

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

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

2.3 數(shù)據(jù)庫管理系統(tǒng)

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

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

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

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

2.4 安裝 MariaDB 10.3.21

在使用數(shù)據(jù)庫之前,和大家一起了解下數(shù)據(jù)庫 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 服務(wù),并設(shè)為開機自啟:

systemctl start mariadb #啟動服務(wù)  

systemctl enable mariadb #設(shè)置開機啟動

登錄到 MariaDB 數(shù)據(jù)庫:

  mysql -uroot -p

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

圖片描述

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

進行MariaDB的相關(guān)簡單配置,在 Linux 命令行輸入命令:

mysql_secure_installation 

回車后,系統(tǒng)會提示我們進行以下內(nèi)容的設(shè)置:

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

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

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

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,是數(shù)據(jù)庫存貯數(shù)據(jù)的基本單元。你可以把表設(shè)想為電子表格中的 Sheet 頁。而表就是數(shù)據(jù)庫中的 Sheet 頁。

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

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

火車 ———>> 數(shù)據(jù)庫
車廂 ———>> Schema
包裝箱 ———>>
貨物 ———>> 表中存放數(shù)據(jù)

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

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

2.6 什么是列、行和數(shù)據(jù)類型

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

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

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 語句

現(xiàn)在大家已經(jīng)知道了數(shù)據(jù)庫,表,行列數(shù)據(jù)的概念了。那么問題就來了:我該怎么操作數(shù)據(jù)庫,表,行列數(shù)據(jù)呢?

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

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

圖片描述

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

圖片描述

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

2.8 測試數(shù)據(jù)獲取

本專欄相關(guān)表結(jié)構(gòu)和數(shù)據(jù)可以通過以下鏈接獲取:https://github.com/zhujianhui/sql_zhuanlan

}
立即訂閱 ¥ 48.00

你正在閱讀課程試讀內(nèi)容,訂閱后解鎖課程全部內(nèi)容

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

手機
閱讀

掃一掃 手機閱讀

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

舉報

0/150
提交
取消