前端常見(jiàn)mysql知識(shí)點(diǎn)精解1

圖片發(fā)自簡(jiǎn)書App


客戶端連接到mySQl? 服務(wù)器

c/xampp/mysql/bin/my sql.exe? ? ? shell? 命令解讀器? ?

mysql.exe? h127.0.0.1 –uroot? -p(密碼) -P3306? (端口號(hào))

命令 show databases;? 所有命令必須要以分號(hào)結(jié)束? ? 表示顯示數(shù)據(jù)庫(kù)中當(dāng)前已有的所有數(shù)據(jù)? ? 斷開(kāi)命令 quit;?

用戶名錯(cuò)誤可以登錄? 但不能操作? ? access訪問(wèn)? ? ? ? 分號(hào)是連接服務(wù)器之后命令?

Win下.exe? 可以省略掉? ? ? 端口號(hào)默認(rèn)3306? ? 沒(méi)密碼可以不寫-p? ? 不寫用戶名? ?

最簡(jiǎn)形式? mysql? –uroot? 登錄服務(wù)器時(shí)用,

Mysql服務(wù)器中數(shù)據(jù)的邏輯結(jié)構(gòu)? ? ? ?

一個(gè)大服務(wù)器有多個(gè)數(shù)據(jù)庫(kù)? ? 在一個(gè)服務(wù)器上可能包含多個(gè)database(庫(kù))包含多個(gè)表(table)row(行)column(列)

Server=>Database=> TABLE=>ROW=>COLUMN?

(1) 連到數(shù)據(jù)庫(kù)服務(wù)器上

(2) 查看,新建,丟棄數(shù)據(jù)庫(kù)

(3) 進(jìn)入某個(gè)數(shù)據(jù)庫(kù)查看,新建,丟棄數(shù)據(jù)表

(4) 向表中添加一行數(shù)據(jù)?

Show databases? 顯示已有數(shù)據(jù)? ? ? ? quit退出連接? ? ?

進(jìn)入庫(kù)? use 數(shù)據(jù)庫(kù)名;開(kāi)始進(jìn)入/使用指定數(shù)據(jù)庫(kù)? ? show tables 顯示所有表?

Mysql? 20? ? ? ? use和quit可以不寫;分號(hào)? ?

查看表頭:? desc(ribe)表名? 描述指定表中有哪些列? ?

SQL語(yǔ)句? ? ? structed query language? 結(jié)構(gòu)化查詢語(yǔ)言? ? ? 70年代IBM提供? 提供給ISO? ? 國(guó)際標(biāo)準(zhǔn)化組織 ,成為數(shù)據(jù)庫(kù)行業(yè)的標(biāo)準(zhǔn)語(yǔ)言? ? SQL語(yǔ)言兩種運(yùn)行方式:1.交互式執(zhí)行:輸入一行語(yǔ)句,執(zhí)行一句……. 適用于臨時(shí)性查看數(shù)據(jù)

2.腳本式執(zhí)行,把要執(zhí)行的多條命令編寫在文本文件中,一次性的全部提交給服務(wù)器執(zhí)行,適合批量增刪改數(shù)據(jù)?

路徑不能有中文空格? ?

Mysql –uroot? <導(dǎo)入+路徑? 全路徑? ? ? 必須在windows下執(zhí)行? ? ? ? mysql –uroot 只適合于更刪改數(shù)據(jù)? 不適用于查看? ,? 分號(hào)要用英文!?

SQL語(yǔ)言不區(qū)分大小寫? SQl關(guān)鍵字純大寫? 非關(guān)鍵字用純小寫? ?

一條語(yǔ)句可以編寫在多條中 但最后必須有英文分號(hào)? 代碼前加#表示注釋服務(wù)器不予執(zhí)行,取消注釋執(zhí)行,/*多行注釋*/? 期間內(nèi)容都不執(zhí)行

新建一個(gè)數(shù)據(jù)庫(kù)? create database 數(shù)據(jù)庫(kù)名字;表示創(chuàng)建一個(gè)新的是數(shù)據(jù)庫(kù)?

丟棄數(shù)據(jù)庫(kù)drop? ? database IF EXIST數(shù)據(jù)庫(kù)名? ? ? exit退出? exist存在

Creat table? 創(chuàng)建表? #? ? user:編號(hào)ID? ? username? score積分? is_online或isOnline? ? ? 表,列? 列和列之間用逗號(hào)分隔? ? ? create table表名(列名,。。。。。)

CREATE TABLE user(

uID INT,列后加空格? ? 用戶編碼都是數(shù)字?

uname VARCHAR(9), VARIABLE CHARTER可變長(zhǎng)度字符串? 括號(hào)內(nèi)表示字符數(shù)小于9,不到9也行?

score INT,

isOnline Varchar); 指定某一列必須指定其數(shù)據(jù)類型

#丟棄執(zhí)行數(shù)據(jù)庫(kù)如果在的化

DROP DATABASE IF EXISTS jdmall ;

#創(chuàng)建數(shù)據(jù)庫(kù)

CREATE DATABASE jdmall ;

#進(jìn)入指定數(shù)據(jù)庫(kù)

USE jdmall;

#創(chuàng)建信息表

CREATE TABLE user(

? uid INT,? ? ? ? ? ? #用戶標(biāo)號(hào)都是“數(shù)字”

? uname VARCHAR(9),? #用戶名可變長(zhǎng)度的字符串

? score INT,? ? ? ? ? #積分都是數(shù)字

? isOnline VARCHAR(1) #

);? ? ? ?

INSERT into 表名? values(值,值,)向指定表中插入一行數(shù)據(jù)?

INSERT INTO user? values(‘TOM ‘,’100 ‘,’ y‘);

SELECT * from? 查看? form表單? *號(hào)左右要有空格?

不要在腳本模式下查詢語(yǔ)句? ? ? ? DELETE FROM? USER刪除所有行?

Delete from 表名where滿足條件? ;? delete form where uid‘20’?

Update表名set設(shè)置 列=值,列=值…;更新所有行? ?

Update 表名 where條件 ;

修改滿足條件的數(shù)據(jù)行? ? update user where uname=’tom’?

關(guān)閉數(shù)據(jù)庫(kù),網(wǎng)頁(yè)只有進(jìn)度條無(wú)商品

Mysql給網(wǎng)頁(yè)提供數(shù)據(jù)?

網(wǎng)狀? 樹(shù)形 關(guān)系? 非關(guān)系?

Mysql? 服務(wù)器? 存儲(chǔ)管理數(shù)據(jù)? 每一個(gè)數(shù)據(jù)庫(kù)即為文件夾? ? 客戶端:向服務(wù)器發(fā)送命令? 包括增刪改查? ?

邏輯結(jié)構(gòu)

? Drop table if exists 表名? 丟棄表? delete from? 刪除表內(nèi)容? 表頭存在? ?

Selece * from 表名? ?

如何獲取剛剛執(zhí)行insert 產(chǎn)生的編號(hào)#獲取insert 產(chǎn)生的編號(hào)

$uid=mysqli_insert_id($conn);

echo$uid;只用于inser之后?

圖片本質(zhì)是路徑?

數(shù)據(jù)庫(kù)中的亂碼問(wèn)題? ----了解行業(yè)知識(shí)? 1.中文亂碼問(wèn)題

計(jì)算機(jī)如何保存字符? encode編碼AABbCc=>656566986799? ? 數(shù)字-----字符串的過(guò)程叫解碼decode? ? ?

常用的字符編碼方案? :

(1)ASCII美國(guó)電報(bào)電信交換碼? ? 對(duì)英語(yǔ)中常用的字符及標(biāo)點(diǎn)符號(hào)都進(jìn)行編碼?

共128個(gè)? ?

(2)GB2312? 中國(guó)編碼? ? 國(guó)標(biāo)擴(kuò)展? ? 30000多字符? ? ? 對(duì)中國(guó)大陸常用的簡(jiǎn)體字符及標(biāo)點(diǎn)符號(hào)進(jìn)行編碼? ?

(3)BIG5 碼? ? ? 20000+? 繁體漢子和標(biāo)點(diǎn)進(jìn)行編碼? ? 臺(tái)灣編碼?

(4)? ? latin1? 256個(gè)? ? 西歐? 能兼容ASCII?

亂碼產(chǎn)生根源? 字符串編碼和解碼時(shí)所用的方案不同? ?

(5)UBicode? 字符集? 6萬(wàn)+? 對(duì)世界上主流語(yǔ)言字符進(jìn)行了編碼?

不兼容任何國(guó)家編號(hào)? 只兼容ASCII碼? ? 在存儲(chǔ)時(shí) 轉(zhuǎn)換格式如UTF-8用的最多? ,UTF-16,UTF-32等? 網(wǎng)頁(yè)文件夾名及網(wǎng)名都不能有中文? ? x.SQL 第一處保證文件是utf-8? 文件另存為? ?

?文件開(kāi)頭

設(shè)置客戶端連接服務(wù)器并傳輸sql語(yǔ)句所用的字符編碼?

SET NAMES UTF8;?

數(shù)據(jù)庫(kù)服務(wù)器中? ?

3.create database jdmall charset=utf8;? ?

必須要三處統(tǒng)一? ?

2.MYSQL中的列類型?

CREATE TABLE表名(列名)

提供了比其他數(shù)據(jù)庫(kù)更豐富列類型?

具體可以參考‘使用手冊(cè)’? ?

列類型? ? 三大類:1.數(shù)值類型? : INT整數(shù)4字節(jié)32bit位-2147483648----2147483647

? SAMLLINT:小整數(shù)-32768---32767? TINYINT微整數(shù) (-128-127)?

BIGINT? 大整數(shù) 一個(gè)bit存8位? 兩個(gè)字節(jié)? ? 922億? ? ? ? ?

2.日期時(shí)間類型

3.字符串類型? ? ?

關(guān)于二進(jìn)制的存儲(chǔ)問(wèn)題:比特位? bit位? 只能存儲(chǔ)1個(gè)0或1? ? byte字節(jié)=8個(gè)bit位? 最小-128 最大127? ? 叫微整數(shù)? ? ? 11111111? ?

MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型。這些類型包括嚴(yán)格數(shù)值數(shù)據(jù)類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數(shù)值數(shù)據(jù)類型(FLOAT、REAL和DOUBLE PRECISION)。關(guān)鍵字INT是INTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞。

BIT數(shù)據(jù)類型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作為SQL標(biāo)準(zhǔn)的擴(kuò)展,MySQL也支持整數(shù)類型TINYINT、MEDIUMINT和BIGINT。下面的表顯示了需要的每個(gè)整數(shù)類型的存儲(chǔ)和范圍。

浮點(diǎn)小數(shù)概念: 1234.5678=123.45678*10^1=123.45678E1

12345.678*10^1=123.454678E-1? ? 小數(shù)點(diǎn)左右移動(dòng)數(shù)值大小相等? 所有小數(shù)均在計(jì)算機(jī)中用浮點(diǎn)小數(shù)表示? 即科學(xué)計(jì)數(shù)法,占用4個(gè)字節(jié)

非整數(shù) 小數(shù)類型? FLOAT單精度浮點(diǎn)小數(shù) 只要浮動(dòng)就會(huì)導(dǎo)致四舍五入精度丟失

DOUBLE雙精度浮點(diǎn)小數(shù)? 1個(gè)字節(jié) 占8個(gè)字節(jié)? ? 一部分做指數(shù)位 精度為遠(yuǎn)少于int? 表示范圍遠(yuǎn)大于INT? ?

DECIMAL(M,D)m表示精度丟失文體? dcimal(7,2)

M表示總位數(shù) ,d表示有效位數(shù)?

699.5? decimal? (4,1)? 精確存儲(chǔ)? ?

Bool類型布爾類型? 真 TRUE? ,假 FALSE? 系統(tǒng)關(guān)鍵字不可以加引號(hào)

提示 mysql中無(wú)真正布爾類型? true 存儲(chǔ)為1? ? FALSE 存儲(chǔ)為2? ?

日期事件類型

DATE 日期 員工生日? ‘1998-5-6’ 日期必須加引號(hào)

TIME時(shí)間類型 ,保存學(xué)生上課開(kāi)始時(shí)間 ’8:0:0‘

DATETIME日期時(shí)間類型 記錄會(huì)議 ‘2018-3-15 05:32:05’

!!!!加引號(hào)

字符串:

Varchar:變長(zhǎng)字符串? 數(shù)據(jù)必須用引號(hào)? ? 適用于長(zhǎng)度差距很大的數(shù)據(jù)? ? 如員工簡(jiǎn)歷? m小于65535

Char:定長(zhǎng)字符串? char(m)不能超過(guò)255

Text(m):大型變長(zhǎng)字符串 <=2G? 近似20億? ?

‘a(chǎn)‘? char(4) a\0\0\0? ? ? ? ? varchar(4)? a\0? varchar補(bǔ)位僅僅補(bǔ)1位? 超出位數(shù)被刪除? 適用于長(zhǎng)度相當(dāng)?shù)淖址?書籍號(hào)?

定長(zhǎng)字符串浪費(fèi)空間空間? 變長(zhǎng)節(jié)省空間? ? ?

保存姓名 char(4)\0\0? char存取速度快 ,但空間浪費(fèi),

varchar存取速度慢與char?

mysql中的列約束

create table 表名(列名,列類型 列約束)

constraint 約束? 插入時(shí)必須要滿足一定條件 否則不予保存? ? 如員工編號(hào)不能重復(fù)? 性別只能取之于男或女? 工資為正?

SQL標(biāo)準(zhǔn)里定義了如下6種約束? :

1.唯一約束? 聲明了唯一列不能出現(xiàn)重復(fù)值否則插入失敗? UNIQUE? ? EID INT UNIQUE; 編號(hào)唯一列約束? ?

2.非空約束? ? ? ? 計(jì)算機(jī)中空的含義 NULL表示應(yīng)該有XX數(shù)據(jù)但沒(méi)有確定的值? 列如: 員工年終獎(jiǎng)? NULL? 類似的(還沒(méi)到期),還沒(méi)確定人選的部門經(jīng)理? ? 還沒(méi)確定進(jìn)入哪個(gè)部門的部門員工為null? ? 姓名這一行不能加null? 非空約束? -----NOT NULL? 出現(xiàn)null插入失敗?

3.別名

約束 PRIMARY KEY 聲明為主鍵的列上不能有重復(fù)和空值? 按照主鍵列的值進(jìn)行排序? 為了提高查找效率

一表中最多一個(gè)主鍵約束?

4.默認(rèn)值約束

SALARY DECIMAL(6,2) DEFAULT 5000在 insert? into emp (‘’fault‘)

5.檢查約束 ————CHECK 檢驗(yàn)數(shù)據(jù)有效范圍 salary decimal(8,2)? AGE? INT CHECK(AGE>18and AGE<=60);

可以為負(fù)數(shù)? MYSQL 不支持?

6外鍵約束 :

1小知識(shí)項(xiàng)目中如何存儲(chǔ)時(shí)間? ?

(1) varchar? ‘2015-03-15’不足:不會(huì)自動(dòng)補(bǔ)0,不便于比較大小

(2) 使用date/datetime? 會(huì)自動(dòng)補(bǔ)0 便于比較大小?

不足 i18n =internationalization 國(guó)際化? ? 一個(gè)實(shí)現(xiàn)國(guó)際化的應(yīng)用針對(duì)不同語(yǔ)言風(fēng)俗習(xí)慣的用戶呈現(xiàn)不同內(nèi)容

使用bigint來(lái)存儲(chǔ)

計(jì)算機(jī)如何存儲(chǔ)日期時(shí)間:表示距離計(jì)算機(jī)元年經(jīng)過(guò)了多少毫秒? 1970-1-1? 0:0?

(3

使用bigint來(lái)存儲(chǔ)? 便于實(shí)現(xiàn)國(guó)家化? ?使用后面語(yǔ)言很容易實(shí)現(xiàn)? 下載時(shí)間按151123456789

小知識(shí): MYSQL專用? ? auto_increment? 自動(dòng)增長(zhǎng)? 可以為整形的主鍵列aUTO_INCREMENT? 關(guān)鍵字 ,實(shí)現(xiàn)增長(zhǎng)

必須用在INT/? uid? int primary key Autoincrement? 自增列允許手工賦值? 在已有最大值基礎(chǔ)+1?

6.外鍵約束 : 一個(gè)表里的內(nèi)容要參考另一個(gè)表的內(nèi)容?

聲明了外鍵約束列上可以出現(xiàn)重復(fù)值也可以出現(xiàn)null值,每插入一個(gè)值都要參考另外一表的主 foreign key (deptid)references dept(did) ;? ? 只要表中出現(xiàn)外鍵列 所有insert/update 語(yǔ)句操作 都要檢查被參考的表? ,影響插入和修改的效率? ? 項(xiàng)目組主鍵約束必須有

簡(jiǎn)單查詢: SELECT? ? SQL?

1.查詢特定的列 SELECT ename,eid FROM emp;

查詢所有部門名稱及其所在地 SELECT dname,acation from emp;

姓名,生日,工資 SELECT ename,birthday,salary FROM emp;

所在部門編號(hào),性別,性別,姓名SELECT deptId,sex,sex,ename FROM emp;

查詢員工編號(hào),姓名,生日,工資,性別,所在部門編號(hào);

*只能按照原始順序輸出? ? 指代所有的列?

select *FROM? emp where ename=‘KING'

查詢所有員工的編號(hào)和姓名? ? 要求列名用中文顯示 select eid AS 編號(hào),ename AS 姓名;

姓名 工資 和所在部門? ? SELECT ename AS 姓名,salary AS 工資,deptId AS 部門編號(hào) FROM emp;

要求列名用每個(gè)列名都用一個(gè)英文字符顯示

SELECT ename AS E,salary AS S,deptId AS D FROM dep;

as關(guān)鍵字可以省略?

只顯示不同的值? ? 查詢出有員工的部門的編號(hào)?

相同值只顯示一次? SELECT? DISTINCT? depId FROM emp;

查出那些性別的員工? SELECT? DISTINCT? sex FROM emp;

7.查詢時(shí)執(zhí)行計(jì)算:? 計(jì)算一個(gè)算式的結(jié)果? (1+2)*3/4

SELECT (1+2)*3/4;?

查詢出員工姓名 月薪 加年薪?

SELECT ename 姓名,salary+500 月薪,salary*12+20000 年薪 from emp;

SELECT ename 姓名,((salary+500)*12+20000)/12 平均工資 from emp;? ?

扣0.2的個(gè)稅? ? 請(qǐng)計(jì)算每人實(shí)際到手

SELECT ename 姓名,salary*0.8 到手工資 from emp;

7.簡(jiǎn)單查詢? :?jiǎn)我粭l件查詢? 查詢出編號(hào)為7788的員工所有信息? SELECT * from emp? where eId=7788;? 此處可以用? sql中比較運(yùn)算符<,>,= ,!=不等于?

SELECT * from dname? where deptId=20;

TOM工資和生日 SELECT salary 工資,birthday 生日 SELECT salary 工資,birthday 生日f(shuō)rom emp? where ename=TOM;

SELECT * FROM emp where salary >6000;

SELECT ename 姓名,birthday 生日 FROM emp WHERE SEX=0;

SELECT ename 姓名 FROM emp WHERE deptId=20;

SELECT * FROM emp WHERE deptId !=20;

注意? 計(jì)算機(jī)null代表具有不確定的意思? 不與任何值相等或不等? ? 做運(yùn)算查不到數(shù)據(jù)? 不能使用等于或者不等于運(yùn)算? ? 用is NULL? ? IS NOT NULL 不能簡(jiǎn)寫?

8.多條件查詢? 多條件并列出現(xiàn)時(shí)需要使用and,or之一?

SELECT * FROM emp WHERE sex=0 AND deptId=10;

練習(xí)? 工資小于6000 男

SELECT * FROM emp WHERE sex=1 AND salary <6000;

生日晚于1990-1-1的·20號(hào)部門員工

SELECT * FROM emp WHERE birthday>'1990-1-1 'AND deptId=20;

10和30所有?

SELECT * FROM emp WHERE deptId=10 OR deptId=30;

3000-8000所有信息?

SELECT * FROM emp WHERE salary>=6000 AND salary<=8000;

1990年出生的人

SELECT * FROM emp WHERE birthday>='1990-1-1'AND birthday <='1990-12-31';?

10.模糊條件查詢? ? 姓名包含字符E的員工信息? ? where ename? like ’%E%’;? %表示任意多個(gè)任意字符?

模糊查詢不能用=? 要用like? ? ? _表示任意的一個(gè)字符

姓名以E開(kāi)頭 ,結(jié)尾,倒數(shù)第二個(gè)

SELECT * FROM emp WHERE ename like 'E%';

SELECT * FROM emp WHERE ename like '%E';

SELECT * FROM emp WHERE ename like '%E_';

11.查詢結(jié)果的排序?

所有員工信息? 按工資有小到大排列?

SELECT * FROM emp ORDER BY salary;? 默認(rèn)升序?

order by ASC為升序? 可不寫? 降序 DESC? ?

所有員工信息按照姓名由小到大排列

SELECT * FROM emp WHERE deptID=10 ORDER BY ename desc;

按照年齡由大到小排列?

SELECT * FROM emp ORDER BY birthday ASC;

按照工資由大到小排列? 工資相同 姓名由大到小

SELECT * FROM emp ORDER BY birthday DESC

順序seclect * from emp order by salary DESC,enname ASC;

工資由小到大? 女在男之前? 先排性別

SELECT *FROM emp ORDER BY sex ASC,salary DESC;?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容