九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
mysql[0x01]--基礎(chǔ)知識

mysql是一款很牛逼的關(guān)系型數(shù)據(jù)庫。

上大學(xué)時,導(dǎo)論老師教的是用SQL Server,開發(fā)老師教的是用MySQL,Oracle也在課程體系之內(nèi),自學(xué)用的是Redis和Mongodb,以上構(gòu)成了前段時間我對數(shù)據(jù)庫我接觸過的并且使用過然而也只是個crud boy的全部認(rèn)知。在沒聽過丁奇老師的《MySQL實戰(zhàn)45講》之前,我覺得MySQL CURD寫的6,然后事務(wù)啥的搞搞懂就還行吧??戳怂恼n后,受益良多,遂決定重新梳理下MySQL的知識點,這也堅定了我離開學(xué)校后,每個月花點錢投資在學(xué)習(xí)上的決心,付出就會有回報。

一、前期工作

1.1、MySQL和MariaDB的關(guān)系

兄弟關(guān)系,是這樣子的,收購sun公司的Oracle公司,財大氣粗,收購了MySQL。MySQL開源社區(qū)擔(dān)心有閉源的風(fēng)險,就另起爐灶,開了一個MySQL的分支,叫MariaDB(這個Maria起的好啊,MySQL的創(chuàng)始人女兒的名字)

1.2、安裝配置

參考我的GitHub開源筆記:https://github.com/ataola/ataolaSkillsStack/blob/master/ToolsUseage/Mysql/README.md

好啦,看到這里,你大致應(yīng)該是電腦上有個MySQL,別急先別跑起來,我們先坐下約定啊。

1.3、 我們的約定

關(guān)于MySQL的一些基本操作,規(guī)范一點,統(tǒng)一這里數(shù)據(jù)庫名小寫(都小寫的,你大寫也沒用),數(shù)據(jù)庫表名前面加個“t_”后面小寫,字段名首字母大寫,跟一個表名的首字母,然后數(shù)據(jù)庫語句基本組成大寫, 這樣子看上去整齊就比較美觀了。

1.4、注釋

寫法一:
# This is jiangtao Zheng Speaking!

寫法二:
--- This is Jiangtao Speaking!

二、關(guān)于建表刪表,如果你是cmder,那蠻重要的

2.1、創(chuàng)建數(shù)據(jù)庫的兩種方法

# 方法一:刪庫重建
DROP DATABASE IF EXISTS helloworld;
CREATE DATABASE helloworld;

# 方法二:有庫不重建,沒庫重建
CREATE DATABASE IF NOT EXISTS helloworld;

這里的話,我們通常寫方法二這句話就夠了,為什么要加樓上這句話呢?就說,我們可能會遇到這樣一種情況,我創(chuàng)建了一個數(shù)據(jù)庫,但是有沖突,我數(shù)據(jù)庫里面已經(jīng)有了一個這樣的數(shù)據(jù)庫了。所以你是不是要判斷一下, 如果有,刪它。這里有兩種寫法, 一種是 "DROP DATABASE IF EXISTS helloworld", 另一種是"CREATE DATABASE IF NOT EXISTS helloworld", 這里我更傾向于前者,因為你不能保證后者的表就跟我要創(chuàng)建的一致吧。

2.2、創(chuàng)建數(shù)據(jù)庫表的兩種方法

同樣的按照樓上2.1的思路,你應(yīng)該猜也能猜到了。

# 方法一: 刪表重建
USE helloworld;
DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user (
`Uid` INT PRIMARY KEY, --id
`Uname` VARCHAR(20) NOT NULL --姓名
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DESCRIBE `user`;

#方法二:有表不刪表, 沒表重建
USE helloworld;
CREATE TABLE IF NOT EXISTS t_user (
`Uid` INT PRIMARY KEY, --id
`Uname` VARCHAR(20) NOT NULL --姓名
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

三、A CRUD Boy

3.1、增(insert)

INSERT INTO t_user (`Uname`, `Uage`, `Uaddress`) VALUES('鄭江濤', '23', '浙江杭州');

"增 "需要注意的是主鍵是否需要自增,如果自增的話,那么就不需要寫上去了,這里我們可以考慮這樣兩種情況一種是部分插入、一種是完全插入。部分插入就是在符合表的約束前提下,我只插入表的一部分,剩下我不管,置空還是初始值你自己定義。完全插入看樓上例子。

3.2、刪(delete)

DELETE FROM t_user WHERE `Uname` = "鄭江濤";

3.3、改(update)

UPDATE t_user SET Uage = 23 WHERE Uname = "鄭江濤";

3.4、查(select)

查是比較頭疼的,查詢這里也分,條件查詢、連接查詢、嵌套查詢、關(guān)聯(lián)查詢、部分查詢和全部查詢等等。

# 全部查詢
SELECT * FROM t_user;

#條件查詢
--- 查詢年齡為22的選手
SELECT * FROM t_user WHERE `UAge` = 22;

#嵌套查詢
--- 查詢開發(fā)部工資小于10000的選手的姓名和地址 (IN)
SELECT DISTINCT `EName`, `EAddress` FROM t_employee WHERE `ESalary` < 10000 AND `Dno` IN (SELECT `Dno` FROM t_department WHERE `DName` = '開發(fā)部');

#連接查詢
--- 查詢開發(fā)部工資小于10000的選手的姓名和地址 (NATURAL JOIN)

SELECT DISTINCT `EName`, `EAddress` FROM t_employee NATURAL JOIN t_department WHERE `DName` = '開發(fā)部' AND `ESalary` < 10000;

# 部分查詢

SELECT `UName`, `UAge` FROM t_user;

這里只是列舉一些最基本的,深入地學(xué)習(xí)還需要大家靠平時去CRUD。

四、問題思考

4.1、 如何合理設(shè)計字段,例如電話號碼,給它設(shè)置數(shù)字好,還是字符串好?

字符串好,也沒聽說過電話號碼能夠拿來加減啊,所以還是字符串好,從這個方面考慮。

4.2、用SQL怎么建立主外鍵約束

-- 部門表(主表)
CREATE TABLE t_dept(
Did INT PRIMARY KEY,
Dname VARCHAR(20)
)

-- 修改員工表(副表/從表)
CREATE TABLE t_employee(
Eid INT PRIMARY KEY,
Ename VARCHAR(20),
Deptid INT,-- 把部門名稱改為部門ID
-- 聲明一個外鍵約束
CONSTRAINT employee_dept_fk FOREIGN KEY(Deptid) REFERENCES t_dept(Did)
--           外鍵名稱                 外鍵               參考表(參考字段)
)

4.3、關(guān)聯(lián)查詢(多表查詢)有哪些形式?

交叉連接查詢:不管三七二十一,查什么字段,需要什么表都給我寫上,效率不高,會有笛卡爾積的產(chǎn)生,運氣好會碰到數(shù)據(jù)重復(fù)。

SELECT Ename, Dname FROM t_employee, t_dept;

內(nèi)連接查詢:寫清楚那些表的字段存在關(guān)系,然后用等號 連起來,使用很平凡啊

SELECT Ename, Dname FROM t_employee, t_dept WHERE t_employee.Deptid = t_dept.Did;

內(nèi)連接還可以這樣寫

SELECT Ename, Dname FROM t_employee INNER JOIN t_dept ON t_employee.Deptid = t_dept.Did

有內(nèi)連接我們也很容易想到有外連接,所以接下來看下外連接

左[外]連接查詢:使用左邊表的數(shù)據(jù)去匹配右邊表的數(shù)據(jù),如果符合連接條件的結(jié)果則顯示,如果不符合連接條件則顯示null

SELECT d.DeptName, e.EName FROM t_dept d LEFT OUTER JOIN t_employee e ON d.Did = e.DeptId

右[外]連接查詢: 使用右邊表的數(shù)據(jù)去匹配左邊表的數(shù)據(jù),如果符合連接條件的結(jié)果則顯示,如果不符合連接條件則顯示null

SELECT d.DeptName, e.EName FROM t_dept d RIGHT OUTER JOIN t_employee e ON d.Did = e.DeptId
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【MySQL-SOURCE】mysql中用source命令導(dǎo)入sql文件
ORACLE關(guān)聯(lián)查詢
MySQL: MySQL約束(詳細(xì)、全)
自然連接,等值連接,內(nèi)連接的聯(lián)系與區(qū)別
Oracle多表連接與子查詢
oracle查詢/子查詢/復(fù)制表和數(shù)據(jù)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服