mysql中pi是什么意思_MySQL 基础知识与常用命令
MySQL
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理。
MySQL在過去由于性能高、成本低、可靠性好,已經(jīng)成為最流行的開源數(shù)據(jù)庫,因此被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。
SQL(Structured Query Language)
事務(wù)的四個(gè)特性ACID
ACID,是指數(shù)據(jù)庫管理系統(tǒng)(DBMS)在寫入/更新資料的過程中,為保證事務(wù)(transaction)是正確可靠的,所必須具有的四個(gè)特性:原子性(atomicity,或稱不可分割性)、一致性(consistency)、隔離性(isolation,又稱獨(dú)立性)、持久性(durability)。
范式
常用(第一范式-->BC范式)
對指定列的結(jié)果集進(jìn)行排序。
SELECTcolumn_name, aggregate_function(column_name)FROMtable_nameWHEREcolumn_name operator valueGROUP BY column_name
聚合函數(shù)(Aggregate Functions)
Average: avg
Minimum: min
Maximum: max
Total: sum
Count: count
聚合函數(shù)會(huì)忽略空值。
DDL和DML
嵌套子查詢(Nested Subqueries)
in, all, exists, some, any (可以相互轉(zhuǎn)換)。
數(shù)據(jù)庫連接池是什么意思?
像打開關(guān)閉數(shù)據(jù)庫連接這種和數(shù)據(jù)庫的交互可能是很費(fèi)時(shí)的,尤其是當(dāng)客戶端數(shù)量增加的時(shí)候,會(huì)消耗大量的資源,成本是非常高的。可以在應(yīng)用服務(wù)器啟動(dòng)的時(shí)候建立很多個(gè)數(shù)據(jù)庫連接并維護(hù)在一個(gè)池中。連接請求由池中的連接提供。在連接使用完畢以后,把連接歸還到池中,以用于滿足將來更多的請求。
MySQL
mysql 使用的數(shù)據(jù)類型分為三類: 數(shù)值類型,日期和時(shí)間類型,字符類型。
Software
installation (on raspbian as an example)
sudo apt-get install mysql-server
login with password prompt
mysql -u root -p
show database; # list databases
use db-name; # use a database
show tables; # list table for current database being used
Basic CRUD
CREATE DATABASE demo; # create a database named demo;
# 創(chuàng)建一個(gè)表tutorials_tbl
CREATE TABLE demo.tutorials_tbl(
tutorial_id INT NOT NULL AUTO_INCREMENT,
tutorial_title VARCHAR(100) NOT NULL,
tutorial_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( tutorial_id )
);
# 查詢
SELECT tutorial_id, tutorial_title, tutorial_author FROM tutorials_tbl;
# 更新
UPDATE tutorials_tbl SET tutorial_title="Learning JAVA" WHERE tutorial_id=3;
# 刪除
DELETE FROM tutorials_tbl WHERE tutorial_id=3;
# 刪除表
DELETE FROM tutorials_tbl;
DROP TABLE tutorials_tbl; # drop表
DROP DATABASE demo; # drop數(shù)據(jù)庫demo
例子
在 db_SPJ 中創(chuàng)建以下四個(gè)關(guān)系(表)
供應(yīng)商表 S(SNO,SNAME,STATUS,CITY)
零件表P(PNO,PNAME,COLOR,WEIGHT)
工程項(xiàng)目表 J(JNO,JNAME,CITY)
供應(yīng)情況表 SPJ(SNO,PNO,JNO,QTY)
? 每一張表都必須有主鍵。
? 需要使用外鍵的表必須使用外鍵。
? 根據(jù)需要適當(dāng)采用唯一值、檢查、非空和默認(rèn)值約束。要求這四種約束在 S、P 和 J 表這三張表中至少使用一次。
? 根據(jù)主鍵、外鍵、唯一值、檢查、非空和默認(rèn)值六種約束的特性,設(shè)計(jì)適 當(dāng)?shù)姆桨笇?S、P 和 J 表中的這六種約束進(jìn)行檢驗(yàn)。方案自定。一種約束進(jìn)行檢驗(yàn)一次即可
使用 `SHOW CREATE DATABASE db_SPJ;`來查看更多信息(類似地,可以用它來查看創(chuàng)建表的信息)
DDL:
1 USEdb_SPJ;2
3 CREATE TABLE S(SNO char(10) ,SNAME char(10) not null,STATUS int check(STATUS >0),CITY char(30) not null, primary key(SNO)) ;4 CREATE TABLE P(PNO char(10) UNIQUE,PNAME char(20) not null,COLOR char(10) default '白',WEIGHT int CHECK(WEIGHT >0), primary key(PNO));5 CREATE TABLE J(JNO char(10) UNIQUE,JNAME char(20) not null,CITY char(30) not null, primary key(JNO));6 CREATE TABLE SPJ(SNO char(10),PNO char(10),JNO char(10),QTY int, primary key(SNO,PNO,JNO));7 ALTER TABLE SPJ ADD CONSTRAINT FK_SNO foreign key(SNO) references S(SNO) ON DELETE CASCADE;8 ALTER TABLE SPJ ADD CONSTRAINT FK_PNO foreign key(PNO) references P(PNO) ON DELETE CASCADE;9 ALTER TABLE SPJ ADD CONSTRAINT FK_JNO foreign key(JNO) references J(JNO) ON DELETE CASCADE;
View Code
插入記錄:
1 INSERT INTO S VALUES
2 ('S1','精益',20,'天津'),3 ('S2','盛錫',10,'北京'),4 ('S3','東方紅',30,'北京'),5 ('S4','豐泰',20,'天津'),6 ('S5','為民',30,'上海');7
8 INSERT INTO P VALUES
9 ('P1','螺母','紅',12),10 ('P2','螺栓','綠',17),11 ('P3','螺絲刀','藍(lán)',14),12 ('P4','螺絲刀','紅',14),13 ('P5','凸輪','藍(lán)',40),14 ('P6','齒輪','紅',30);15
16 INSERT INTO J VALUES
17 ('J1','三建','北京'),18 ('J2','一汽','長春'),19 ('J3','彈簧廠','天津'),20 ('J4','造船廠','天津'),21 ('J5','機(jī)車廠','唐山'),22 ('J6','無線電廠','常州'),23 ('J7','半導(dǎo)體廠','南京');24
25 INSERT INTO SPJ VALUES
26 ('S1','P1','J1',200),27 ('S1','P1','J3',100),28 ('S1','P1','J4',700),29 ('S1','P2','J2',100),30 ('S2','P3','J1',400),31 ('S2','P3','J2',200),32 ('S2','P3','J4',500),33 ('S2','P3','J5',400),34 ('S2','P5','J1',400),35 ('S2','P5','J2',100),36 ('S3','P1','J1',200),37 ('S3','P3','J1',100),38 ('S4','P5','J1',100),39 ('S4','P6','J1',100),40 ('S4','P6','J4',100),41 ('S5','P2','J4',100),42 ('S5','P3','J1',200),43 ('S5','P6','J2',200),44 ('S5','P6','J4',500);
View Code
實(shí)現(xiàn)以下查詢(Transact-SQL):
[1] 找出所有供應(yīng)商的姓名和所在城市。
[2] 找出所有零件的名稱、顏色和重量。
[3] 找出使用了供應(yīng)商 S1 所供應(yīng)的零件的工程號(hào)碼。
[4] 找出工程 J2 使用的各種零件的名稱和數(shù)量。
[5] 找出上海供應(yīng)商供應(yīng)的所有零件的零件號(hào)碼。
[6] 找出使用了上海供應(yīng)商供應(yīng)的零件的工程名稱。
[7] 找出供應(yīng)工程 J1 零件的供應(yīng)商號(hào) SNO。
[8] 找出供應(yīng)工程 J1 零件 P1 的供應(yīng)商號(hào) SNO。
[9] 找出供應(yīng)工程 J1 紅色零件的供應(yīng)商號(hào) SNO。
[10] 找出沒有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào) JNO。
[11] 求所有有關(guān) project 的信息。
[12] 求在北京的所有 project 的信息。
[13] 求為 project(工程)J1 提供 part(零件)的 supplier(供應(yīng)商)的號(hào) 碼。
[14] 求數(shù)量在 300 到 750 之間的發(fā)貨。
[15] 求所有的零件顏色 / 城市對。注意:這里及以后所說的“所有”特指 在數(shù)據(jù)庫中。 [16] 求所有的 supplier-number / part-number / project-number 對。其中所 指的供應(yīng)商和工程在同一個(gè)城市。
[17] 求所有的 supplier-number / part-number / project-number 對。其中所 指的供應(yīng)商和工程不在同一個(gè)城市。
[18] 求由北京供應(yīng)商提供的零件的信息。
[19] 求由北京供應(yīng)商為北京工程供應(yīng)的零件號(hào)。
[20] 求滿足下面要求的城市對,要求在第一個(gè)城市的供應(yīng)商為第二個(gè)城 市的工程供應(yīng)零件。
[21] 求供應(yīng)商為工程供應(yīng)的零件的號(hào)碼,要求供應(yīng)商和工程在同一城市。
[22] 求至少被一個(gè)不在同一城市的供應(yīng)商供應(yīng)零件的工程號(hào)。
[23] 求由同一個(gè)供應(yīng)商供應(yīng)的零件號(hào)的對。
[24] 求所有由供應(yīng)商 S1 供應(yīng)的工程號(hào)。
[25] 求供應(yīng)商 S1 供應(yīng)的零件 P1 的總量。
[26] 對每個(gè)供應(yīng)給工程的零件,求零件號(hào)、工程號(hào)和相應(yīng)的總量。
[27] 求為單個(gè)工程供應(yīng)的零件數(shù)量超過 350 的零件號(hào)。
[28] 求由 S1 供應(yīng)的工程名稱。
[29] 求由 S1 供應(yīng)的零件顏色。
[30] 求供應(yīng)給北京工程的零件號(hào)。
[31] 求使用了 S1 供應(yīng)的零件的工程號(hào)。
[32] 求 status 比 S1 低的供應(yīng)商號(hào)碼。
[33] 求所在城市按字母排序?yàn)榈谝坏墓こ烫?hào)。
[34] 求被供應(yīng)零件P1 的平均數(shù)量大于供應(yīng)給工程J1 的任意零件的最大 數(shù)量的工程號(hào)。 [35] 求滿足下面要求的供應(yīng)商號(hào)碼,該供應(yīng)商供應(yīng)給某個(gè)工程零件 P1 的 數(shù)量大于這個(gè)工程被供應(yīng)的零件 P1 的平均數(shù)量。
[36] 求沒有被北京供應(yīng)商供應(yīng)過紅色零件的工程號(hào)碼。
[37] 求所用零件全被 S1 供應(yīng)的工程號(hào)碼。
[38] 求所有北京工程都使用的零件號(hào)碼。
[39] 求對所有工程都提供了同一零件的供應(yīng)商號(hào)碼。
[40] 求使用了 S1 提供的所有零件的工程號(hào)碼。
[41] 求至少有一個(gè)供應(yīng)商、零件或工程所在的城市。
[42] 求被北京供應(yīng)商供應(yīng)或被北京工程使用的零件號(hào)碼。
[43] 求所有 supplier-number / part-number 對,其中指定的供應(yīng)商不供應(yīng) 指定的零件。
[44] 向 p 表追加如下記錄(P0,PN0,藍(lán))。
[45] 把零件重量在 15 到 20 之間的零件信息追加到新的表 p1 中。
[46] 向 s 表追加記錄(s1, n2, ’上海’)能成功嗎?為什么?
[47] 把 s、p、j 三個(gè)表中的 s#,p#,j#列進(jìn)行交叉聯(lián)接,把結(jié)果追加到 spj1 表中(如果只考慮下面表格中的原始數(shù)據(jù),應(yīng)該在 spj1 表中追加多 少條記錄?你是如何計(jì)算記錄條數(shù)的?)。
[48] 向 spj 表追加(s6,p1,j6,1000)本操作能正確執(zhí)行嗎?為什么?如果 追加(s4,p1,j6,-10) 行嗎?如果現(xiàn)在想強(qiáng)制追加這兩條記錄該怎么
辦?
[49] 把 s1 供應(yīng)商供應(yīng)的零件為 p1 的所有項(xiàng)目對應(yīng)的數(shù)量 qty改為 500。
[50] 把 qty值大于等于 1000 的所有供應(yīng)商城市更改為‘北京’ 。
[51] 把 j1 更改成 j7,本操作能正確執(zhí)行嗎?為什么?如果改成 j0 呢?spj 表中記錄有何變化?為什么?
[52] 把零件重量低于 15 的增加 3,高于 15 的增加 2。
[53] 刪除為 j7 工程供應(yīng)零件的所有供應(yīng)商信息(如果建立外鍵時(shí)沒有帶 級(jí)聯(lián)刪除選項(xiàng),本操作能正確執(zhí)行嗎?為什么?)
[54] 刪除 p1 表中所有記錄。
[55] 刪除供應(yīng)商和工程在同一個(gè)城市的供應(yīng)商信息。
# DML on spj database
USEdb_spj;
#[1]
SELECT sname,city FROMs;
#[2]
SELECT pname,color,weight FROMp;
#[3]
SELECT jno FROMspjWHERE sno = 'S1';
#[4]
SELECT p.pname, spj.qty FROMspjLEFT JOIN p ON (spj.pno =p.pno)WHERE spj.jno = 'J2';
#[5]
SELECT DISTINCT spj.pno FROMspjWHERE spj.sno IN (SELECT sno FROM s WHERE s.city='上海');
#[6]nested querySELECT DISTINCT j.jname FROMjRIGHT JOIN spj ON(j.jnoin (SELECT jno FROM spj WHERE spj.sno IN (SELECT sno FROM s WHERE s.city='上海')));
#[7]
SELECT DISTINCT sno FROMspjWHERE spj.jno='J1';
#[8]
SELECT sno FROMspjWHERE jno='J1' AND pno='P1';
#[9]
SELECT DISTINCT sno FROMpINNER JOIN spj ON p.pno=spj.pnoWHERE p.color='紅';
#[10]
SELECT DISTINCT spj.jno FROMspjWHERE spj.sno NOT IN (SELECT sno FROM s WHERE s.city='天津')OR spj.pno NOT IN (SELECT pno FROM p WHERE p.color='紅');
#[11]
SELECT SPJ.JNO,JNAME,CITY,SNO,PNO,QTY FROMJinner join SPJ on J.JNO=SPJ.JNOORDER BYSPJ.JNO;
#[12]
SELECT SPJ.JNO,JNAME,CITY,SNO,PNO,QTY FROMJinner join SPJ on J.JNO=SPJ.JNO WHERE CITY='北京'
ORDER BYSPJ.JNO;
#[13]
SELECT sno FROMspjWHERE spj.jno = 'j1';
#[14]
SELECT SNO,PNO,JNO FROM SPJ WHERE QTY BETWEEN 300 AND 750;
#[15]
SELECT DISTINCTp.color, s.cityFROM (p INNER JOIN spj ON p.pno=spj.pno)INNER JOIN s ON s.sno =spj.snoORDER BY color ASC;
#[16]
select distinct spj.sno,spj.jno,spj.pno froms,spjright join j on spj.jno=j.jnowhere s.sno=spj.sno and s.city=j.city;
#[17]
select distinct spj.sno,spj.jno,spj.pno froms,spjright join j on spj.jno=j.jnowhere s.sno=spj.sno and s.city!=j.city;
#[18]
select * frompwhere p.pno in(select spj.pno from spj where spj.sno in(select s.sno from s where s.city='北京')
);
#[19]
select distinct spj.pno froms,spjright join j on spj.jno=j.jnowhere s.sno=spj.sno and s.city='北京' and s.city=j.city;
#[20]
select distinct s.city, j.city froms,spjright join j on spj.jno=j.jnowhere s.sno=spj.sno;
#[55]
DELETE FROM S WHERES.SNOIN (SELECT SPJ.SNO FROM (SPJ INNER JOIN S ON SPJ.SNO=S.SNO) INNER JOIN J ON SPJ.JNO=J.JNOWHERE S.CITY=J.CITY) ;
View Code
Reference
http://blog.webfsd.com/article-7.html
總結(jié)
以上是生活随笔為你收集整理的mysql中pi是什么意思_MySQL 基础知识与常用命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (分治法)归并排序
- 下一篇: java ssm框架登录代码,求一个SS