sql 語句學(xué)習(xí) 2 -持續(xù)更新中

go#1 MySQL 數(shù)據(jù)類型

1.1 MySQL數(shù)據(jù)類型

  • 整型
    整型類型(顯示寬度)
    int(8)

從上面的顯示我們看到,設(shè)置了寬度為8,并且zerofill了,這樣在查詢的時候,會在前面自動補(bǔ)0播揪。寬度可以不設(shè)置氛堕,因?yàn)檎麛?shù)數(shù)據(jù)類型都有默認(rèn)的顯示寬度,不設(shè)就采用默認(rèn)的.
另外彻况,即使設(shè)置了顯示寬度,也能賦超過顯示寬度的值舅踪,整型的顯示寬度僅僅用于顯示補(bǔ)0纽甘。

  • 浮點(diǎn)型與定點(diǎn)型
    數(shù)據(jù)類型(M,D)
    M:精度,數(shù)據(jù)的總長度
    D:標(biāo)度抽碌,小數(shù)點(diǎn)后的長度
    這種類型MySQL里有3種如:Float(6,2)悍赢、Double(6,2)、Decimal(6,2);

當(dāng)不指定精度時左权,F(xiàn)loat皮胡、Double默認(rèn)會保存實(shí)際精度,而Decimal默認(rèn)是整數(shù)涮总;
當(dāng)標(biāo)度不夠時胸囱,都會四舍五入,但Decimal會警告信息瀑梗。

  • 日期與時間類型
    DATE類型前面可以加個D烹笔,D表示天即24小時,如往DATE類型插入 '2 15:20:20'抛丽;

另外TimeStamp類型與DateTime在無輸入的情況下要注意下:
TimeStamp使用Current_TimeStamp()而DateTime使用NOW(來獲取當(dāng)前時間)谤职;
輸入NULL時,系統(tǒng)會輸入系統(tǒng)當(dāng)前日期與時間亿鲜;
無任何輸入時允蜈,系統(tǒng)會輸入系統(tǒng)當(dāng)前日期與時間;

類型 字節(jié)數(shù) 取值范圍 零值
YEAR 1 1901~2155 0000
DATE 4 1000-01-01~9999-12-31 0000:00:00
TIME 3 -838:59:59~838:59:59 00:00:00
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 0000-00-00 00:00:00
TIMESTAMP 4 1970-01-01 08:00:01~2038-01-19 11:14:07 00000000000000
  • 字符串類型
    在MySQL中蒿柳,字符串類型包括CHAR饶套、VARCHAR、BLOB垒探、TEXT妓蛮、ENUM、SET圾叼。

CHAR與VARCHAR
字符串類型(M)
這個M是長度的意思蛤克,插入該列的字符串長度將不允許超過M所指定的長度。另外夷蚊,由于MySQL在建庫時就指定了字符集构挤,因此就不存在nchar、nvarchar惕鼓、ntext這種數(shù)據(jù)類型了筋现。

char最長可取255;
varchar最長可取65535呜笑;

TEXT

類型 允許的長度 存儲空間
TINYTEXT 0~255字節(jié) 值的長度+2字節(jié)
TEXT 0~65535字節(jié) 值的長度+2字節(jié)
MEDIUMTEXT 0~167772150字節(jié) 值的長度+3字節(jié)
LONGTEXT 0~4294967295字節(jié) 值的長度+4字節(jié)

ENUM類型

屬性名 ENUM('值1','值2','值3'...'值n')

ENUM有NOT NULL屬性夫否,其默認(rèn)值為取值列表的第一個元素;
ENUM無NOT NULL叫胁,則ENUM類型將允許插入NULL,并且NULL為默認(rèn)值汞幢;

SET類型

屬性名 SET('值1','值2','值3'...,'值n')

它與ENUM的區(qū)別在什么地方呢驼鹅?
基本上就是多選的ENUM。

二進(jìn)制類型

二進(jìn)制類型是在數(shù)據(jù)庫中存儲二進(jìn)制數(shù)據(jù)的數(shù)據(jù)類型。二進(jìn)制類型包括BINARY输钩、VARBINARY豺型、BIT、TINYBLOB买乃、BLOB姻氨、MEDIUMBLOB、LONGBLOB剪验。

|類型 |取值范圍
|-|
|BINARY(M) |字節(jié)數(shù)為M肴焊,允許長度為0~M的定長二進(jìn)制字符串
|VARBINARY(M) |允許長度為0~M的變長二進(jìn)制字符串,字節(jié)數(shù)為值的長度加1
|BIT(M) |M位二進(jìn)制數(shù)據(jù)功戚,M最大值為64
|TINYBLOB |可變長二進(jìn)制數(shù)據(jù)娶眷,最多255個字節(jié)
|BLOB |可變長二進(jìn)制數(shù)據(jù),最多2的16次方-1個字節(jié)
|MEDIUMBLOB |可變長二進(jìn)制數(shù)據(jù)啸臀,最多2的24次方-1個字節(jié)
|LONGBLOB |可變長二進(jìn)制數(shù)據(jù)届宠,最多2的32次方-1個字節(jié)

數(shù)據(jù)類型的選擇

1.整型:根據(jù)要顯示的最大值決定;
2.浮點(diǎn)型:要顯示小數(shù)乘粒。如果要精確到小數(shù)點(diǎn)后10位豌注,就選擇DOUBLE,而不應(yīng)該選擇FLOAT灯萍。DECIMAL精度較高轧铁,浮點(diǎn)數(shù)會出現(xiàn)誤差,如果精度較高竟稳,則應(yīng)選擇定點(diǎn)數(shù)DECIMAL属桦;
3.字符串型:定長與變長的區(qū)別,CHAR類型占用空間比較大他爸,但是處理速度比VARCHAR快聂宾,如果長度變化不大,如身份證號碼那種诊笤,最好選擇CHAR類型耘纱。而對于評論字符串,最好選擇VARCHAR终抽;
4.時間:根據(jù)需要顯示的類型咯易猫,特別是TIMESTAMP,如果需要顯示的時間與時區(qū)對應(yīng),就應(yīng)該選擇TIMESTAMP晾匠;
5.ENUM類型和SET類型:長度不同茶袒,ENUM類型最多可以由65535個成員,而SET類型最多只能包含64個成員凉馆。且ENUM只能單選薪寓,而SET類型可以多選亡资;
6.TEXT類型和BLOB類型:TEXT只能存儲字符數(shù)據(jù),而BLOB可以存儲二進(jìn)制數(shù)據(jù)向叉。如果是純文本锥腻,適合TEXT。如果是圖片等適合存二進(jìn)制母谎;

1.2 創(chuàng)建數(shù)據(jù)表
create table 表名(id int , name varchar(20));
1.3 為列添加約束
  • 添加主鍵約束
//創(chuàng)建用戶表
create table users(id int primary key, name varchar(20),sex set('男','女','未知'));
  • 添加外鍵約束
//創(chuàng)建分?jǐn)?shù)表
create table scores( user_id int references users(id), game_id int references games(id), score int default 0 );
  • 添加檢查約束
create table test(id int not null, no int check(no in (0,1)));

注意:不再起作用瘦黑,雖然不報錯

  • 添加默認(rèn)約束
//創(chuàng)建分?jǐn)?shù)表
create table scores( user_id int references users(id), game_id int references games(id), score int default 0 );
  • 添加自增列
//創(chuàng)建游戲表
create table games(id int auto_increment key,game_name varchar(10));

2 MySQL 查看數(shù)據(jù)表

2.1 查看數(shù)據(jù)表
//查看表的基礎(chǔ)結(jié)構(gòu)
desc users;
//查看表的詳細(xì)結(jié)構(gòu)
show create table users;
2.2 修改數(shù)據(jù)表
//修改表名
alter table users rename to user;
//修改字段名
alter table users change id user_id int;
//修改字段類型
alter table users modify id int;
//添加字段
alter table users add nickname varchar(11);
//刪除字段
alter table users drop nickname;
//添加主鍵約束
alter table test add constraint pr primary key (id);
//添加外鍵約束
alter table test1 add constraint cc foreign key (id) references test(id);
//添加檢查約束
alter table test alter id set default 1;
//添加自增列
alter table test modify column id auto_increment;
//解除約束
alter table test1 drop foreign key cc;
2.3 刪除數(shù)據(jù)表
//刪除表
drop table test;

3 MySQL 插入數(shù)據(jù)

3.1 插入數(shù)據(jù)
//插入數(shù)據(jù)
insert games values(1,'三國殺');
//列值對應(yīng)
insert games (id,game_name) values(2,'中國象棋');
//插入多條數(shù)據(jù)
insert games (id,game_name) values(3,'保衛(wèi)蘿卜'),(4,'三國戰(zhàn)紀(jì)');
3.2 修改數(shù)據(jù)
update games set game_name = '三國' where id = 1;
3.3 刪除數(shù)據(jù)
//刪除單條數(shù)據(jù)
delete from games where id = 4;
//清空表
truncate table test;

4 MySQL 查詢基礎(chǔ)

4.1 查詢基礎(chǔ)
//查看所有信息
select * from users;
//查看單個列
select name from users;
//起別名
select name'用戶名' from users;
4.2 簡單查詢
//如果有空值不統(tǒng)計
 select count(id) from games;
//空值也統(tǒng)計進(jìn)去
select count(*) from games;
//求和
select sum(id) from games ;
//求平均值
select avg(id) from games ;
//求最大值
select max(id) from games ;
//求最小值
select min(id) from games ;
//多值
select count(*)'人數(shù)', max(scores)'最高分',sum(scores)'總分',avg(scores)'平均分' from scores where user_qq = 1;
4.3 條件查詢
//一個條件
select * from scores where user_qq = 1 
//多個條件
select * from scores where user_qq = 1  and user_name = '老李';
4.4 對查詢結(jié)果排序
//降序排列
select * from scores where user_qq = 1 ORDER BY scores desc; 
//升序排列
select * from scores where user_qq = 1 ORDER BY scores asc;
//多列排序,先寫的列優(yōu)先級高
select * from scores where user_qq = 1 ORDER BY gno asc, scores DESC; 

5 MySQL 匯總和分組數(shù)據(jù)

5.1 匯總和分組數(shù)據(jù)
//分組
select user_id,COUNT(*) from scores GROUP BY user_id;
//加條件
select user_id,COUNT(*) from scores GROUP BY user_id HAVING COUNT(*)>3;
//分組+排序
select user_id,COUNT(*) from scores GROUP BY user_id order by count(*) asc;
5.2 連接查詢
//隱式內(nèi)連接
select * from users,scores ,games where users.id = scores.user_id and scores.game_id = games.id;
//顯示內(nèi)連接
select * from users JOIN scores on users.id = scores.user_id;

//左外連接
select * from users LEFT JOIN scores on users.id = scores.user_id;
//右外連接
select * from users right JOIN scores on users.id = scores.user_id;

兩張表地位不平等奇唤,其中有一張是基礎(chǔ)表
基礎(chǔ)表每條數(shù)據(jù)必須出現(xiàn),沒有的值補(bǔ)null
5.3 子查詢
select * from users where id in (SELECT user_id from scores);
5.4 聯(lián)合查詢
select * from users UNION select * from scores
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末幸斥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冻记,更是在濱河造成了極大的恐慌睡毒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗栗,死亡現(xiàn)場離奇詭異演顾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)隅居,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門钠至,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胎源,你說我怎么就攤上這事棉钧。” “怎么了涕蚤?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵宪卿,是天一觀的道長。 經(jīng)常有香客問我万栅,道長佑钾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任烦粒,我火速辦了婚禮休溶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扰她。我一直安慰自己兽掰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布徒役。 她就那樣靜靜地躺著孽尽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忧勿。 梳的紋絲不亂的頭發(fā)上泻云,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天艇拍,我揣著相機(jī)與錄音狐蜕,去河邊找鬼宠纯。 笑死,一個胖子當(dāng)著我的面吹牛层释,可吹牛的內(nèi)容都是我干的婆瓜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼贡羔,長吁一口氣:“原來是場噩夢啊……” “哼廉白!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乖寒,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤猴蹂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楣嘁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磅轻,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年逐虚,在試婚紗的時候發(fā)現(xiàn)自己被綠了聋溜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡叭爱,死狀恐怖撮躁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情买雾,我是刑警寧澤把曼,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站漓穿,受9級特大地震影響嗤军,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜器净,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一型雳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧山害,春花似錦纠俭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至权纤,卻和暖如春钓简,著一層夾襖步出監(jiān)牢的瞬間乌妒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工外邓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撤蚊,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓损话,卻偏偏與公主長得像侦啸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丧枪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容