數(shù)據(jù)查詢語言(凡是帶有 select 關(guān)鍵字的都是查詢語句)
創(chuàng)新互聯(lián)公司是一家集成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站頁面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站設(shè)計(jì)公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。
select...
數(shù)據(jù)操作語言(凡是對(duì)表中的 數(shù)據(jù) 進(jìn)行增刪改的都是 DML)
insert 增 delete 刪 update 改
數(shù)據(jù)定義語言(凡是帶有 create、drop、alter 的都是 DDL)
主要操作的是 表的結(jié)構(gòu) ,不是表的數(shù)據(jù)
事務(wù)控制語言(包括:事務(wù)提交 commit、事務(wù)回滾 rollback)
數(shù)據(jù)控制語言(授權(quán) grant、撤銷權(quán)限 revoke)
select 字段 from 表名 where 條件;
in(具體值,具體值,......) 不是區(qū)間
一個(gè)輸入對(duì)應(yīng)一個(gè)輸出,和其對(duì)應(yīng)的是多行處理函數(shù)(多個(gè)輸入,對(duì)應(yīng)一個(gè)輸出)
輸入多行,最終輸出一行
如果你 沒有對(duì)數(shù)據(jù)進(jìn)行分組,整張表默認(rèn)為一組 。
在實(shí)際的應(yīng)用中,可能需要先進(jìn)行分組,然后對(duì)每一組的數(shù)據(jù)進(jìn)行操作
案例: 查詢每個(gè)員工所在部門的名稱,顯示員工名和部門名?
emp e 和 dept d 表進(jìn)行連接。條件是:e.deptno = d.deptno
SQL92語法:(結(jié)構(gòu)不夠清晰,表的連接條件和后期進(jìn)一步篩選的條件,都放到了 where 子句中)
SQL99語法:(表連接的條件是獨(dú)立的,連接之后,如果還需要進(jìn)一步篩選,再往后繼續(xù)添加 where 子句)
技巧: 把一張表看成兩張表
思考: 外連接的查詢結(jié)果條數(shù) = 內(nèi)連接的查詢結(jié)果條數(shù)
select 語句中 嵌套 select 語句,被嵌套的 select 語句稱為 子查詢。
將查詢結(jié)果集的一部分取出來。(通常使用在分頁查詢當(dāng)中)
將字符串 varchar 類型轉(zhuǎn)換成 date 類型
將日期轉(zhuǎn)換成字符串
可以獲取當(dāng)前系統(tǒng)的時(shí)間,并且獲取的時(shí)間是 datetime 類型的
注意:若沒有條件限制將會(huì)導(dǎo)致所有數(shù)據(jù)全部更新。
注意:若沒有條件,會(huì)刪除整張表的數(shù)據(jù)。
constraint
not null 約束的字段 不能為 NULL (只有列級(jí)約束)
unique 約束的字段 不能重復(fù) ,但是可以為 NULL
primary key
foreign key
transaction
實(shí)現(xiàn)原理 :縮小掃描的范圍(形成樹),避免全表掃描
Database Administrator 數(shù)據(jù)庫管理員
數(shù)據(jù)庫表的設(shè)計(jì)依據(jù)。教你怎么進(jìn)行數(shù)據(jù)庫表的設(shè)計(jì)。
免費(fèi)領(lǐng)取有關(guān)于java面試題材料和講解!
1.建立用戶信息表
create table userinfo(id int(4) not null primary key, name varchar(20) not null unique key)engine=innodb default charset=utf8;
2.建立好友關(guān)系表
create table friend(uid int(4) not null, foreign key(uid) references
userinfo(id),fid int(4) not null, foreign key(fid) references
userinfo(id),unique key(uid,fid))engine=innodb default charset=utf8;
3.追加測(cè)試數(shù)據(jù)(滿足uidfid條件)
insert userinfo values(1111---9999,'namea---namei’);
insert friend values(1111,4444---6666);
insert friend values(5555,6666---9999);
4.查詢好友(5555的好友)
select * from friend where uid=5555 or fid=5555;
+-------+------+
| uid | fid |
+-------+------+
| 1111 | 5555 |
| 5555 | 6666 |
| 5555 | 7777 |
| 5555 | 8888 |
| 5555 | 9999 |
+-------+--------+
5.問題:
5.1.userinfo中的id和name不為null,且不可重復(fù):table設(shè)計(jì)可以做到
5.2.friend中的uid和fid均不為null,且都來自于userinfo的id:table設(shè)計(jì)可以實(shí)現(xiàn)
5.3.(uid,fid)組合不可重復(fù):table設(shè)計(jì)可以完成
5.4.好友關(guān)系的表達(dá)時(shí),(1111,5555)和(5555,1111)有冗余,也會(huì)出現(xiàn)(1111,1111)這樣的數(shù)據(jù):這個(gè)在table設(shè)計(jì)實(shí)現(xiàn)比較麻煩,需要在程序?qū)用鎸?shí)現(xiàn),也即增加限制條件uidfid即可
6.結(jié)果:
table設(shè)計(jì)達(dá)不到要求,或者較難達(dá)到要求時(shí),可以在程序?qū)用嬗枰詮浹a(bǔ)。
1、打開Navicat for MySQL,找到要?jiǎng)?chuàng)建數(shù)據(jù)庫中數(shù)據(jù)表
2、接著我們?cè)凇氨怼鄙厦鎲螕羰髽?biāo)右鍵,然后點(diǎn)擊“新建表”
3、然后,右邊就會(huì)出現(xiàn)設(shè)計(jì)表的界面,這里可以設(shè)置表的字段名,類型,長(zhǎng)度以及是否為null等
4、設(shè)計(jì)完數(shù)據(jù)表之后,點(diǎn)擊“保存”按鈕就OK了。
5、我們?cè)谄渲休斎氡砻忘c(diǎn)擊確定就可以了,表名可以根據(jù)自己的需求來設(shè)置