自定義View系列教程00–推翻自己和過往,重學(xué)自定義View 自定義View系列教程01–常用工具介紹 自定義View系列教程02–onMeasure源碼詳盡分析 自定義View系列教程03–onLayout源碼詳盡分析 自定義View系列教程04–Draw源碼分析及其實(shí)踐 自定義View系列教程05–示例分析 自定義View系列教程06–詳解View的Touch事件處理 自定義View系列教程07–詳解ViewGroup分發(fā)Touch事件 自定義View系列教程08–滑動沖突的產(chǎn)生及其處理
探索Android軟鍵盤的疑難雜癥 深入探討Android異步精髓Handler 詳解Android主流框架不可或缺的基石 站在源碼的肩膀上全解Scroller工作機(jī)制
Android多分辨率適配框架(1)— 核心基礎(chǔ) Android多分辨率適配框架(2)— 原理剖析 Android多分辨率適配框架(3)— 使用指南
Android程序員C語言自學(xué)完備手冊 講給Android程序員看的前端系列教程(圖文版) 講給Android程序員看的前端系列教程(視頻版)
版權(quán)聲明
關(guān)聯(lián)關(guān)系在實(shí)際開發(fā)中數(shù)據(jù)表之間存在著各種關(guān)聯(lián)關(guān)系。在此,介紹MySQL中數(shù)據(jù)表的三種關(guān)聯(lián)關(guān)系。 多對一多對一(亦稱為一對多)是數(shù)據(jù)表中最常見的一種關(guān)系。例如:員工與部門之間的關(guān)系,一個(gè)部門可以有多個(gè)員工;而一個(gè)員工不能屬于多個(gè)部門只屬于某個(gè)部門。在多對一的表關(guān)系 中,應(yīng)將外鍵建在多的一方否則會造成數(shù)據(jù)的冗余。 多對多多對多是數(shù)據(jù)表中常見的一種關(guān)系。例如:學(xué)生與老師之間的關(guān)系,一個(gè)學(xué)生可以有多個(gè)老師而且一個(gè)老師有多個(gè)學(xué)生。通常情況下,為了實(shí)現(xiàn)這種關(guān)系需要定義一張中間表(亦稱為連接表)該表會存在兩個(gè)外鍵分別參照老師表和學(xué)生表。 一對一在開發(fā)過程中,一對一的關(guān)聯(lián)關(guān)系在數(shù)據(jù)庫中并不常見;因?yàn)橐赃@種方式存儲的信息通常會放在同一張表中。 接下來,我們來學(xué)習(xí)在一對多的關(guān)聯(lián)關(guān)系中如果添加和刪除數(shù)據(jù)。先準(zhǔn)備一些測試數(shù)據(jù),代碼如下: DROP TABLE IF EXISTS student;DROP TABLE IF EXISTS class;-- 創(chuàng)建班級表CREATE TABLE class( cid int(4) NOT NULL PRIMARY KEY, cname varchar(30) ); -- 創(chuàng)建學(xué)生表CREATE TABLE student( sid int(8) NOT NULL PRIMARY KEY, sname varchar(30), classid int(8) NOT NULL);-- 為學(xué)生表添加外鍵約束ALTER TABLE student ADD CONSTRAINT fk_student_classid FOREIGN KEY(classid) REFERENCES class(cid); - 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 創(chuàng)建學(xué)生表和班級表
- 學(xué)生表中有一個(gè)classid字段,該字段的值參照于班級表的cid字段
- 為學(xué)生表添加外鍵
添加數(shù)據(jù)-- 向班級表插入數(shù)據(jù)INSERT INTO class(cid,cname)VALUES(1,'Java');INSERT INTO class(cid,cname)VALUES(2,'Python');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student(sid,sname,classid)VALUES(1,'tome',1);INSERT INTO student(sid,sname,classid)VALUES(2,'lucy',1);INSERT INTO student(sid,sname,classid)VALUES(3,'lili',2);INSERT INTO student(sid,sname,classid)VALUES(4,'domi',2);
先為班級表中插入數(shù)據(jù)在為學(xué)生表插入數(shù)據(jù)。 思考:為什么不先向?qū)W生表中插入數(shù)據(jù)再向班級表插入數(shù)據(jù)? 因?yàn)椋簩W(xué)生表中有的classid字段的值參照于班級表的cid字段。 所以:必須要先向班級表中插入數(shù)據(jù)。 查詢數(shù)據(jù)請查詢Java班的所有學(xué)生。 代碼如下: -- 先查詢出Java班的cid為1SELECT cid FROM class WHERE cname='Java';-- 再依據(jù)cid去查詢學(xué)生信息SELECT * FROM student WHERE classid=1; 把如上兩句代碼合寫,代碼如下: -- 查詢Java班的所有學(xué)生SELECT * FROM student WHERE classid=(SELECT cid FROM class WHERE cname='Java');
刪除數(shù)據(jù)請從班級表中刪除Java班級。在此,請注意:班級表和學(xué)生表之間存在關(guān)聯(lián)關(guān)系;要刪除Java班級,應(yīng)該先刪除學(xué)生表中與該班相關(guān)聯(lián)的學(xué)生。否則,假若先刪除Java班那么學(xué)生表中的cid就失去了關(guān)聯(lián)。代碼如下: -- 刪除Java班級DELETE FROM student WHERE classid=(SELECT cid FROM class WHERE cname='Java');DELETE FROM class WHERE cname='Java'; 附錄在此,附錄本節(jié)教程的源碼,如下所示: DROP TABLE IF EXISTS student;DROP TABLE IF EXISTS class;-- 創(chuàng)建學(xué)生表CREATE TABLE class( cid int(4) NOT NULL PRIMARY KEY, cname varchar(30) ); -- 創(chuàng)建班級表CREATE TABLE student( sid int(8) NOT NULL PRIMARY KEY, sname varchar(30), classid int(8) NOT NULL);-- 為學(xué)生表添加外鍵約束ALTER TABLE student ADD CONSTRAINT fk_student_classid FOREIGN KEY(classid) REFERENCES class(cid);-- 向班級表插入數(shù)據(jù)INSERT INTO class(cid,cname)VALUES(1,'Java');INSERT INTO class(cid,cname)VALUES(2,'Python');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student(sid,sname,classid)VALUES(1,'tome',1);INSERT INTO student(sid,sname,classid)VALUES(2,'lucy',1);INSERT INTO student(sid,sname,classid)VALUES(3,'lili',2);INSERT INTO student(sid,sname,classid)VALUES(4,'domi',2);-- 查詢Java班的所有學(xué)生SELECT * FROM student WHERE classid=(SELECT cid FROM class WHERE cname='Java');-- 刪除Java班級DELETE FROM student WHERE classid=(SELECT cid FROM class WHERE cname='Java');DELETE FROM class WHERE cname='Java';
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
|