MySQL的DDL資料結構

2021-09-10 03:34:53 字數 2950 閱讀 9759

mysql列表頁

數值型:

整型小數:

定點數浮點數

字元型:

較短的文字:char、varchar

較長的文字:text、blob(較長的二進位制資料)

日期型:

分類:tinyint、smallint、mediumint、int/integer、bigint

1            2                3                  4             8

特點:① 如果不設定無符號還是有符號,預設是有符號,如果想設定無符號,需要新增unsigned關鍵字

② 如果插入的數值超出了整型的範圍,會報out of range異常,並且插入臨界值

③ 如果不設定長度,會有預設的長度

長度代表了顯示的最大寬度,如果不夠會用0在左邊填充,但必須搭配zerofill使用!

1.如何設定無符號和有符號

drop table if exists tab_int;

create table tab_int(

t1 int(7) zerofill,

t2 int(7) zerofill

);desc tab_int;

insert into tab_int values(-123456);

insert into tab_int values(-123456,-123456);

insert into tab_int values(2147483648,4294967296);

insert into tab_int values(123,123);

select * from tab_int;

分類:1.浮點型

float(m,d)

double(m,d)

2.定點型

dec(m,d)

decimal(m,d)

特點:①

m:整數部位+小數部位

d:小數部位

如果超過範圍,則插入臨界值

②m和d都可以省略

如果是decimal,則m預設為10,d預設為0

如果是float和double,則會根據插入的數值的精度來決定精度

③定點型的精確度較高,如果要求插入數值的精度較高如貨幣運算等則考慮使用

1》測試m和d

drop table tab_float;

create table tab_float(

f1 float,

f2 double,

f3 decimal

);select * from tab_float;

desc tab_float;

insert into tab_float values(123.4523,123.4523,123.4523);

insert into tab_float values(123.456,123.456,123.456);

insert into tab_float values(123.4,123.4,123.4);

insert into tab_float values(1523.4,1523.4,1523.4);

原則:

所選擇的型別越簡單越好,能儲存數值的型別越小越好

較短的文字:

char

varchar

其他:binary和varbinary用於儲存較短的二進位制

enum用於儲存列舉

set用於儲存集合

較長的文字:

text

blob(較大的二進位制)

特點:char

varchar

寫法char(m)

varchar(m)

m的意思

最大的字元數,可以省略,預設為1

最大的字元數,不可以省略

特點固定長度的字元

可變長度的字元

空間的耗費

比較耗費

比較節省效率高

create table tab_char(

c1 enum('a','b','c')

);insert into tab_char values('a');

insert into tab_char values('b');

insert into tab_char values('c');

insert into tab_char values('m');

insert into tab_char values('a');

select * from tab_set;

create table tab_set(

s1 set('a','b','c','d')

);insert into tab_set values('a');

insert into tab_set values('a,b');

insert into tab_set values('a,c,d');

分類:date只儲存日期

time 只儲存時間

year只儲存年

datetime儲存日期+時間

timestamp儲存日期+時間

特點:datetime

timestamp位元組8

4範圍1000-9999

1970-2038

時區等的影響不受受

create table tab_date(

t1 datetime,

t2 timestamp

);insert into tab_date values(now(),now());

select * from tab_date;

show variables like 'time_zone';

set time_zone='+9:00';

mysql 資料結構 Mysql索引資料結構

mysql索引資料結構 當慢查詢時,看sql是否走索引。索引的本質 索引是幫助mysql高效獲取資料的排好序的資料結構。mysql若不建立索引,查詢某條資料時則會逐行掃瞄,每掃瞄一行資料就會做一次磁碟io。b tree 葉節點具有相同的深度,葉節點的指標為空。所有索引元素不重複。葉節點中的資料索引從...

MySQL資料定義(DDL)

資料庫定義語句 檢視據庫 show databases 建立資料庫 語法 create database if notexists 資料庫名 default character set 字符集名 default collate 校對規則名 示例 create database db1 default...

mysql資料結構

在剛才新建表的過程中,我們提到了資料型別,mysql 的資料型別和其他程式語言大同小異,下表是一些 mysql 常用資料型別 整數型 整數除了 int 外,還有 tinyint smallint mediumint bigint。字元型 char 和 varchar 的區別 char 的長度是固定的...