1. 程式人生 > >六天帶你玩轉Mysql筆記---第一天

六天帶你玩轉Mysql筆記---第一天

六天帶你玩轉Mysql筆記---第一天

1.資料庫的基礎

1) 什麼是資料庫

2)資料庫分類

3) 不同的資料庫陣營中的產品有哪些

4)兩種資料陣營的區別

1.1關係型資料庫

1.1.1什麼是關係型資料庫

1.1.2關係型資料庫的設計

1.2關鍵字說明

1.3SQL

1.4 Mysql資料庫

1.5 Mysql伺服器物件

2.SQL基本操作

2.1庫操作:對資料庫的增刪改查

2.1.1新增資料庫

2.1.2檢視資料庫

2.1.3更新資料庫

2.1.4刪除資料庫

3表操作

3.1新增資料表

3.2檢視資料表

3.3修改資料表

3.3.1修改表本身

3.3.2修改欄位

3.4刪除資料表

4.資料操作

4.1新增資料

4.2檢視資料

4.3更新資料

4.4刪除資料

5.中文資料問題

6.校對集

第一步:建立不同校對集表

第二步:插入資料

第三步:檢視資料

1.資料庫的基礎

1) 什麼是資料庫

資料庫:database,儲存資料的倉庫。

資料庫:高效儲存和處理資料的介質(介質主要是兩種:磁碟和記憶體)

2)資料庫分類

資料庫基於儲存介質的不同,可分為兩類:

關係型資料庫(SQL)和非關係型資料庫(NoSqQL)

3) 不同的資料庫陣營中的產品有哪些

關係型資料庫:

l大型:OracleDB2

l中型:SQL-SERVERMysql

l小型:accdss

非關係型資料庫:
memcachedmongodbredis(同步到磁碟)

4)兩種資料陣營的區別

關係型資料庫:安全(儲存磁碟基本不丟失),符合人的思維習慣,容易理解

非關係型資料庫:效率高,不安全(斷電丟失)

1.1關係型資料庫

1.1.1什麼是關係型資料庫

u關係型資料庫:是一種建立在關係模型(數學模式)上的資料庫

u關係模型:是一種所謂建立在關係上的模型,關係模型包含三個方面:

1.資料結構:資料儲存的問題,二維表(行和列)

2.操作指令集合:所有SQL語句

3.完整性約束:表內資料約束(欄位與欄位),表與表之間約束(外來鍵)

1.1.2關係型資料庫的設計

關係型資料庫:從需要儲存的資料需求中分析,如果是一類資料(實體)應該設計成一張二維表,表示由

表頭(欄位名:用來規定資料的名字)和資料部分組成(實際儲存的資料單元)

二維表:行和列

表頭

欄位名1

欄位名2

資料單元

資料1

資料2

案例分析:分析一個教學系統,講師負責教學,教學生,在教師教學生

(1)找出系統中所存在的實體:講師表,學生表,班級表

(2)找出實體中應該存在的資料資訊

a)講師:姓名,性別,年齡,工資

b)學生:姓名,性別,學號,學科

c)班級:班級名字,教師編號

注:關係型資料庫:維護實體內部,實體與實體之間的聯絡

*實體內部聯絡:每個學生都有姓名,性別,學號,學科資訊

姓名

性別

學號

學科

年齡

陳明

Ictast0001

PHP

20

陳晶晶

Ictast0002

PHP

王威

Ictast0003

UI

第二行的所有欄位,都是在描述陳明這個學生(內部聯絡);第二列只能放性別(內部約束)

關係型資料庫的特點之一:如果表中對應的某個欄位沒有值(資料)但是系統依然要分配空間(關係型資料庫比較浪費空間)

*實體與實體之間的聯絡:每個學生肯定屬於某個班級,每個班級一定有多個學生(一對多)

學生表

姓名

性別

學號

學科

年齡

陳明

Ictast0001

PHP

20

陳晶晶

Ictast0002

PHP

王威

Ictast0003

UI

班級表

班級名稱

教室編號

PHP0810

B205

PHP0710

A203

UI0710

B330

如何將學生表和班級表關聯起來?

解決方案:在學生表中增加一個班級欄位倆指定班級(必須能唯一指定一個班級資訊)

姓名

性別

學號

學科

年齡

班級名稱

陳明

Ictast0001

PHP

20

PHP0810

陳晶晶

Ictast0002

PHP

PHP0810

王威

Ictast0003

UI

UI0710

1.2關鍵字說明

1)資料庫:database

2)資料庫系統:DBS(Database System)是一種虛擬系統,將多種內容關聯起來的稱呼

DBS = DBNS + DB

DBMS:Database Mangement System資料庫管理系統,專門管理資料庫

DBA:Database Adminstrator資料庫管理員

3)行/記錄row/record本質是一個東西:都是指表中的一行(一條記錄)

行:是從結構角度出發

記錄:是從資料結構出發

4)列/欄位column/field本質是同一個東西

1.3SQL

1SQL:Structured Query Language結構化查詢語言(資料以查詢為主:99%是在查詢操作)

2SQL是關係型資料庫的操作指令,SQL是一種約束,但不強制:不同的資料庫產品(如Oraclemysql)內部可能會有一些細微的區別。

3SQL分為三個部分

uDDL:Data Defination Lanuage,資料定義語言,用來維護儲存資料的結構(資料庫,表)代表指令:createdropalter

uDML: Data Manipulation Language 資料操作語言,用來對資料進行操作(資料表中的內容),代表指令:insertdeleteupdate等;其中DML內部有單獨進行了一次分類:DQL(Data Query Language:資料查詢語言,如select)

uDCL:Data Control Language,資料控制語言,主要負責許可權管理(使用者),代表指令:grantrevoke等。

1.4 Mysql資料庫

1Mysql資料庫是一種c/s結構的軟體:客戶端/伺服器,若想訪問伺服器必須通過客戶端(伺服器一種執行,客戶端在需要的時候執行)

2)互動方式

1.客戶端連線認證:連線伺服器,認證身份:mysql.exe -hPup

2.傳送SQL指令

3.伺服器接收SQL指令,處理SQL指令,返回操作結果。

4.客戶端接收結果:顯示結果

5.斷開連線(釋放資源:伺服器併發限制)

1.5 Mysql伺服器物件

1)沒有辦法完全瞭解伺服器內部的內容:只能粗略的去分析資料庫伺服器的內部結構。

2)將mysql伺服器內部物件分成四層:系統(DBMS->資料庫(DB->資料表(Table->欄位(field

2.SQL基本操作

SQL的基本操作物件進行分類,分為三類:庫操作,表操作(欄位)資料操作

2.1庫操作:對資料庫的增刪改查

2.1.1新增資料庫

1Create database資料庫名字平[庫選項]

2)庫選項:用來約束資料庫,分為兩個選項

u字符集設定charset/character set 具體字符集(資料儲存的編碼格式)

               常用字符集:CBKUTF8

u校對集設定:  collate具體校對集(資料比較的規則)

3)資料庫名是英文名

Create database mydatabasecharset utf8

4)資料庫名是中文名

Set names gbk

Create database 中國charset utf8

2.1.2檢視資料庫

1)檢視所有資料庫show databases;

2)檢視指定部分資料庫:模糊查詢

show databases likepattern     -- pattern是匹配模式

%:表示匹配多個字元

_:  表示單個字元

3)檢視資料庫的建立語句:show create database 資料庫名

2.1.3更新資料庫

1)資料庫名字不可以修改

2)資料庫修改僅限庫選項:字符集和校對集(校對集依賴字符集)

3Alter database資料庫名字[庫選項];  

Charset/characterset [=]字符集

Collate校對集

2.1.4刪除資料庫

1Drop database資料庫名字

2)在對應的資料庫儲存的資料夾內:資料庫名字對應的資料夾也被刪除(級聯刪除:裡面的資料表全部被刪除)

3表操作

3.1新增資料表

Create table[if not exists]表名(

欄位名字資料型別,

欄位名字資料型別  --最後一行不需要逗號

[表選項]

1If not exists:如果表名不存在,那麼就建立,否則不執行建立程式碼(檢查功能)

2)表選項:控制表的表現

字符集:charset/character set具體字符集(保證表中資料儲存的字符集)

校對集:collate具體校對集;

儲存引擎: engine具體的儲存引擎(innodbmyisam

(3)沒有選擇資料庫時的錯誤提示

 

任何一個表的設計都必須指定資料庫

方案1:顯式地指定表的所屬

 

方案2:隱式地指定表的所屬資料庫:先進入到某個資料庫環境,然後這樣建立的表自動歸屬到某個指定的資料庫。

進入資料庫環境:use資料庫名字

 

當建立資料表的SQL指令執行之後,到底發生了什麼?

(1)指定資料庫下已經存在對應的表

(2)在資料庫對應的資料夾下,會產生對應表的結構檔案(跟儲存引擎有關係)

3.2檢視資料表

1)檢視所有表:show tables;

2)檢視部分表:show table likepattern

3)查看錶的建立語句:show create table表名;

4)查看錶結構:

查看錶中欄位資訊:Desc/describe/show columns from表名;

 

Field---欄位名  

Type---資料型別  

Null---列屬性:是否允許為Null()

相關推薦

Mysql筆記---第一

六天帶你玩轉Mysql筆記---第一天 1.資料庫的基礎 (1) 什麼是資料庫 (2)資料庫分類 (3) 不同的資料庫陣營中的產品有哪些 (4)兩種資料陣營的區別 1.1關係型資料庫 1.1.1什

mysql資料庫--第一(下)

這是一系列視訊學習,寫部落格也是方便自己之後複習,有大家需要的資料可以給個參考。 接上一篇:https://blog.csdn.net/aaaaaab_/article/details/80015589 原資料表: 修改欄位: alter table 表名 mo

mysql資料庫-- 第二筆記

集合字串: 集合跟列舉很類似,實際儲存的是數值,而不是字串(集合是多選) 集合使用方式:定義,set(元素列表);使用:可以使用元素列表中的元素(多個),使用逗號分隔 建立集合表: -- 建立集合表 create table my_set( hobby se

Mysql筆記--第

2. 變數 3 觸發器 5. 函式 6 儲存過程 1.事務安全 (1)事務:一系列要發生的連續的操作。 (2)事務安全:一種保護連

mysql資料庫--第二(上)

對第一天所學知識點進行回顧總結: 資料庫的基礎知識:關係型資料庫(儲存在磁碟)和非關係型資料庫(記憶體) 關係型資料庫:建立在關係模型上的資料庫。三大元件包括: 資料結構:二維表(比較浪費空間) 操作資料的指令集合:SQL(DDL:資料定義,DML(DQL)

mysql資料庫--第四筆記

回顧: 列屬性:主鍵,自增長,唯一鍵 關係:一對一,一對多,多對多 正規化:規範資料庫的設計,三層正規化 1NF:欄位設計必須符合原子性 2NF:不存在部分依賴(沒有複合主鍵) 3NF:不存在傳遞依賴(實體單獨建表) 逆規範化:效率與磁碟空間的博弈 高階資料操作: 新增資料:主

mysql資料庫-- 第三筆記(下)

資料的高階操作: 資料操作:增刪改查 新增資料: 基本語法: insert into 表名 [(欄位列表)] values(值列表); 在資料插入的時候,假設主鍵對應的值已經存在,插入一定會失敗。 主鍵衝突: 當主鍵存在衝突的時候(Duplicate ke

mysql資料庫--第三筆記(中)

索引: 幾乎所有的索引都是建立在欄位之上。 索引:系統根據某種演算法將已有的資料(未來可能新增的資料),單獨建立一個檔案,檔案能夠實現快速的匹配資料, 並且能夠快速的找到對應表中的記錄。索引的意義在於: 1.提升查詢資料的效率 2.約束資料的有效性(唯一性等) 增加索引有前提條件:索引本

mysql資料庫--第三筆記(上)

回顧: 欄位型別(列型別):數值型,時間日期和字串型別。 數值型:整數和小數型(浮點型和定點型) 時間日期型:datetime,date,time,timestamp,year。 字串型別:定長,變長,文字字串(text和blob),列舉(單選)和集合(多選)。 mysql的 記錄長度:

mysql資料庫--第五筆記(上)

回顧: 連線查詢:多張表連線到一起,不管記錄數如何,欄位數一定會增加。 分類:內連線,外連線,自然連線和交叉連線。 交叉連線:cross join(笛卡爾積) 內連線:inner join,左右兩張表中有連線條件匹配(不忽略的匹配) 外連線:outer [left/righ

純乾貨:21容器

純乾貨:21天帶你玩轉容器可能有些人已經使用過容器,但考慮知識體系的完整性,我們還是從最基本的容器知識開始帶大家進入容器的世界。首先介紹一下什麼是容器?Docker是一種輕量級的作業系統虛擬化解決方案,它想達到一次構建到處執行,類似於Java虛擬機器的效果,它最初誕生於2013年,是基於go語言的實現,最初是

純幹貨:21容器

公有 docker容器 興趣 容器技術 process 使用 公司 秒級 驅動 純幹貨:21天帶你玩轉容器可能有些人已經使用過容器,但考慮知識體系的完整性,我們還是從最基本的容器知識開始帶大家進入容器的世界。首先介紹一下什麽是容器?Docker是一種輕量級的操作系統虛擬化解

【宇哥MySQL】索引篇(一)索引揭祕,看他是如何讓的查詢效能指數提升的

  場景復現,一個索引提高600倍查詢速度? 首先準備一張books表 create table books( id int not null primary key auto_increment, name varchar(255) not null, author va

為什麼MySQL要用B+樹?聊聊B+樹與硬碟的前世今生【宇哥MySQL 索引篇(二)】

為什麼MySQL要用B+樹?聊聊B+樹與硬碟的前世今生   在上一節,我們聊到資料庫為了讓我們的查詢加速,通過索引方式對資料進行冗餘並排序,這樣我們在使用時就可以在排好序的資料裡進行快速的二分查詢,使得查詢效率指數提升。但是我在結尾同樣提到一個問題,就是記憶體大小一般是很有限的,不可能把一個表所有的

1分鐘Kafka

Kafka 分布式 消息服務 說起Kafka,許多使用者對它是又愛又恨。Kafka是一種分布式的、基於發布/訂閱的消息系統,其極致體驗讓人欲罷不能,但操心的運維、復雜的安全策略、可靠性易用性的缺失、算不上極致的性能發揮、並不豐富的消息服務功能,仍需要使用者付出諸多的背後工作。即使你是Kafka老手

資深程序員深度學習中的正則化技術(附Python代碼)!

c51 進行 ros batch num 簡單的 oat 深度學習 repr 目錄 1. 什麽是正則化? 2. 正則化如何減少過擬合? 3. 深度學習中的各種正則化技術: L2和L1正則化 Dropout 數據增強(Data augmentation) 提前停止(Ear

百曉生linux系統服務搭建系列----DNS服務的搭建一(正向解析)

home 主配置文件 baidu 安裝環境 圖片 搭建 href ace eid DNS正向解析的搭建 實驗環境系統環境:centos6.5 安裝DNS環境軟件包rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_

百曉生linux系統服務搭建系列----pxe遠程安裝服務器的搭建及無人值守安裝

conf fig ces sys 鏡像文件 mount size set blog 實驗環境系統環境:centos6.5:程安裝服務器WIN7:客戶端一、pxe遠程安裝服務器的搭建 安裝並開啟需要的服務,tftp,ftp,dhcp。1) yum -y install t

百曉生linux系統服務搭建系列----SSH遠程訪問及控制

登入 conf rsa nag 系列 配置 上傳 我們 shel 實驗環境:linux centos 6.5*2實驗目的:用戶登錄控制及密鑰對驗證 sshd服務默認允許root用戶登錄,當在Internet中使用時這是非常不安全的。普遍的做法是先以普通用戶遠程登入,進入安全

百曉生linux系統服務搭建系列----構建虛擬ApacheWeb主機

ESS host mon conf 圖片 common roo echo 端口 虛擬Web主機指的是在同一臺服務器中運行多個Web站點,其中的每一個站點實際上並不獨自占用整個服務器,因此被稱為“虛擬”Web主機。通過Web主機服務可以充分利用服務器的硬件資源,從而大大降低網