MySQL——數據庫的操作、屬性


操作數據庫 > 操作數據庫中的表 > 操作數據庫中表的數據

注意:mysql關鍵字不分區大小寫

1.1、操作數據庫

1、創建數據庫

CREATE DATABASE [IF NOT EXISTS] westos;

2、刪除數據庫

DROP DATABASE [IF EXISTS] westos

3、使用數據庫

-- tab 鍵的上面,如果你的表名或者字段名是一個特殊字符,就需要帶 ``
USE `school`

4、查看數據庫

SHOW DATABASES -- 查看所有的數據庫

對比 : SQLyog 的可視化操作

學習思路:

  • 對照 sqlyog可視化歷史記錄查看sql

  • 固定的語法或關鍵字必須要強行記住!

1.2、數據庫的列類型

1.2.1、數值

  • tinyint 十分小的數據 1個字節
  • smallint 較小的數據 2個字節
  • mediumint 中等大小的數據 3個字節
  • int 標准的整數 4個字節 常用的 int
  • bigint 較大的數據 8個字節
  • float 浮點數 4個字節
  • double 浮點數 8個字節 (存在精度問題需要注意)
  • decimal 字符串形式的浮點數 金融計算的時候,一般是使用decimal

1.2.2、字符串

  • char 字符串固定大小的 0~255
  • varchar 可變字符串 0~65535 常用的變量 String
  • tinytext 微型文本 2^8 - 1
  • text 文本串 2^16 -1 保存大文本

1.2.3、時間日期

  • date YYYY-MM-DD , 日期格式
  • time HH:mm:ss 時間格式
  • datetime YYYY-MM-DD HH:mm:ss 最常用的時間格式
  • timestamp 時間戳, 1970.1.1 到現在的毫秒數! 也較為常用!
  • year 年份表示

1.2.4、null

  • 沒有值,未知
  • 注意:不要使用NULL進行運算,結果為NULL

1.3、數據庫的字段屬性(重點)

Unsigned :

  • 無符號的整數
  • 聲明了該列不能聲明為負數

zerofill:

  • 0填充的
  • 不足的位數,使用0來填充, int(3) , 5 --- 005

自增:

  • 通常理解為自增,自動在上一條記錄的基礎上 + 1(默認)
  • 通常用來設計唯一的主鍵~ index,必須是整數類型
  • 可以自定義設計主鍵自增的起始值和步長

非空( not null):

  • 假設設置為 not null ,如果不給它賦值,就會報錯!
  • NUll ,如果不填寫值,默認就是null!

默認:

  • 設置默認的值!
  • sex,默認值 為 男,如果不指定該列的值,則會有默認的值!

拓展:

/* 每一個表,都必須存在以下五個字段!未來做項目用的,表示一個記錄存在意義!

id  主鍵
`version`   樂觀鎖
is_delete   偽刪除
gmt_create  創建時間
gmt_update  修改時間
*/

1.4、創建數據庫表(重點)

-- 目標 : 創建一個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(2) NOT NULL DEFAULT '女' COMMENT '性別',
   `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
   `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
   `email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
   PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式:

CREATE TABLE [IF NOT EXISTS] `表名`(
   '字段名' 列類型 [屬性] [索引] [注釋],
   '字段名' 列類型 [屬性] [索引] [注釋],
    ......
   '字段名' 列類型 [屬性] [索引] [注釋]
)[表類型][字符集設置][注釋]

常用命令:

SHOW CREATE DATABASE school -- 查看創建數據庫的語句
SHOW CREATE TABLE student -- 查看student數據表的定義語句
DESC student -- 顯示表的結構

1.5、 數據表的類型

  • INNODB 默認使用~
  • MYISAM 早些年使用的

InnoDB與MyISAM的區別:

MYISAM INNODB
事務支持 不支持 支持
數據行鎖定 不支持 支持
外鍵約束 不支持 支持
全文索引 支持 不支持
表空間的大小 較小 較大,約為 2 倍

常規使用操作:

  • MYISAM 節約空間,速度較快
  • INNODB 安全性高,事務的處理,多表多用戶操作

在物理空間存在的位置

所有的數據庫文件都存在 data 目錄下,一個文件夾就對應一個數據庫,本質還是文件的存儲!

MySQL 引擎在物理文件上的區別:

  • InnoDB 在數據庫表中只有一個 *.frm 文件, 以及上級目錄下的 ibdata1 文件
  • MYISAM 對應文件
    • *.frm 表結構的定義文件
    • *.MYD 數據文件 (data)
    • *.MYI 索引文件(index)

設置數據庫表的字符集編碼

CHARSET=utf8

不設置的話,會是mysql 默認的字符集編碼~ (不支持中文!)

注意:MySQL的默認編碼是Latin1,不支持中文

在my.ini 中配置默認的編碼

character-set-server=utf8

1.6、修改刪除表

1.6.1、修改

  • rename: 修改表名
  • add: 增加表的字段
  • modify: 修改列屬性(約束)
  • change: 重命名
  • drop: 刪除表的字段
-- 修改表名 : ALTER TABLE 舊表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的字段 :  ALTER TABLE 表名 ADD 字段名 列屬性
ALTER TABLE teacher1 ADD age INT(11)

-- 修改表的字段 (重命名,修改約束!)
-- ALTER TABLE 表名 MODIFY 字段名 列屬性[]
ALTER TABLE teacher1 MODIFY age VARCHAR(11)  -- 修改約束
-- ALTER TABLE 表名 CHANGE 舊名字  新名字  列屬性[]
ALTER TABLE teacher1 CHANGE age age1 INT(1)  -- 字段重名名


-- 刪除表的字段: ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1

1.6.2、刪除

-- 刪除表(如果表存在再刪除)
-- 注意:所有的創建和刪除操作盡量加上判斷,以免報錯
DROP TABLE IF EXISTS teacher1

注意點:

  • 字段名 ,使用`包裹防止出錯
  • 注釋 : /**/
  • sql 關鍵字大小寫不敏感,建議大家寫小寫
  • 所有的符號全部用英文!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM