1. 程式人生 > 其它 >Day01.操作資料庫(整體非重點)

Day01.操作資料庫(整體非重點)

 

 

 

一、初始MySQL

1.1 資料庫分類以及DBMS

1. 關係型資料庫:(SQL)

  • MySQL

  • 將資料儲存在不同的表中

 

2. 非關係型資料庫 (NoSQL 這裡的No是指Not only)

  • Redis

  • 物件儲存,通過物件的自身屬性來決定

 

3. DBMS (資料庫管理系統)

  • 資料庫的管理軟體,科學有效的管理資料。 用於維護和獲取資料

 

1.2 MySQL相關知識

1.2.1 基本指令(這裡是5.7版本)

flush privileges; -- 重新整理許可權
-------------------------------------------------------
mysql -u root -p    -- 進入資料庫

show databases;   -- 檢視所有的資料庫

mysql> use school  -- 切換資料庫 use + 資料庫名
Database changed

show tables; -- 檢視所有資料庫中所有表的資訊
describe student;  -- 顯示資料庫中所有表的資訊 describe 表名

create database xxx; -- 建立一個數據庫

exit; -- 退出連線

-- 單行註釋 (SQL本來的註釋,在sqlyog中可以使用#)
/*
這是多行註釋
*/

 

1.2.2 四種資料庫語言

  • DDL 定義 Database definition language

  • DML 操作 Database Manipulation Language

  • DQL 查詢 Database query language

  • DCL 控制 Database Control language

 

二、操作資料庫(瞭解)

須知:操作資料庫 > 操作資料庫中的表 > 操作資料庫表中的資料

2.1 操作資料庫的相應指令(資料庫層面)

MySQL的指令不區分大小寫

  1. 建立資料庫

    CREATE DATABASE [IF NOT EXISTS] xxx
  2. 刪除資料庫

    DROP DATABASE [IF EXISTS] xxx
  3. 使用資料庫

    USE `xxx`  -- 如果表明或者欄位名為特殊字元,需要加` `
  4. 檢視資料庫

    SHOW DATABASE -- 檢視所有資料庫

     

2.2 資料庫的資料型別

數值

  • tinyint 十分小的資料 1個位元組

  • smallint 比較小的資料 2個位元組

  • mediumint 中等大小的資料 3個位元組

  • int (常用) 標準的整數 4個位元組

  • bigint 較大的資料 8個位元組

  • float 浮點數 4個位元組

  • double 浮點數 8個位元組

  • decimal (金融常用) 字串形式的浮點數

 

字串

  • char 固定大小的字串 0 ~ 255

  • varchar (常用) 可變字串 0 ~ 65535

  • tinytext 微型文字 2^8 - 1

  • text(儲存大文字) 文字串 2^16 - 1

 

時間日期

在Java裡面 java.tuil.Date

 

  • data YYYY-MM-DD 日期格式

  • time HH :mm : ss 時間格式

  • datatime(常用) YYYY-MM-DD HH :mm : ss

  • timestamp(常用) 時間戳(1970.1.1到現在的毫秒數)

  • year 年份表示

 

null

  • 沒有值或者未知值

  • 注意:不要使用NULL進行運算,因為其計算結果還是NULL

 

2.3 資料庫的欄位屬性 (重點)

UnSigned無符號的的整數

  • 宣告該列不允許負數 .

     

ZEROFILL (0 填充的

  • 不足位數的用 0 來填充 , 如 int(3),5 則為 005

  • INT(M) M指的是最大的顯示寬度 最大的有效顯示寬度為255 顯示寬度與儲存大小或者型別包含的值的範圍無關

  • 而 VARCHAR(m) 後面的m是規定的最大長度 輸入內容不能超過這個長度

     

Auto_InCrement

  • 自動增長的 , 每新增一條資料 , 自動在上一個記錄數上加 1(預設)

  • 通常用於設定主鍵 , 且為整數型別

  • 可定義起始值和步長

  •  

    • 當前表設定步長 (AUTO_INCREMENT=100) : 隻影響當前表

    • SET @@auto_increment_increment=5 ; 影響所有使用自增的表 (全域性)

NULL 和 NOT NULL

  • 不給值則為 NULL , 即沒有插入該列的數值

  • 如果勾選了NOT NULL , 則該列必須有值

DEFAULT

  • 預設的

  • 用於設定預設值

  • 例如, 性別欄位, 預設為 "男" , 否則為 “女” ; 若無指定該列的值 , 則預設值為 "男" 的值

 

2.4 建立資料庫表 (重點)

建立資料庫表

CREATE TABLE IF NOT EXISTS `student2`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT'學號',
`name` VARCHAR(30)NOT NULL DEFAULT '匿名' COMMENT'姓名',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT'性別',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

常用命令

SHOW CREATE DATABASE XXX -- 檢視建立資料庫
SHOW CREATE TABLE XXX -- 檢視建立資料表
DESC xxx -- 顯示錶的結構

 

2.5 資料表的型別(5.7版本)

-- 關於資料庫引擎
/*
INNODB 現在預設使用
MYISAM 早些年使用
*/
資料庫引擎 MYISAM INNODB
事務支援 不支援 支援
資料行鎖定 不支援 支援
外來鍵約束 不支援 支援
全文索引 支援 不支援
表空間的大小 較小 較大,約為MYISM2倍

常規使用操作:

  • MYISAM

    • 節約空間,速度較快

  • INNODB

    • 安全性高

    • 事物的處理

    • 多表多使用者操作

     

在物理空間存在的位置

所有的資料庫檔案都存在data目錄下面 本質上還是檔案的儲存

MySQL引擎在物理檔案上的區別

  • INNODB 在資料庫表中只有一個*.frm檔案,以及上級目錄下的ibdata1檔案

  • MYISAM對應檔案

    • *.frm 表結構的定義檔案

    • *.MYD 資料檔案(data)

    • *.MYI 所以檔案(index)

設定資料庫表的字符集編碼

CHARSET=UTF8

不設定的話,MySQL的預設編碼是Latin1(不支援中文)

 

還有一種方法就是在物理檔案my.ini中配置預設的編碼 (不推薦)

character-set-server=utf-8

 

2.6 修改刪除表

修改

-- 修改表名:ALTER TABLE 舊錶名 RENAME AS 新表名
ALTER TABLE student2 RENAME AS student3

-- 欄位重新命名: ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 資料型別
ALTER TABLE student3 CHANGE gamepwd gamezzx INT(1)

-- 增加表的欄位: ALTER TABLE 表名 ADD 欄位名 資料型別
ALTER TABLE student3 ADD gamepwd INT(10)

-- 修改表的欄位:ALTER TABLE 表名 MODIFY 欄位名 更新後的資料型別
ALTER TABLE student3 MODIFY gamepwd VARCHAR(2)

-- 刪除表的欄位:ALTER TABLE 表名 DROP 欄位名
ALTER TABLE student3 DROP gamezzx

 

刪除

-- 刪除表:DROP TABLE IF EXISTS 表名
DROP TABLE IF EXISTS student3