gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

一起了解什么是MySQL數據庫(三)

一起了解什么是MySQL數據庫(三)

免費學習推薦:mysql視頻教程

目錄

    • 模糊查詢
    • 表的約束
    • 表之間的關聯(lián)
      • 多對一關聯(lián)
      • 多對多關聯(lián)
      • 一對一關聯(lián)

模糊查詢


可以根據大致提供的內容,找到我們想要的數據,它與=查詢不同,拿char類型數據和varchar類型數據舉例:

create table c1(x char(10));create table c2(x varchar(10));insert c1 values('io');insert c2 values('io');

模糊查詢使用到的是like

select * from c1 where x like 'io';select * from c2 where x like 'io';

一起了解什么是MySQL數據庫(三)
可以發(fā)現,c1里面的x為char類型,我們通過模糊查詢是否有io這個數據,無法顯示出來,而我們通過=卻可以查詢出來

一起了解什么是MySQL數據庫(三)
模糊查詢比較精準,這種方式查詢,必須要輸入這個字段的全部內容,才可以查詢出來,而這里char類型存儲的數據,長度不滿10為,所以使用了空格補充,所以查詢的時候,需要把空格帶上才可以;
一起了解什么是MySQL數據庫(三)
我們也可以使用模糊查詢提供給我們的查詢方式,% 表示任意0個或多個字符。

select * from c1 where x like 'io%';

一起了解什么是MySQL數據庫(三)
如果我們只知道第二位是一個o,不知道開頭和結尾,可以使用:_ 表示任意單個字符,再配合%匹配后面的多個字符

select * from c1 where x like '_o%';

一起了解什么是MySQL數據庫(三)
SQL模糊查詢的語法為
“SELECT column FROM table WHERE column LIKE ‘;pattern’;”。

SQL提供了四種匹配模式:

  1. % 表示任意0個或多個bai字符。如下語句:
    SELECT * FROM user WHERE name LIKE ‘;%三%’;
    將會把name為“張三”,“三腳貓”,“唐三藏”等等有“三”的全找出來;
  2. _ 表示任意單個字符。語句:
    SELECT * FROM user WHERE name LIKE ‘;’;
    只找出“唐三藏”這樣name為三個字且中間一個字是“三”的;
    SELECT * FROM user WHERE name LIKE ‘;三__’;
    只找出“三腳貓”這樣name為三個字且第一個字是“三”的;
  3. []表示括號內所列字符中的一個(類似與正則表達式)。語句:
    SELECT * FROM user WHERE name LIKE ‘;[張李王]三’;
    將找出“張三”、“李三”、“王三”(而不是“張李王三”);
    如 [ ] 內有一系列字符(01234、abcde之類的)則可略寫為“0-4”、“a-e”
    SELECT * FROM user WHERE name LIKE ‘;老[1-9]’;
    將找出“老1”、“老2”、……、“老9”;
    如要找“-”字符請將其放在首位:’;張三[-1-9]’;
  4. [^ ] 表示不在括號所列之內的單個字符。語句:
    SELECT * FROM user WHERE name LIKE ‘;[^張李王]三’;
    將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;
    SELECT * FROM user WHERE name LIKE ‘;老[^1-4]’;
    將排除“老1”到“老4”尋找“老5”、“老6”、……、“老9”。

表的約束


介紹:

  • 約束條件與數據類型的寬度一樣,都是可選參數

  • 作用:用于保證數據的完整性和一致性

主要分為:

PRIMARY KEY (PK)    標識該字段為該表的主鍵,可以唯一的標識記錄FOREIGN KEY (FK)    標識該字段為該表的外鍵NOT NULL    標識該字段不能為空UNIQUE KEY (UK)    標識該字段的值是唯一的AUTO_INCREMENT    標識該字段的值自動增長(整數類型,而且為主鍵)DEFAULT    為該字段設置默認值UNSIGNED 無符號 ZEROFILL 使用0填充

not null:字面意思就說明了,設置后,每次插入值時,必須為該字段設置值

default:如果沒有為該字段設置值,則使用我們定義在default后面的一個默認值

UNIQUE KEY:某個字段設置這個約束后,那么它設置的值,在整個表中這個字段只能存在一個(唯一)

PRIMARY KEY:主鍵primary key是innodb存儲引擎組織數據的依據,innodb稱之為索引組織表,一張表中必須有且只有一個主鍵。主鍵是能確定一條記錄的唯一標識

AUTO_INCREMENT:當設置以后,每次向表插入值時,這個字段會自動增長一個數字,但是這個字段必須是整數類型,而且還要是主鍵

FOREIGN KEY:外鍵,將該表的某個字段關聯(lián)另一張表的某個字段,關聯(lián)后這個字段的值必須對應關聯(lián)字段的值。

我們創(chuàng)建表,通常會有一個id字段作為索引標識作用,并且會將它設置為主鍵和自增。

實例:

create table test(     id int primary key auto_increment,     identity varchar(18) not null unique key, --身份證必須唯一     gender varchar(18) default '男');insert test(identity) values('123456789012345678');

一起了解什么是MySQL數據庫(三)
當身份字段插入相同值,則會報錯,因為字段設置了唯一值
一起了解什么是MySQL數據庫(三)

insert test(identity,gender) values('0123456789012345678','女');

一起了解什么是MySQL數據庫(三)
我們會發(fā)現,id不對勁啊,那是因為筆者之前進行兩次插入值操作,但是值并沒有成功插入進去,但是這個自增卻受到了影響.

這個時候,我們進行兩部操作就可以解決這個問題。

alter table test drop id;alter table test add id int primary key auto_increment first;

刪除id字段,再重新設置。
一起了解什么是MySQL數據庫(三)
很神奇是不是,這個MySQL的底層機制。vary 良心

還需要注意的是:我們使用delete刪除一條記錄時,并不會影響自增

delete from test where id = 2;insert test(identity,gender) values('111111111111111111','男');

一起了解什么是MySQL數據庫(三)
關于這個操作,如果我們只是刪除單條記錄的話,可以使用上序提供的方法還調整自增的值,而如果是刪除整個表記錄的話,使用以下方法:

truncate test;

效果演示:delete刪除整個表記錄
一起了解什么是MySQL數據庫(三)
效果演示:truncate刪除整個表記錄
一起了解什么是MySQL數據庫(三)

聯(lián)合主鍵

確保設置為主鍵的某幾個字段的數據相同

主鍵的一個目的就是確定數據的唯一性,它跟唯一約束的區(qū)別就是,唯一約束可以有一個NULL值,但是主鍵不能有NULL值,再說聯(lián)合主鍵,聯(lián)合主鍵就是說,當一個字段可能存在重復值,無法確定這條數據的唯一性時,再加上一個字,兩個字段聯(lián)合起來確定這條數據的唯一性。比如你提到的id和name為聯(lián)合主鍵,在插入數據時,當id相同,name不同,或者id不同,name相同時數據是允許被插入的,但是當id和name都相同時,數據是不允許被插入的。

實例:

create table test(     id int,     name varchar(10),     primary key(id,name));     insert test values(1,1);

一起了解什么是MySQL數據庫(三)
如果再次插入兩個主鍵相同的數據,則會報錯
一起了解什么是MySQL數據庫(三)
只要設置主鍵的兩個字段,在一條記錄內,數據不完全相同就沒有問題。
一起了解什么是MySQL數據庫(三)

外鍵的話,我們在表之間的關聯(lián)進行演示

表之間的關聯(lián)


我們這里先介紹表之間的關聯(lián),后面再學習聯(lián)表查詢

通過某一個字段,或者通過某一張表,將多個表關聯(lián)起來。

我們一張表處理好不行嗎,為什么要關聯(lián),像這樣?
一起了解什么是MySQL數據庫(三)
有沒有發(fā)現一個問題,有些員工它們對應的是相同部門,一張表就重復了很多次記錄,隨著員工數量的增加,就會出現越來越多個重復記錄,相對更占用空間了。

那么我們需要將部門單獨使用一張表,再將員工這個使用一個字段關聯(lián)到另一個表內,我們可以使用外鍵,也可以不使用外鍵,先來演示外鍵的好處吧

多對一關聯(lián)


如:多個員工對應一個部門。

員工表,先別急著創(chuàng)建,請向下看

create table emp( 	id int primary key auto_increment, 	name varchar(10) not null, 	dep_id int, 	foreign key(dep_id) references dep(id)  	on update cascade   # 級聯(lián)更新 	on delete cascade); # 級聯(lián)刪除

上面外鍵的作用就是:

dep_id字段關聯(lián)了dep表的id字段:
當dep表的id字段值修改后,該表的dep_id字段下面如果有和dep表id相同值的則會一起更改。
如果dep表刪除了某一條記錄,當emp表的dep_id與dep表刪除記錄的id值對上以后,emp表這條記錄也會被隨之刪除。

注意:必須是外鍵已存在,所以需要先創(chuàng)建部門表,再創(chuàng)建員工表

部門表

create table dep( 	id int primary key auto_increment, 	name varchar(16) not null unique key, 	task varchar(16) not null);

emp表的dep_id字段設置的數據必須是dep表已存在的id

所以我們需要先向dep表插入記錄

insert dep(name,task) values('IT','技術'),('HR','招聘'),('sale','銷售');

員工表插入記錄

insert emp(name,dep_id) values 	('jack',1), 	('tom',2), 	('jams',1), 	('rouse',3), 	('curry',2); 	# ('go',4) 報錯,在關聯(lián)外鍵的id字段中找不到

注意:如果我們emp表的dep_id字段插入的數據,在dep表中的id字段不存在該數據時,就會報錯。

查詢我們創(chuàng)建后的效果
一起了解什么是MySQL數據庫(三)
這樣就把這兩個表關聯(lián)起來了,目前我們先不了解多表查詢,這個先了解的是,表之間的關聯(lián)。

我們再來看一下同步更新以及刪除,外鍵的改動被關聯(lián)表會受到影響

update dep set id=33333 where id = 3;

一起了解什么是MySQL數據庫(三)
再來體驗一下同步刪除

delete from dep where id = 33333;

一起了解什么是MySQL數據庫(三)
這就是外鍵帶給我們的效果,有利也有弊:

  • 優(yōu)點:關聯(lián)性強,只能設置已存在的內容,并且同步更新與刪除
  • 缺點:當刪除外鍵表的某一條記錄,關聯(lián)表中有關聯(lián)性的記錄會被全部刪除

多對多關聯(lián)


多張表互相關聯(lián)

如:一個作者可以寫多本書,一本書也可以有多個作者,雙向的一對多,即多對多

這時使用外鍵會出現一個弊端,那就是先創(chuàng)建哪張表呢?它們都互相對應,是不是很矛盾呢?解決辦法:第三張表,關聯(lián)書的id與作者的id

book表

create table book( 	id int primary key auto_increment, 	name varchar(30));

author表

create table author( 	id int primary key auto_increment, 	name varchar(30));

中間表:負責將兩張表進行關聯(lián)

create table authorRbook( 	id int primary key auto_increment,     author_id int,     book_id int,     foreign key(book_id) references book(id)     on update cascade     on delete cascade,     foreign key(author_id) references author(id)     on update cascade     on delete cascade);

多名作者關聯(lián)一本書,或者一名作者關聯(lián)多本書,書也要體現出誰關聯(lián)了它

book表插入數據:

insert book(name) values 	('斗破蒼穹'), 	('斗羅大陸'), 	('武動乾坤');

author表插入數據:

insert author(name) values 	('jack'), 	('tom'), 	('jams'), 	('rouse'), 	('curry'), 	('john');

關聯(lián)表插入數據:

insert authorRbook(author_id,book_id) values 	(1,1), 	(1,2), 	(1,3), 	(2,1), 	(2,3), 	(3,2), 	(4,1), 	(5,1), 	(5,3), 	(6,2);

目前的對應關系就是:

jack:斗破蒼穹、斗羅大陸、武動乾坤
tom:斗破蒼穹、武動乾坤
jams:斗羅大陸
rouse:斗破蒼穹
curry:斗破蒼穹、武動乾坤
jhon:斗羅大陸

一個作者可以產于多本書的編寫,同時,每本書都會標明產于的作者

一對一關聯(lián)


路人有可能變成某個學校的學生,即一對一關系。

在這之前,路人不屬于學校。

原理就是:學校通過廣告,或者通過電話邀請,將路人變成了學生。

路人表

create table passers_by( 	id int primary key auto_increment, 	name varchar(10), 	age int); 	insert passers_by(name,age) values 	('jack',18), 	('tom',19), 	('jams',23);

學校表

create table school( 	id int primary key auto_increment, 	class varchar(10), 	student_id int unique key, 	foreign key(student_id) references passers_by(id) 	on update cascade 	on delete cascade);insert school(class,student_id) values 	('Mysql入門到放棄',1), 	('Python入門到運維',3), 	('Java從入門到音樂',2);

數據存儲的設計,需要提前設計好表的關聯(lián) 關系,將關系全部設計好以后,剩下的只是往里存數據了,后續(xù)我們會了解到聯(lián)表查詢相關內容,將有關聯(lián)性的內容,以虛擬表的形式查詢出來,查詢出來的數據可能來自多個表。

表的關聯(lián),建議使用以下方式

  • 多對多 > 多對一 > 一對一

相關免費學習推薦:mysql數據庫(視頻)

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧美色图色综合| 天美一区二区三区| 中文字幕在线导航| 成人性生生活性生交12| 中文字幕第38页| 亚洲第一页在线视频| 男人天堂av片| 第四色婷婷基地| 国产欧美日韩网站| 天天摸天天舔天天操| 日本阿v视频在线观看| 成人日韩在线视频| 男女高潮又爽又黄又无遮挡| 欧美精品色视频| 免费激情视频在线观看| 国产精品久久..4399| 国产精品自在自线| 日韩av资源在线| 久久男人资源站| 日韩中文在线字幕| 国产一级片中文字幕| 三级a在线观看| 丝袜制服一区二区三区| 久久无码高潮喷水| 国产精品网站免费| 六月婷婷在线视频| www.日本在线播放| 国产毛片久久久久久| 日本女优爱爱视频| 91网址在线播放| 九九九在线观看视频| 男女视频在线看| 亚洲欧美日韩综合网| 毛片毛片毛片毛| 香蕉视频在线网址| 少妇高潮毛片色欲ava片| 人人妻人人做人人爽| 男人揉女人奶房视频60分| 国产二级片在线观看| 中文字幕在线综合| 国产奶头好大揉着好爽视频| 国产成人永久免费视频| 久久久精品三级| 1314成人网| 免费激情视频在线观看| 国产乱叫456| 69堂免费视频| 一级黄色录像免费看| 欧美日韩在线中文| 18视频在线观看娇喘| 日日碰狠狠添天天爽超碰97| 老司机av福利| 亚洲精品成人在线播放| 无码人妻精品一区二区三区66| 四虎免费在线观看视频| 污污的网站免费| 麻豆三级在线观看| 女人喷潮完整视频| 久久这里只有精品23| av片在线免费| 久久久久久久香蕉| 91在线第一页| 久久综合久久久久| 黄色大片中文字幕| 日韩精品视频一区二区在线观看| 久久久亚洲国产精品| 国模无码视频一区二区三区| 精品少妇人妻av免费久久洗澡| 精品一区二区成人免费视频 | 日本高清视频免费在线观看| 人人干人人干人人| 国产精品又粗又长| 日本高清一区二区视频| 无码人妻丰满熟妇区五十路百度| 99精品在线免费视频| 色七七在线观看| 免费看污污视频| 欧美大黑帍在线播放| 美女av免费在线观看| 国内av一区二区| 青青青在线播放| 国产av第一区| 日本888xxxx| 能在线观看的av| 99久久99久久精品| 亚洲欧美日韩三级| 欧美不卡在线播放| 特黄视频免费观看| 免费裸体美女网站| 久久久999视频| 成品人视频ww入口| 欧美日韩福利在线| 国产成人三级视频| 精品91一区二区三区| 99热这里只有精品在线播放| 50路60路老熟妇啪啪| 97国产在线播放| a级黄色一级片| 国内外成人激情视频| 91视频 -- 69xx| 色七七在线观看| 日本中文字幕精品—区二区| 992kp快乐看片永久免费网址| 久久精品一区二| 黄色手机在线视频| ijzzijzzij亚洲大全| 中国一级大黄大黄大色毛片| 日韩欧美色视频| 俄罗斯av网站| 我看黄色一级片| 丰满女人性猛交| 男人添女人下面高潮视频| 久久久久久久久久久福利| 天美星空大象mv在线观看视频| www欧美激情| 亚洲不卡中文字幕无码| 国产成人综合一区| www.18av.com| 图片区乱熟图片区亚洲| 日韩一级性生活片| 欧美又黄又嫩大片a级| 午夜视频在线网站| 国产欧美高清在线| 国产免费裸体视频| 超碰成人免费在线| jizz18女人| 蜜臀av免费观看| av免费观看大全| 国自产拍偷拍精品啪啪一区二区| 九九九九九九九九| aaa一级黄色片| 五月天色婷婷综合| 天堂在线精品视频| 国产免费中文字幕| 国产精品久久久久久久99| 国产女女做受ⅹxx高潮| 免费无码av片在线观看| 欧妇女乱妇女乱视频| 免费拍拍拍网站| 国内外成人免费激情视频| 每日在线更新av| 一级黄色特级片| 日日夜夜精品视频免费观看| 图片区乱熟图片区亚洲| 国产一二三四区在线观看| 日韩国产成人无码av毛片| 霍思燕三级露全乳照| 91最新在线观看| 2022中文字幕| 丝袜制服一区二区三区| 精品91一区二区三区| 情侣黄网站免费看| 久久久久久久久久久久91| 伊人久久在线观看| 亚洲第一狼人区| 欧美亚洲另类色图| 免费看污污视频| 国产三级精品三级在线| 精品久久久久久无码中文野结衣| wwwwww.色| 日本三区在线观看| www.日本三级| 国产无套粉嫩白浆内谢的出处| 可以看毛片的网址| 欧美精品 - 色网| www.日日操| 99色精品视频| 无码人妻精品一区二区三区在线| 日韩人妻精品一区二区三区| 三区视频在线观看| 亚洲天堂2018av| 国产乱女淫av麻豆国产| 91香蕉视频导航| 日本高清免费在线视频| 欧美特级aaa| 996这里只有精品| 久久www视频| 日本熟妇人妻中出| 激情视频免费网站| 日韩 欧美 自拍| 欧美 日韩 国产 高清| 一道本视频在线观看| 日韩一级免费片| 99久久免费观看| 校园春色 亚洲色图| 老司机午夜网站| 国产三区在线视频| 午夜影院免费观看视频| 成人性生活视频免费看| 一级特黄性色生活片| 97在线国产视频| 怡红院亚洲色图| 国产成人无码一二三区视频| 亚洲综合在线一区二区| 69堂免费视频| 日本精品免费在线观看| 天堂а√在线中文在线| 欧美美女性视频| 国产精品少妇在线视频| 免费一级特黄特色毛片久久看|