MySQL(一)——安装、创建数据库表、DML语言
文章目錄
- 1. 簡(jiǎn)述
- 2. 安裝教程
- 3. 操作數(shù)據(jù)庫(kù)
- 3.1 操作數(shù)據(jù)庫(kù)的基本命令
- 3.2 數(shù)據(jù)庫(kù)的列類型
- 3.3 數(shù)據(jù)庫(kù)的字段屬性(重點(diǎn))
- 3.4 創(chuàng)建數(shù)據(jù)庫(kù)表(重點(diǎn))
- 3.5 數(shù)據(jù)表的類型
- 3.6 修改刪除表
- 4. MySQL數(shù)據(jù)管理
- 4.1 外鍵(了解即可)
- 4.2 DML語(yǔ)言(全部記住)
1. 簡(jiǎn)述
數(shù)據(jù)庫(kù)(DB,DataBase)概念:數(shù)據(jù)倉(cāng)庫(kù),是安裝在操作系統(tǒng)上的一種軟件
數(shù)據(jù)庫(kù)(DB,DataBase)作用:存儲(chǔ)數(shù)據(jù),管理數(shù)據(jù)
MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
關(guān)系型數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)特點(diǎn)
- 數(shù)據(jù)以表格的形式出現(xiàn)
- 每行為各種記錄名稱
- 每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域
- 許多的行和列組成一張表單
- 若干的表單組成database
RDBMS 術(shù)語(yǔ)
- 數(shù)據(jù)庫(kù): 數(shù)據(jù)庫(kù)是一些關(guān)聯(lián)表的集合。
- 數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個(gè)數(shù)據(jù)庫(kù)中的表看起來(lái)像一個(gè)簡(jiǎn)單的電子表格。
- 列: 一列(數(shù)據(jù)元素) 包含了相同類型的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
- 行:一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
- 冗余:存儲(chǔ)兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。
- 主鍵:主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。你可以使用主鍵來(lái)查詢數(shù)據(jù)。
- 外鍵:外鍵用于關(guān)聯(lián)兩個(gè)表。
- 復(fù)合鍵:復(fù)合鍵(組合鍵)將多個(gè)列作為一個(gè)索引鍵,一般用于復(fù)合索引。
- 索引:使用索引可快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書(shū)籍的目錄。
- 參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
- MySQL是最好的RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。
數(shù)據(jù)庫(kù)分類
關(guān)系型數(shù)據(jù)庫(kù): (SQL)
- MySQL,Oracle,Sql Server,DB2, SQLlite
- 通過(guò)表和表之間,行和列之間的關(guān)系進(jìn)行數(shù)據(jù)的存儲(chǔ), 如:學(xué)員信息表,考勤表,……
非關(guān)系型數(shù)據(jù)庫(kù): (NoSQL) Not Only
- Redis,MongDB
- 非關(guān)系型數(shù)據(jù)庫(kù), 對(duì)象存儲(chǔ),通過(guò)對(duì)象的自身的屬性來(lái)決定。
2. 安裝教程
-
安裝MySQL
參考教程:https://www.cnblogs.com/hellokuangshen/p/10242958.html -
安裝SQLyog
①雙擊Sqlyog的exe文件進(jìn)行安裝
②注冊(cè)
③打開(kāi)連接數(shù)據(jù)庫(kù)
④新建一個(gè)數(shù)據(jù)庫(kù)school
⑤新建一張表student
每一個(gè)sqlyog的執(zhí)行操作,本質(zhì)就是對(duì)應(yīng)了一個(gè)sql語(yǔ)句,可以在軟件的歷史記錄中查看 -
連接數(shù)據(jù)庫(kù)之命令行連接
3. 操作數(shù)據(jù)庫(kù)
操作數(shù)據(jù)庫(kù) > 操作數(shù)據(jù)庫(kù)中的表 > 操作數(shù)據(jù)庫(kù)中表的數(shù)據(jù)
mysql關(guān)鍵字不分區(qū)大小寫(xiě)
3.1 操作數(shù)據(jù)庫(kù)的基本命令
(1)創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫(kù)名;
(2)刪除數(shù)據(jù)庫(kù)
DROP DATABASE [IF EXISTS] 數(shù)據(jù)庫(kù)名;
(3)使用數(shù)據(jù)庫(kù)
tab 鍵的上面,如果你的表名或者字段名是一個(gè)特殊字符,就需要帶 ``
USE 數(shù)據(jù)庫(kù)名;
(4)查看所有的數(shù)據(jù)庫(kù)
SHOW DATABASES
3.2 數(shù)據(jù)庫(kù)的列類型
(1)數(shù)值
- tinyint 十分小的數(shù)據(jù) 1個(gè)字節(jié)
- smallint 較小的數(shù)據(jù) 2個(gè)字節(jié)
- mediumint 中等大小的數(shù)據(jù) 3個(gè)字節(jié)
- int 標(biāo)準(zhǔn)的整數(shù) 4個(gè)字節(jié) 常用的 int
- bigint 較大的數(shù)據(jù) 8個(gè)字節(jié)
- float 浮點(diǎn)數(shù) 4個(gè)字節(jié)
- double 浮點(diǎn)數(shù) 8個(gè)字節(jié) (精度問(wèn)題!)
- decimal 字符串形式的浮點(diǎn)數(shù) 金融計(jì)算的時(shí)候,一般是使用decimal
(2)字符串
- char 字符串固定大小的 0~255
- varchar 可變字符串 0~65535 常用的變量 String
- tinytext 微型文本 2^8 - 1
- text 文本串 2^16 -1 保存大文本
(3)時(shí)間日期
- date YYYY-MM-DD , 日期格式
- time HH:mm:ss 時(shí)間格式
- datetime YYYY-MM-DD HH:mm:ss 最常用的時(shí)間格式
- timestamp 時(shí)間戳, 1970.1.1 到現(xiàn)在的毫秒數(shù)! 也較為常用!
- year 年份表示
(4)null
- 沒(méi)有值,未知
- 注意,不要使用NULL進(jìn)行運(yùn)算,結(jié)果為NULL
3.3 數(shù)據(jù)庫(kù)的字段屬性(重點(diǎn))
(1)Unsigned
- 無(wú)符號(hào)的整數(shù)
- 聲明了該列不能聲明為負(fù)數(shù)
(2)zerofifill
- 0填充的
- 不足的位數(shù),使用0來(lái)填充, int(3) , 5 — 005
(3)自增
- 通常理解為自增,自動(dòng)在上一條記錄的基礎(chǔ)上 + 1(默認(rèn))
- 通常用來(lái)設(shè)計(jì)唯一的主鍵~ index,必須是整數(shù)類型
- 可以自定義設(shè)計(jì)主鍵自增的起始值和步長(zhǎng)
(4)非空 NUll not null
- 假設(shè)設(shè)置為 not null ,如果不給它賦值,就會(huì)報(bào)錯(cuò)!
- NUll ,如果不填寫(xiě)值,默認(rèn)就是null!
(5)默認(rèn)
- 設(shè)置默認(rèn)的值!
- sex,默認(rèn)值為男,如果不指定該列的值,則會(huì)有默認(rèn)的值!
3.4 創(chuàng)建數(shù)據(jù)庫(kù)表(重點(diǎn))
- 創(chuàng)建表 student1
- 格式
CREATE TABLE [IF NOT EXISTS] 表名(
‘字段名’ 列類型 [屬性] [索引] [注釋],
‘字段名’ 列類型 [屬性] [索引] [注釋], …
‘字段名’ 列類型 [屬性] [索引] [注釋]
)[表類型][字符集設(shè)置][注釋]
3.5 數(shù)據(jù)表的類型
- 關(guān)于數(shù)據(jù)庫(kù)引擎
INNODB 默認(rèn)使用,安全性高,事務(wù)的處理,多表多用戶操作
MYISAM 早些年使用的,節(jié)約空間,速度較快
- 在物理空間存在的位置
所有的數(shù)據(jù)庫(kù)文件都存在 data 目錄下,一個(gè)文件夾就對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)
本質(zhì)還是文件的存儲(chǔ) - MySQL引擎在物理文件上的區(qū)別
InnoDB 在數(shù)據(jù)庫(kù)表中只有一個(gè) *.frm 文件, 以及上級(jí)目錄下的 ibdata1 文件
MYISAM 對(duì)應(yīng)文件
*.frm 表結(jié)構(gòu)的定義文件
*.MYD 數(shù)據(jù)文件 (data)
*.MYI 索引文件(index) - 設(shè)置數(shù)據(jù)庫(kù)表的字符集編碼
CHARSET=utf8
不設(shè)置的話,會(huì)是mysql 默認(rèn)的字符集編碼~ (不支持中文!)
MySQL的默認(rèn)編碼是Latin1,不支持中文
在my.ini 中配置默認(rèn)的編碼
character-set-server=utf8
3.6 修改刪除表
(1)修改表名 : ALTER TABLE 舊表名 RENAME AS 新表名
eg:ALTER TABLE teacher RENAME AS teacher1
(2) 增加表的字段 : ALTER TABLE 表名 ADD 字段名 列屬性[ ]
eg:ALTER TABLE teacher1 ADD age INT(11)
(3) 修改表的字段 (重命名,修改約束!):ALTER TABLE 表名 MODIFY 字段名 列屬性[ ]
eg:ALTER TABLE teacher1 MODIFY age VARCHAR(11)
(4)字段重名 :ALTER TABLE 表名 CHANGE 舊名字 新名字 列屬性[ ]
eg :ALTER TABLE teacher1 CHANGE age age1 INT(1)
(5)刪除表的字段: ALTER TABLE 表名 DROP 字段名
eg:ALTER TABLE teacher1 DROP age1
(6)刪除表:如果表存在再刪除
eg:DROP TABLE IF EXISTS teacher1
注意:
- 所有的創(chuàng)建和刪除操作盡量加上判斷,以免報(bào)錯(cuò)~
- `` 字段名,使用這個(gè)包裹!
- 單行注釋 - - 多行注釋 //**
- sql 關(guān)鍵字大小寫(xiě)不敏感,建議大家寫(xiě)小寫(xiě)
- 所有的符號(hào)全部用英文!
4. MySQL數(shù)據(jù)管理
4.1 外鍵(了解即可)
MySQL中“鍵”和“索引”的定義相同,所以外鍵和主鍵一樣也是索引的一種。不同的是MySQL會(huì)自動(dòng)為所有表的主鍵進(jìn)行索引,但是外鍵字段必須由用戶進(jìn)行明確的索引。用于外鍵關(guān)系的字段必須在所有的參照表中進(jìn)行明確地索引,InnoDB不能自動(dòng)地創(chuàng)建索引。
外鍵可以是一對(duì)一的,一個(gè)表的記錄只能與另一個(gè)表的一條記錄連接,或者是一對(duì)多的,一個(gè)表的記錄與另一個(gè)表的多條記錄連接。
好處就是:可以使得兩張表關(guān)聯(lián),保證數(shù)據(jù)的一致性和實(shí)現(xiàn)一些級(jí)聯(lián)操作。保持?jǐn)?shù)據(jù)一致性,完整性,主要目的是控制存儲(chǔ)在外鍵表中的數(shù)據(jù)。 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值!可以使得兩張表關(guān)聯(lián),保證數(shù)據(jù)的一致性和實(shí)現(xiàn)一些級(jí)聯(lián)操作。
方式一:在創(chuàng)建表的時(shí)候,增加約束 (麻煩,比較復(fù)雜)
刪除有外鍵關(guān)系的表的時(shí)候,必須要先刪除引用別人的表 (從表),再刪除被引用的表 (主表)
方式二 : 創(chuàng)建表成功后,添加外鍵約束
以上的操作都是物理外鍵,數(shù)據(jù)庫(kù)級(jí)別的外鍵,我們不建議使用!
- 最佳實(shí)踐
數(shù)據(jù)庫(kù)就是單純的表,只用來(lái)存數(shù)據(jù),只有行(數(shù)據(jù))和列(字段)
我們想使用多張表的數(shù)據(jù),想使用外鍵 (程序去實(shí)現(xiàn))
4.2 DML語(yǔ)言(全部記住)
數(shù)據(jù)庫(kù)意義:數(shù)據(jù)存儲(chǔ),數(shù)據(jù)管理
DML 語(yǔ)言: 數(shù)據(jù)操作語(yǔ)言,用戶通過(guò)它可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作,DML操作是指對(duì)數(shù)據(jù)中表記錄的操作,主要包括表記錄的添加(insert)、修改(update)、刪除(delete),values中的值是enter鍵的左邊‘ ’符號(hào)
(1)添加 insert
語(yǔ)法: insert into 表名 (字段名1,字段2,字段3) values (‘值1’,‘值2’,‘值3’),(…)
- 練習(xí)
注意事項(xiàng):
- 字段和字段之間使用 英文逗號(hào) 隔開(kāi)
- 字段是可以省略的,但是后面的值必須要要一一對(duì)應(yīng),不能少
- 可以同時(shí)插入多條數(shù)據(jù),VALUES 后面的值,需要使用,隔開(kāi)即可 VALUES(),(),…
(2)修改 update
語(yǔ)法: UPDATE 表名 set 字段名1=值1,字段名2=值2,… where 條件
- 練習(xí)一
- 練習(xí)二
- 練習(xí)三
- 練習(xí)四
- 條件:where 子句 運(yùn)算符 id 等于某個(gè)值,大于某個(gè)值,在某個(gè)區(qū)間內(nèi)修改….
操作符會(huì)返回 布爾值
- 注意:
colnum_name 是數(shù)據(jù)庫(kù)的列,盡量帶上``
條件,篩選的條件,如果沒(méi)有指定,則會(huì)修改所有的列
value,是一個(gè)具體的值,也可以是一個(gè)變量
多個(gè)設(shè)置的屬性之間,使用英文逗號(hào)隔開(kāi)
(3)刪除
方式一:delete 命令
語(yǔ)法: delete from 表名 where 條件
-
練習(xí)
刪除前
刪除后
方式二:TRUNCAT 命令
語(yǔ)法:TRUNCATE TABLE 表名
作用:完全清空一個(gè)數(shù)據(jù)庫(kù)表,表的結(jié)構(gòu)和索引約束不會(huì)變! -
delete 的 TRUNCATE 區(qū)別
①相同點(diǎn):都能刪除數(shù)據(jù),都不會(huì)刪除表結(jié)構(gòu)
②不同:
TRUNCATE 重新設(shè)置 自增列 計(jì)數(shù)器會(huì)歸零
TRUNCATE 不會(huì)影響事務(wù)
③測(cè)試delete 和 TRUNCATE 區(qū)別
DELETE FROM test – 刪除數(shù)據(jù)后再插入數(shù)據(jù)不會(huì)影響自增
步驟一
步驟二
步驟三
TRUNCATE TABLE test1 – 刪除數(shù)據(jù)后再插入數(shù)據(jù)自增會(huì)歸零 ,計(jì)數(shù)器會(huì)歸零
步驟一
步驟二
步驟三
了解即可: DELETE刪除的問(wèn)題 ,重啟數(shù)據(jù)庫(kù)后,InnoDB 自增列會(huì)重1開(kāi)始 (存在內(nèi)存當(dāng)中的,斷電即失);MyISAM 繼續(xù)從上一個(gè)自增量開(kāi)始 (存在文件中的,不會(huì)丟失)
總結(jié)
以上是生活随笔為你收集整理的MySQL(一)——安装、创建数据库表、DML语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaScript(四)——面向对象编
- 下一篇: MySQL(二)——DQL数据查询语言