1. 程式人生 > >Mysql之數據類型(胖胖老師)

Mysql之數據類型(胖胖老師)

8.0 允許 很大的 的人 creat 查詢 枚舉 左右 範圍


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之數據類型(胖胖老師)