Mysql基礎

Hanyta發表於2024-05-02
  1. 為什麼要配置環境變數?

    當你想直接用cmd開啟某個.exe軟體,但卻出現以上情況時,可以透過配置環境變數來解決。配置了常用軟體的環境變數後,在系統的任意路徑下,開啟cmd,輸入軟體,即可開啟應用。

    環境變數:是在作業系統中用來指定作業系統執行環境的一些引數。
    環境變數中的path環境變數:當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下尋找此程式外,還應該到path中指定的路徑下去尋找。

    查詢路徑優先順序順序:win10中,環境白那輛包括使用者變數和系統變數。使用者變數有與系統變數。
    查詢順序為:當前目錄下路徑>使用者變數>系統變數,若找不到,就會報錯
    系統變數針對所有使用者起作用,為了安全一般配置使用者環境變數;使用者變數只對當前使用者起作用,為了省事一般配置系統環境變數

  2. 資料庫的分類
    關係型資料庫(SQL):透過表和表之間,行和列的關係進行資料的儲存;Mysql,Oracle...
    非關係型資料庫(NOSQL):物件儲存,透過物件的自身的屬性來決定;Redis,MongDB...

  3. 常用的基本命令

    --服務的啟動和停止
    net stop mysql
    net start mysql
    --登陸mysql
    mysql -u 使用者名稱 -p使用者密碼
    --建立資料庫
    create database [if not exists] <資料庫名>;
    --查詢所有資料庫
    show databases;
    --刪除資料庫
    drop database [if exists] <資料庫名>;
    --進入資料庫
    use <資料庫名>;
    --查詢資料庫下表
    show tables;
    --顯示資料庫中表的資訊
    describe <表名>;
    
  4. 資料庫語言:DDL(定義),DML(操作),DQL(查詢),DCL(控制)

  5. 常用的資料型別:

    型別 大小 範圍(有符號) 範圍(無符號) 用途
    INT 4 Bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數值
    BIGINT 8 Bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數值
    FLOAT 4 Bytes (-3.402 823 466 E+38,-1.175 494 351 E-38) (0,1.175 494 351 E-38,3.402 823 466 351 E+38) 單精度浮點數值
    DOUBLE 8 Bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308) (0,2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精度浮點數值
    DECIMAL 對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 依賴於M和D的值 依賴於M和D的值 小數值
    DATETIME 8 Bytes '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' YYYY-MM-DD hh:mm:ss 混合日期和時間值
    TIMESTAMP 4 Bytes '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC YYYY-MM-DD hh:mm:ss 混合日期和時間值,時間戳
    VARCHAR 0-65535 bytes 0-65535 bytes 0-65535 bytes 變長字串
    TEXT 0-65535 bytes 0-65535 bytes 0-65535 bytes 長文字資料
  6. 資料庫的欄位屬性:

    Unsigned: 無符號整數,宣告瞭該列不能為負數
    zerofill: 不足的位數,使用0來填充
    自增: 透過自己設定的值在上一條記錄的基礎上進行自增
    not null: 寫資料的時候必須要賦值
    預設: 設定預設的值,不指定該列的值的話,會根據你自己設定的預設值進行賦值
    每張表必有的5個屬性:
    id:主鍵
    `version` :樂觀鎖
    is_delete:偽刪除
    gmt_create:建立時間
    gmt_update:修改時間
    
  7. 表的建立語句:

    -- 建立一個school資料庫
    -- 建立學生表(列,欄位) 使用SQL建立
    -- 學號int 登陸密碼varchar(20) 姓名,性別varchar(2),出生日期datatime,家庭住址,email
    
    -- 注意:使用英文(),表的名字 和 欄位 儘量用``括號起來
    -- AUTO_INCREMENT 自增
    -- 字串使用''單引號包裹
    -- 所有語句後面加英文逗號 , 最後一個不用加
    -- PRIMARY KEY 主鍵,一般一張表只有一個
    CREATE TABLE IF NOT EXISTS `student` (
        `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
        `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
        `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
        `sex` VARCHAR(3) NOT NULL DEFAULT '保密' COMMENT '性別',
        `birthday` DATETIME DEFAULT NULL COMMENT '生日',
        `address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
        `email` VARCHAR(50) DEFAULT NULL COMMENT 'email',
        PRIMARY KEY(`id`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    
    --固定的建立格式
    CREATE TABLE [IF NOT EXISTS] `表名` (
    '欄位名' 列型別 [屬性] [索引] [註釋],
    '欄位名' 列型別 [屬性] [索引] [註釋],
    ......
    '欄位名' 列型別 [屬性] [索引] [註釋]
    )[表型別] [字符集設定] [註釋]
    
    --檢視操作語句
    SHOW CREATE DATABASE school -- 檢視建立資料庫的語句
    SHOW CREATE TABLE student2 -- 檢視建立表的語句
    DESC student -- 顯示錶的結構
    
  8. 關於資料庫引擎

    • InnoDB 預設使用
    • MYISAM 早些年使用
    MyISAM InnoDB
    事務支援(同時成功或同時失敗) 不支援 支援
    資料行鎖定(鎖定一行) 不支援(表鎖定) 支援
    外來鍵約束(在資料庫內關聯另一張表) 不支援 支援
    全文索引 支援 不支援(MySQL 5.6.4後支援)
    表空間大小 較小 較大,約為MyISAM2倍
    常規操作使用:

    MyISAM:節約空間,速度較快
    InnoDB:安全性高,事務支援,多表多使用者操作(外來鍵約束)

  9. 修改和刪除表:

    -- 修改表名 ALTER TABLE 舊錶名 RENAME AS 新表名
    ALTER TABLE student RENAME AS student1
    -- 增加表的欄位 ALTER TABLE 表名 ADD 欄位名 列屬性
    ALTER TABLE student1 ADD sex VARCHAR(2)
    -- 修改表的欄位(重新命名,修改約束)
    ALTER TABLE student1 MODIFY sex INT(2) -- 修改約束
    ALTER TABLE student1 CHANGE sex sex1 VARCHAR(2) -- 重新命名欄位,可以修改約束
    -- 刪除表的欄位
    ALTER TABLE student1 DROP sex1
    -- 刪除表(如果存在
    DROP TABLE  IF EXISTS student1