mysql數據庫表的類型介紹


目錄

前言

之前我們講了下載安裝數據庫,還有如何卸載(雖然直接重裝系統就好)

那么現在讓我們來講講

"""
1、數據庫與表的剩余操作
    編碼配置、引擎介紹
2、數據庫字段的操作
3、數據庫的數據類型
4、數據庫字段的約束條件
"""

數據庫的配置

通過配置文件統一配置的目的是統一管理

  • 服務端(mysqld)
  • 客戶端(client)

那么如果我們配置了mysqld(服務端)的編碼為utf8,那么再創建的數據庫,默認編碼都采用utf8

配置流程

  1. 在mysql安裝目錄下,創建文件----->my.ini

    ps : mac下配置文件名叫my.cnf

  2. 設置配置文件內容並保存

    [mysqld] #服務器配置
    port=3306    #可以修改數據庫默認端口
    character-set-server=utf8 #編碼格式
    collation-server=utf8_general_ci
    [client] #mysql再見的客戶端叫[mysql],配置[client]即配置了[mysql],也配置了其他存在方式的客戶端,比如Navicat可視化客戶端
    default-character-set=utf8
    
  3. 重啟數據庫服務

數據庫修改信息

修改字符編碼

  • alter database 數據庫名 charset=編碼格式;

用戶操作(**********)

為特定的數據庫分配該數據庫的操作權限的用戶

  • grant 權限們 on 數據庫.表 to 用戶名@'主機名' identified by '密碼';

    1. all:所有權限
    2. oldboy.*:表示oldboy數據庫下所有表
    3. oldboy@'localhost':本機可以通過oldboy用戶登錄
    4. identified by 'Oldboy123':密碼為Oldboy123
    • grant all on oldboy.* to oldboy@'localhost' identified by 'Oldboy123';

撤銷權限

  • revoke 權限1,權限2,...on 數據庫名.表名 from 用戶名@'主機名';

刪除用戶

  • drop user 用戶名@'主機名';

數據庫表的引擎:驅動數據的方式-優化

前言:引擎是建表時候的規定,提供給表使用的,不是數據庫。用於優化數據庫模式


展示引擎語句

  • show engines;
# innodb(默認): 支持事務, 行級鎖, 外鍵
create table t11(id int)engine=innodb;

# myisam: 查詢效率要優於innodb, 當不需要支持事務, 行級鎖, 外鍵, 可以通過設置myisam來優化數據庫
create table t12(id int)engine=myisam;

# blackhole:黑洞,存進去的數據都會消失(可以理解不存數據)
create table t13(id int)engine=blackhole;

# memory:表結構是存儲在硬盤上的,但是表數據全部存儲在內存中
create table t14(id int)engine=memory;

數據庫模式

前言:mysql 5.7以后默認為安全模式


5.6版本
  • 非安全模式:sql_model=no_engine_substitution
  • 安全模式:sql_model=strict_trans_tables
# 查看當前數據庫模式:
show variables like "%sql_mode%"; # %匹配0~n個任意字符 => 模糊查詢

# 臨時設置為安全模式,服務重啟后會被重置
set global sql_mode="strict_trans_tables";  # 在root用戶登錄狀態下
# 在設置后,quit斷開數據庫連接后(服務器不重啟)就會進入安全模式

# 安全模式下,非安全模式下sql執行的警告語句,都會拋異常
create table t1(name char(2));
insert into t1 values ("ab") # 正常
insert into t1 values ("guapi") # 錯誤 Data too long for column 'name' at row 1

mysql支持的數據類型

數據類型


  • 數據類型表
類型 大小 范圍(有符號) 范圍(無符號)unsigned約束 用途
TINYINT 1字節 (-128,127) (0,255) 小整數值
SMALLINT 2字節 (-32768,32767) (0,65535) 大整數值
MEDIUMINT 3字節 (-8388608,8388607) (0,16777215) 大整數值
INT或INTEGER 4字節 (-2147483648,2147483 647) (0,4294967295) 大整數值
BIGINT 8字節 (-9233372036854775808,9223372036854 775807) (0,18446744073709551 615) 極大整數值
FLOAT 4字節float(255,30) (-3.402823466E+38,-1.175494351E-38),0,(1.175 494351E-38,3.402823466351E+38) 0,(1.175494351E-38,3.402823466E+38) 單精度浮點數值
DOUBLE 8字節double(255,30) (-1.7976931348623157E+308,-2.225073858 5072014 E-308),0,(2.2250738585072014E-308,1.7976931348623157E+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+2double(65,30) 依賴於M和D的值 依賴於M和D的值 x小數值
  • 有符合的8位前面第一位是表示符號的,后邊只能顯示7位
  • 整數 int: create table 表 (id1 int(4),id2 int(11));
    • int默認是有符號的
    • int 默認11位 整數
    • 它能表示的數字的范圍不被寬度約束#它只能約束數字的顯示寬度
  • 整數 int: create table 表 (id1 int unsigned,id2 int); #unsigned 指定取除int符號
  • 小數 float: create table 表 (f1 float(5,2),d1 double(5,2)); #float單精度浮點數值 #double雙精度浮點數值 (5,2)整數,小數范圍限制
  • 小數 float: create table 表 (f1 float,d1 double); 默認值
  • 小數 float: create table 表(d1 decimal,d2 decimal(25,20));#decimal 小數值 默認與指定(25,20)

字符串類型


  • 字符串類型表
類型 大小 用途
CHAR 0-255字節 定長字符串
VARCHAR 0-65535 字節 變長字符串
TINYBLOB 0-255字節 不超過 255 個字符的二進制字符串
TINYTEXT 0-255字節 短文本字符串
BLOB 0-65 535字節 二進制形式的長文本數據
TEXT 0-65 535字節 長文本數據
MEDIUMBLOB 0-16 777 215字節 二進制形式的中等長度文本數據
MEDIUMTEXT 0-16 777 215字節 中等長度文本數據
LONGBLOB 0-4 294 967 295字節 二進制形式的極大文本數據
LONGTEXT 0-4 294 967 295字節 極大文本數據
  • 定長單位 char
    • char:不可變,定長高效
  • 邊長單位 varchar
    • varchar:變長省空間

時間類型


  • 日期類型表
類型 大小 (字節) 范圍 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 年月日
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 時分秒
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 年月日時分秒
TIMESTAMP 4 1970-01-01 00:00:00/2038 結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和時間值,時間戳
  • 日期類型

    • year:年: yyyy(1901/2155)

    • date:年-月-日 yyyy-MM-dd(1000-01-01/9999-12-31)

    • time:時:分:秒 HH:mm:ss

    • datetime:yyyy-MM-dd HH:mm:ss(1000-01-01 00:00:00/9999-12-31 23:59:59)

    • timestamp:yyyy-MM-dd HH:mm:ss(1970-01-01 00:00:00/2038-01-19 ??)

      • 不賦值會有當前系統時間
    • now()函數現在時間

ENUM | SET類型


  • 類型表
類型 大小 用途
ENUM 對1-255個成員的枚舉需要1個字節存儲; 對於255-65535個成員,需要2個字節存儲; 最多允許65535個成員。 單選:選擇性別
SET 1-8個成員的集合,占1個字節 9-16個成員的集合,占2個字節 17-24個成員的集合,占3個字節 25-32個成員的集合,
占4個字節 33-64個成員的集合,占8個字節 多選:興趣愛好
  • create table 表(name char(12),gender ENUM('male','female'),hobby set('抽煙','喝酒','燙頭','洗腳'));
  • insert into t12 values('gandan','不詳','抽煙,喝酒,洗腳,洗腳,按摩');


免責聲明!

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



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