MySQL——DML與約束

關(guān)于MySQL當(dāng)中字段的數(shù)據(jù)類型屏鳍?以下只說常見的

int 整數(shù)型(Java中的int)
bigint 長整型(Java中的long)
float 浮點(diǎn)型(Java中的float double)
char 定長字符串(String)
varchar 可變長字符串(StringBuffer/StringBuilder)
date 日期類型(對應(yīng)Java中的java.sql.Date類型)
BLOB二進(jìn)制大對象(存儲圖片棘劣、視頻等流媒體信息) Binary Large Object (對應(yīng)Java中的object)
CLOB 字符大對象(存儲較大文本,比如秘蛔,可以存儲4G的字符串) Character Large Object (對應(yīng)Java中的Object)

char和varchar怎么選擇凌箕?

在實(shí)際的開發(fā)中枪萄,當(dāng)某個(gè)字段中的數(shù)據(jù)長度不發(fā)生改變的時(shí)候伶选,是定長的史飞,例如:性別尖昏、生日等都是采用char。
當(dāng)一個(gè)字段的數(shù)據(jù)長度不確定构资,例如:簡介抽诉、姓名等都是采用varchar。

1吐绵、新建表

創(chuàng)建表語句:create table 表名(字段名1 數(shù)據(jù)類型迹淌,字段名2 數(shù)據(jù)類型,字段名3 數(shù)據(jù)類型······);
create table t_student(no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
 birth char(10));
此時(shí)可以從下表中看出表中各個(gè)字段的默認(rèn)值為NULL
若在建表時(shí)使用default語句
 create table t_student(no bigint,
name varchar(255),
sex char(1) default 1,
classno varchar(255),
birth char(10));
再次查詢表結(jié)構(gòu)

結(jié)論:default語句在建表時(shí)使用可以修改該字段的默認(rèn)值

2己单、刪除表

刪除表語句:
drop table if exists 表名;

3唉窃、復(fù)制表

create table 表名 as DQL語句

4、將查詢結(jié)果插入到一張表中纹笼?

insert into 目標(biāo)表  select語句

5句携、修改數(shù)據(jù):update

語法格式:
Update 表名 set 字段名1=值1,字段名2=值2......where條件允乐;

注意:沒有條件整張表格數(shù)據(jù)全部更新。

6削咆、刪除數(shù)據(jù)

語法格式:
delete from 表名 where 條件牍疏;

注意:沒有條件全部刪除。

怎么刪除大表:(重點(diǎn))
truncate table 表名拨齐;//表被截?cái)嗔墼桑豢苫貪L,永久丟失瞻惋。
對于表結(jié)構(gòu)的修改不講厦滤,使用工具完成即可,因?yàn)樵趯?shí)際開發(fā)中表一旦設(shè)計(jì)好之后歼狼,對于表結(jié)構(gòu)的修改使很少的掏导,修改表結(jié)構(gòu)就是對之前的設(shè)計(jì)進(jìn)行了否定,即使需要修改表結(jié)構(gòu)羽峰,我們也可以使用工具操作趟咆。修改表結(jié)構(gòu)的語句不會出現(xiàn)在JAVA代碼中,出現(xiàn)在Java代碼中的sql包括:insert detele update select(對表中數(shù)據(jù)操作)

7梅屉、插入數(shù)據(jù)

語法格式:
insert into 表名(字段名1,字段名2,字段名3···) value(值1,值2,值3···);

約束(Constraint)

在創(chuàng)建表的時(shí)候值纱,可以給表的字段添加相應(yīng)的約束,添加約束的目的是為了保證表中數(shù)據(jù)的合法性坯汤、有效性虐唠、完整性。

常見的約束有哪些惰聂?

非空約束(not null):約束的字段不能為NULL
唯一約束(unique):約束的字段不能重復(fù)
主鍵約束(primary key):約束的字段既不能為NULL疆偿,也不能重復(fù)
外鍵約束(foreign key)
檢查約束(check):注意Oracle數(shù)據(jù)庫有check約束咱筛,但是MySQL沒有,目前MySQL不支持該約束翁脆。

唯一性約束(unique)

唯一約束的字段具有唯一性眷蚓,不能重復(fù)。但可以為NULL反番。

【表級約束】
create table t_user(
in int,
usercode varchar(255),
username varchar(255),
unique(usercode,username)
);
【列級約束】
create table t_user(
in int,
usercode varchar(255) unique,
username varchar(255) unique,
);

注意:以上兩種表達(dá)方式功能不一樣沙热,第一種為聯(lián)合表達(dá)形式,單個(gè)字段可以重復(fù)罢缸,但兩個(gè)字段不能一起重復(fù)篙贸,第二種表達(dá)單個(gè)字段內(nèi)不能重復(fù)。

注意:外鍵值可以為NULL枫疆,外鍵字段引用其他表的某個(gè)字段的時(shí)候爵川,被引用的字段不一定是主鍵,但至少具有unique約束(唯一性)息楔。

主鍵約束

主鍵字段中的數(shù)據(jù)不能為NULL寝贡,也不能重復(fù)。

主鍵相關(guān)的術(shù)語值依?

主鍵約束:primary key
主鍵字段:id字段添加primary key之后圃泡,id叫做主鍵字段
主鍵值:id字段中的每一個(gè)值都是主鍵值。

主鍵有什么用愿险?

表的設(shè)計(jì)三范式中有要求颇蜡,第一范式就要求任何一張表都應(yīng)該有主鍵。
主鍵的作用:主鍵值是這行記錄在這張表當(dāng)中的唯一標(biāo)識辆亏。

主鍵的分類风秤?

按主鍵字段數(shù)量分:
-單一主鍵
-復(fù)合主鍵(多個(gè)字段聯(lián)合起來添加一個(gè)主鍵約束)(復(fù)合主鍵不建議使用,因?yàn)閺?fù)合主鍵違背三范式)
按主鍵性質(zhì)劃分:
-自然主鍵:主鍵值最好就是一個(gè)和業(yè)務(wù)沒有任何關(guān)系的自然數(shù)扮叨。
-業(yè)務(wù)主鍵:主鍵值和系統(tǒng)的業(yè)務(wù)掛鉤缤弦,例如:拿著銀行卡的卡號做主鍵,拿著身份證號碼作為主鍵彻磁。(不推薦用)
最好不要拿著和業(yè)務(wù)掛鉤的字段作為主鍵甸鸟。因?yàn)橐院蟮臉I(yè)務(wù)一旦發(fā)生改變的時(shí)候,主鍵值可能也需要隨著發(fā)生變化兵迅,但有的時(shí)候沒有辦法變化抢韭,因?yàn)樽兓赡軙?dǎo)致主鍵值重復(fù)。

一張表的主鍵約束只能有一個(gè)(復(fù)合主鍵也是一個(gè)主鍵恍箭,不常用)
mysql提供主鍵值自增:

id字段自動維護(hù)一個(gè)自增的數(shù)字刻恭,從1開始,以1遞增

create table t_user(id int primary key auto_increment,username varchar(255));

提示:Oracle當(dāng)中也提供了一個(gè)自增機(jī)制,叫做:序列(sequence)對象

外鍵約束

關(guān)于外鍵約束的相關(guān)術(shù)語:

-外鍵約束:foreign key
-外鍵字段:添加有外鍵約束的字段
-外鍵值:外鍵字段中的每一個(gè)值鳍贾。

班級表和學(xué)生表

t_student中的classno字段引用t_class表中的cno字段鞍匾,此時(shí)t_student表叫做子表。t_class表叫做父表骑科。
順序要求:
刪除數(shù)據(jù)的時(shí)候橡淑,先刪除子表,再刪除父表咆爽。
添加數(shù)據(jù)的時(shí)候梁棠,先添加父表,再添加子表斗埂。
創(chuàng)建表的時(shí)候符糊,先創(chuàng)建父表,再創(chuàng)建子表呛凶。
刪除表的時(shí)候男娄,先刪除子表,再刪除父表漾稀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末模闲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子崭捍,更是在濱河造成了極大的恐慌围橡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缕贡,死亡現(xiàn)場離奇詭異,居然都是意外死亡拣播,警方通過查閱死者的電腦和手機(jī)晾咪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贮配,“玉大人谍倦,你說我怎么就攤上這事±崂眨” “怎么了昼蛀?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圆存。 經(jīng)常有香客問我叼旋,道長,這世上最難降的妖魔是什么沦辙? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任夫植,我火速辦了婚禮,結(jié)果婚禮上油讯,老公的妹妹穿的比我還像新娘详民。我一直安慰自己延欠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布沈跨。 她就那樣靜靜地躺著由捎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饿凛。 梳的紋絲不亂的頭發(fā)上狞玛,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音笤喳,去河邊找鬼为居。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杀狡,可吹牛的內(nèi)容都是我干的蒙畴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼呜象,長吁一口氣:“原來是場噩夢啊……” “哼膳凝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恭陡,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蹬音,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后休玩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體著淆,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年拴疤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了永部。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呐矾,死狀恐怖苔埋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜒犯,我是刑警寧澤组橄,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站罚随,受9級特大地震影響玉工,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淘菩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一瓮栗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦费奸、人聲如沸弥激。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽微服。三九已至,卻和暖如春缨历,著一層夾襖步出監(jiān)牢的瞬間以蕴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工辛孵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丛肮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓魄缚,卻偏偏與公主長得像宝与,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子冶匹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349