Mysql之資料類型(胖胖老師)

來源:互聯網
上載者:User

標籤:ima   個人   配置   0.12   資料類型   esc   定義   cap   tab   


like語句與萬用字元

insert into teacher_1 values(‘胖胖‘, ‘男‘, 18),
(‘小明‘, ‘男‘, 19),
(‘張三‘, ‘男‘, 30),
(‘李四‘, ‘男‘, 27),
(‘張成‘, ‘男‘, 21),
(‘三胖‘, ‘女‘, 31),
(‘張三丰‘, ‘男‘, 66),
(‘張‘, ‘男‘, 11),
(‘王_白‘, ‘男‘, 14),
(‘王大白‘, ‘男‘, 19);

需求一: 查詢出姓張的人;
select * from teacher_1 where name like ‘張%‘;   --%表示配置0個或者多個任一字元

需求二: 查詢出名字中第二個字元是‘胖‘的人;
select * from teacher_1 where name like ‘_胖%‘;
ps: %表示配置0個或者多個任一字元, _表示配置一個任一字元

需求三: 查詢出 名字中第一個和第二個字元是 ‘王‘和‘_‘ 的那個人;
select * from teacher_1 where name like ‘王/_%‘ escape ‘/‘;
select * from teacher_1 where name like ‘王\_%‘;

***********************************************************************************************************************

資料類型
1: 數實值型別
2: 日期類型
3: 字串類型
***********************************************************************************************************************

1: 整形
tinyint類型
tinyint如果有符號範圍則是(-128, 127), 如果無符號範圍則是(0, 255);

可以使用unsigned標識來定義是否符號, 加上unsigned標識則表示無符號, 預設是有符號的

create table t_1(
    a tinyint,
    b tinyint unsigned
);
例: insert into t_1 values(-128, 127);
例: insert into t_1 values(-128, -1);    --報錯
例: insert into t_1 values(255, 255);    --報錯
例: insert into t_1 values(-128, 255);

定義資料的顯示寬度
create table t_2(
    a tinyint(2)
);
ps: 類型(2), 比如tinyint(2), (2)並不是表示最大隻能輸入2位元字的值;
    而是表示顯示的最小寬度是多少, 如果想要達到顯示最小寬度的目的,還需要使用zerofill(前置字元為零填充)來標識
例: insert into t_2 values(123);
例: insert into t_2 values(1);

alter table t_2 add b tinyint(2) zerofill;
例: insert into t_2(b) values(2);
例: insert into t_2(b) values(123);
例: insert into t_2(b) values(-1);    --報錯, 標識了zerofill後 也會預設加上一個unsigned;

2: 小數型
浮點類型
float(單精確度), double(雙精確度)
create table t_3(
    a float,
    b double
);
例: insert into t_3(a, b) values(1234567890.123456789,1234567890.123456789);
    +------------+--------------------+
    | a          | b                  |
    +------------+--------------------+
    | 1234570000 | 1234567890.1234567 |
    +------------+--------------------+
    ps: float與double類型雖然可以表示一個很大的小數, 但是如果值超過精度位元,這裡則會損失精度
        float預設精度位元是6位左右, double預設的精度位元是17左右;

create table t_4(
    a float(4) zerofill
);
insert into t_4 values(12);
insert into t_4 values(12345);


create table t_5(
    a float(6, 2)
);
ps: 浮點型(M,D) 比如float(6, 2) 這裡的6表示的是能夠最大的所有位元(不包括符號和小數號), 2表示最大小數位元
例: insert into t_5 values(1234.56);
例: insert into t_5 values(123.56);
例: insert into t_5 values(123.5);
例: insert into t_5 values(12345.6);         --報錯
例: insert into t_5 values(1234.128);        --不報錯,但會把多餘的小數以四捨五入的方式截取掉


定點數類型(decimal)
ps: decimal(M,D)定點數型依賴於M和D, M的預設值是10, D的預設值是0; M一樣表示總數位, D表示小數位  總數

create table t_6(
    a decimal(21, 2) zerofill
);
例: insert into t_6 values(123456789123456789.12);
    +------------------------+
    | a                      |
    +------------------------+
    | 0123456789123456789.12 |
    +------------------------+
***********************************************************************************************************************

日期類型
datetime(年月日時分秒)與timestamp類型(時間戳記)
create table t_7(
    a datetime,
    b timestamp
);
例: insert into t_7 values(‘2012-08-08 08:08:08‘, 54389867575365); --報錯, 時間戳記儲存時是整形,但是表示是日期型
例: insert into t_7 values(‘2012-08-08 08:08:08‘, ‘2012-08-08 08:08:08‘);
例: select a+0, b+0 from t_7;   --在檢索時如果列+0, 時間的格式會整形來顯示
    +-----------------------+----------------+
    | a+0                   | b+0            |
    +-----------------------+----------------+
    | 20120808080808.000000 | 20120808080808 |
    +-----------------------+----------------+
例: insert into t_7 values(‘2012-08-08 08:08:08‘, ‘2038-01-20‘);   --報錯
例: insert into t_7 values(‘2012-08-08 08:08:08‘, ‘2038-01-19‘);   --不報錯
例: insert into t_7 values(‘2012*08*08‘, ‘2038*01*19‘);            --支援任意的分隔字元日期
例: insert into t_7 values(‘20120808‘, ‘20380119‘);                --也可以不用寫分隔字元
例:insert into t_7 values(‘20128808‘, ‘20380119‘);                --報錯


Date類型
create table t_t(
    a date,
    b datetime
);
例: insert into t_t values(‘2012-08-08 08:08:08‘, ‘2012-08-08 08:08:08‘);
ps: Date類型是以YYYY-MM-DD形式顯示日期, datetime以年月日時分秒形式來顯示日期


Time類型(D HH:MM:SS) D表示天
ps: Time表示的一天中的日間
create table t_8(
    a time
);
例: insert into t_8 values(‘2 08:08:08‘);
例: insert into t_8 values(‘99:08:08‘);
例: insert into t_8 values(‘990808‘);
例:insert into t_8 values(‘99-08-08‘);     --報錯

year類型
create table t_9(
    a year
);
例: insert into t_9 values(‘1901‘);
例: insert into t_9 values(‘1900‘);
***********************************************************************************************************************

3: 字串類型
char(M)     M表示嚴格限定的長度
varchar(M)  M表示允許的最大長度;
create table t_10(
    c char(4),
    v varchar(4)
);
例: insert into t_10 values(‘ab‘, ‘ab‘);
例: insert into t_10 values(‘ab‘, ‘abcde‘);   --報錯
例: insert into t_10 values(‘abcde‘, ‘ab‘);   --報錯

Text類型(長文本類型)--還有tinyText, longText
create table t_11(
    a text,
    b tinytext
);


enum枚舉類型
create table t_12(
    sex enum(‘男‘,‘女‘,‘保密‘)
);
例: insert into t_12 values(‘不男不女‘);
例: insert into t_12 values(‘男‘);


set集合類型
create table t_13(
    hobby set(‘eat‘, ‘drink‘, ‘sleep‘)
);
例: insert into t_13 values(‘eat,sleep‘);
例:insert into t_13 values(‘eat,sleep,drink‘);
例:insert into t_13 values(‘eat,sleep, drink‘);    --報錯 不要有空格
例:insert into t_13 values(‘eat,sleep,胖胖‘);      --胖胖

Mysql之資料類型(胖胖老師)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.