日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL(一)——安装、创建数据库表、DML语言

發(fā)布時間:2025/3/13 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL(一)——安装、创建数据库表、DML语言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。