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