影視網(wǎng)站建設(shè)網(wǎng)頁(yè)程序設(shè)計(jì)是什么
鶴壁市浩天電氣有限公司
2026/01/22 08:22:50
影視網(wǎng)站建設(shè),網(wǎng)頁(yè)程序設(shè)計(jì)是什么,小說(shuō)網(wǎng)站怎么做seo,成年做羞羞的視頻網(wǎng)站文章目錄MySQL執(zhí)行SQL語(yǔ)句原理SQL分類#xff08;CRUD#xff09;DDL語(yǔ)句CREATE--創(chuàng)建ALTER--修改DROP--刪除DCL語(yǔ)句GRANT---授權(quán)REVOKE--刪除權(quán)限COMMIT--永久數(shù)據(jù)修改DML語(yǔ)句insert--插入數(shù)據(jù)update--更新數(shù)據(jù)delete--刪除數(shù)據(jù)truncate--永久刪除數(shù)據(jù)delete truncate drop刪…文章目錄MySQL執(zhí)行SQL語(yǔ)句原理SQL分類CRUDDDL語(yǔ)句CREATE--創(chuàng)建ALTER--修改DROP--刪除DCL語(yǔ)句GRANT---授權(quán)REVOKE--刪除權(quán)限COMMIT--永久數(shù)據(jù)修改DML語(yǔ)句insert--插入數(shù)據(jù)update--更新數(shù)據(jù)delete--刪除數(shù)據(jù)truncate--永久刪除數(shù)據(jù)delete truncate drop刪除有什么區(qū)別DQL語(yǔ)句 *** 【最常使用】SELECT--查詢語(yǔ)句DESC--查詢表結(jié)構(gòu)SHOW--查詢語(yǔ)句核心SQL語(yǔ)法索引操作SQL是MySQL的學(xué)習(xí)中最為重要的一個(gè)部分進(jìn)行對(duì)數(shù)據(jù)的增刪改查sql是結(jié)構(gòu)化的查詢語(yǔ)句在學(xué)習(xí)sql的時(shí)候需要了解sql語(yǔ)句的分類以及需要掌握語(yǔ)法的使用熟練使用幫助手冊(cè)MySQL執(zhí)行SQL語(yǔ)句原理簡(jiǎn)述底層原理流程如圖所示所有的app是一個(gè)應(yīng)用程序可以有非常多不同的應(yīng)用程序像手機(jī)里面不同的APP程序一樣假設(shè)我們?cè)趹?yīng)用程序上進(jìn)行了商品查詢的動(dòng)作就是select的語(yǔ)句應(yīng)用程序會(huì)將查詢的動(dòng)作通過(guò)mysqld連接到后端的代碼【可以是Python、go Java語(yǔ)言看后端是使用的什么語(yǔ)言構(gòu)建的】這個(gè)是連接層會(huì)進(jìn)入連接池【如果在這個(gè)連接池之前有過(guò)連接數(shù)據(jù)就可以直接復(fù)制沒(méi)有連接過(guò)會(huì)將數(shù)據(jù)同步到連接池里面記錄以方便下次的連接這樣是為了減少數(shù)據(jù)庫(kù)的連接節(jié)約資源最消耗資源的不是進(jìn)行操作而是連接和斷開(kāi)的時(shí)候】連接層會(huì)將申請(qǐng)的SQL語(yǔ)句傳遞到sql layer在這里1、會(huì)進(jìn)行檢查sql語(yǔ)句是否正確是否符合規(guī)則2、會(huì)針對(duì)不同的sql進(jìn)行分類發(fā)放給不同的模塊進(jìn)行執(zhí)行例如這里是查詢語(yǔ)句就會(huì)先去cache緩存中查詢有就進(jìn)行響應(yīng)沒(méi)有的會(huì)進(jìn)行sql的解析3、會(huì)由parser進(jìn)行sql的解析對(duì)用戶的sql進(jìn)行解析是需要查看哪些表的哪些字段數(shù)據(jù)4、authorzatom會(huì)進(jìn)行權(quán)限的判斷檢查是否有對(duì)應(yīng)的權(quán)限進(jìn)行使用沒(méi)有就會(huì)報(bào)錯(cuò)5、準(zhǔn)備sql的執(zhí)行計(jì)劃6、執(zhí)行sql計(jì)劃進(jìn)行查詢數(shù)據(jù)在對(duì)應(yīng)的模塊進(jìn)行讀取數(shù)據(jù)內(nèi)存 磁盤等7、讀取之后的數(shù)據(jù)會(huì)添加到緩存中方便下一次的查詢。SQL分類CRUD類型全稱解釋需要掌握的核心命令DDLData Definition Language數(shù)據(jù)定義建表建庫(kù)修改數(shù)據(jù)結(jié)構(gòu)CREATE/ALTER/DROPDCLData Control Language授權(quán)控制權(quán)限相關(guān)配置GRANT/REVOKE/COMMITDMLData Manipulation Language數(shù)據(jù)操作修改、刪除、新增、修改數(shù)據(jù)內(nèi)容INSERT/UPDATE/DELETEDQLData Query Language查詢查詢數(shù)據(jù)SELECTSQL語(yǔ)句中的關(guān)鍵字語(yǔ)法是大小寫不敏感的參數(shù)是需要明確大小寫的例如創(chuàng)建一個(gè)表或者庫(kù)的表名字或庫(kù)名字DDL語(yǔ)句DDL主要學(xué)習(xí)CREATE、ALTER、DROPDDL是指的進(jìn)行對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行調(diào)整的命令CREATE–創(chuàng)建#環(huán)境準(zhǔn)備檢查環(huán)境操作系統(tǒng)的MySQL是否有正常啟動(dòng)[rootdb01~]# netstat -lnptActive Internet connections(only servers)Proto Recv-Q Send-QLocalAddressForeignAddress State PID/Program name tcp00127.0.0.1:60100.0.0.0:*LISTEN961/sshd: rootpts/tcp000.0.0.0:220.0.0.0:*LISTEN952/sshd tcp600::1:6010:::*LISTEN961/sshd: rootpts/tcp600:::3306:::*LISTEN1981/mysqld tcp600:::22:::*LISTEN952/sshd#創(chuàng)建一個(gè)King庫(kù)語(yǔ)法CREATEDATABASE庫(kù)名字 mysqlcreatedatabaseking;#創(chuàng)建庫(kù)Query OK,1rowaffected(0.00sec)mysqlshowdatabases;--------------------|Database|--------------------|information_schema||king||mysql||performance_schema||sys|--------------------5rowsinset(0.00sec)#創(chuàng)建jinyin用戶語(yǔ)法CREATEUSER用戶名mysqlCREATEUSERjinyin-;Query OK,0rowsaffected(0.00sec)#創(chuàng)建wjx的賬號(hào)并設(shè)置密碼允許本地登入語(yǔ)法CREATEUSER用戶名訪問(wèn)主機(jī)IDENTIFIEDBY密碼;mysqlcreateuserwjx127.0.0.1identifiedbywjx888;Query OK,0rowsaffected(0.00sec)#在King庫(kù)里面創(chuàng)建一張表名字是lol字段有id、jiage、name語(yǔ)法CREATEtableifnotexit表名字(字段 類型字段類型);額外的參數(shù)信息 mysqlcreatetableifnotexistslol(idint,namevarchar(255)notnull,jiageint);Query OK,0rowsaffected(0.01sec)mysqldesclol;#查看表結(jié)構(gòu)------------------------------------------------|Field|Type|Null|Key|Default|Extra|------------------------------------------------|id|int(11)|YES||NULL|||name|varchar(255)|NO||NULL|||jiage|int(11)|YES||NULL||------------------------------------------------3rowsinset(0.01sec)查看CREATE幫助手冊(cè)使用 加語(yǔ)法關(guān)鍵字 mysql?CREATE;Many help itemsforyour request exist.Tomake a more specific request,pleasetypehelp item,whereitemisoneofthefollowingtopics:CREATEDATABASECREATEEVENTCREATEFUNCTIONCREATEFUNCTIONLOADABLEFUNCTIONCREATEINDEXCREATELOGFILEGROUPCREATEPROCEDURECREATESCHEMACREATESERVERCREATETABLECREATETABLESPACECREATETRIGGERCREATEUSERCREATEVIEWSHOWSHOWCREATEDATABASESHOWCREATEEVENTSHOWCREATEFUNCTIONSHOWCREATEPROCEDURESHOWCREATESCHEMASHOWCREATETABLESHOWCREATEUSERSPATIAL INDEXESALTER–修改主要對(duì)表的結(jié)構(gòu)做修改操作新增、刪除、修改表名字段#1、修改表的名字將lol修改為lol2方法一renametable舊的名字to新的名字 mysqlrenametableloltolol2;Query OK,0rowsaffected(0.00sec)mysqlshowtables;----------------|Tables_in_king|----------------|lol2|----------------1rowinset(0.00sec)方法二使用alter語(yǔ)法altertable舊表格renameto新表格 mysqlaltertablelol2renametolol;Query OK,0rowsaffected(0.00sec)mysqlshowtables;----------------|Tables_in_king|----------------|lol|----------------1rowinset(0.00sec)#2、在表格里面新增字段password語(yǔ)法altertable表名ADD字段名字 字段類型;mysqlaltertablelolADDpasswordint;Query OK,0rowsaffected(0.01sec)mysqldesclol;---------------------------------------------------|Field|Type|Null|Key|Default|Extra|---------------------------------------------------|id|int(11)|YES||NULL|||name|varchar(255)|NO||NULL|||jiage|int(11)|YES||NULL|||password|int(11)|YES||NULL||---------------------------------------------------4rowsinset(0.00sec)#3、指定插入表格字段在哪個(gè)位置添加pic字段在name的后面添加misc字段在pic的后面mysqlaltertablelolADDpicvarchar(200)aftername,ADDmiscvarchar(100)afterpic;Query OK,0rowsaffected(0.00sec)mysqldesclol;---------------------------------------------------|Field|Type|Null|Key|Default|Extra|---------------------------------------------------|id|int(11)|YES||NULL|||name|varchar(255)|NO||NULL|||pic|varchar(200)|YES||NULL|||misc|varchar(100)|YES||NULL|||jiage|int(11)|YES||NULL|||password|int(11)|YES||NULL||---------------------------------------------------6rowsinset(0.01sec)#4、修改已經(jīng)存在的表結(jié)構(gòu)字段的內(nèi)容修改password的類型為varchar語(yǔ)法ALTERTABLE表名MODIFYCOLUMN列名 數(shù)據(jù)類型[長(zhǎng)度]NULL;mysqlaltertablelolmodifycolumnpasswordvarchar(100);Query OK,0rowsaffected(0.01sec)mysqldesclol;---------------------------------------------------|Field|Type|Null|Key|Default|Extra|---------------------------------------------------|id|int(11)|YES||NULL|||name|varchar(255)|NO||NULL|||pic|varchar(200)|YES||NULL|||misc|varchar(100)|YES||NULL|||jiage|int(11)|YES||NULL|||password|varchar(100)|YES||NULL||---------------------------------------------------6rowsinset(0.00sec)#5、刪除misc對(duì)列-- 刪除lol表中的misc列語(yǔ)法ALTERTABLE表名字DROPCOLUMN列名字;mysqlaltertableloldropcolumnmisc;Query OK,0rowsaffected(0.00sec)mysqlaltertableloldropcolumnpic;Query OK,0rowsaffected(0.01sec)mysqldesclol;---------------------------------------------------|Field|Type|Null|Key|Default|Extra|---------------------------------------------------|id|int(11)|YES||NULL|||name|varchar(255)|NO||NULL|||jiage|int(11)|YES||NULL|||password|varchar(100)|YES||NULL||---------------------------------------------------4rowsinset(0.00sec)-- 同時(shí)刪除多個(gè)列用逗號(hào)分隔ALTERTABLE表名字DROPCOLUMN列,DROPCOLUMN列;DROP–刪除#可以刪除表 刪除庫(kù)注意此命令刪除數(shù)據(jù)是無(wú)法進(jìn)行回滾的語(yǔ)法DROP DATABASE[IF EXISTS]數(shù)據(jù)庫(kù)名;DROP TABLE[IF EXISTS]表名1[, 表名2,...];-- 可同時(shí)刪除多個(gè)表DCL語(yǔ)句控制數(shù)據(jù)主要是進(jìn)行授權(quán)操作GRANT—授權(quán)SQL安全措施1、設(shè)置的root密碼必須是復(fù)雜的定期進(jìn)行更換密碼2、更改ssh的默認(rèn)端口3、禁止root用戶遠(yuǎn)程登入只允許普通用戶登入4、修改常見(jiàn)的端口數(shù)據(jù)例如3306這些5、所有用戶的授權(quán)需要精確明確不使用% *這些通配符查詢目前數(shù)據(jù)庫(kù)中用戶權(quán)限 mysqlSELECT user,host,authentication_string FROM mysql.user WHERE userroot;------------------------------------------------------------|user|host|authentication_string|------------------------------------------------------------|root|localhost|*9A7CFEB6347D7E825827188C11E68E27522E2974|------------------------------------------------------------1rowinset(0.00sec)#授權(quán)命令如下grant 權(quán)限 on 數(shù)據(jù)庫(kù).數(shù)據(jù)表 to 用戶名字‘允許登入的網(wǎng)段’ identified by ‘登入的密碼’#設(shè)置最大權(quán)限給用戶jinyin運(yùn)行在任何地方登入對(duì)所有數(shù)據(jù)進(jìn)行操作生產(chǎn)環(huán)境不要使用mysqlgrant all on *.* to jinyin%identified byjy123.com;mysqlselectuser,host from mysql.user;--------------------------|user|host|--------------------------|jinyin|%||wjx|127.0.0.1||mysql.session|localhost||mysql.sys|localhost||root|localhost|--------------------------5rowsinset(0.00sec)#創(chuàng)建一個(gè)用戶wujiaxin,只能對(duì)king庫(kù)進(jìn)行查詢刪除修改新增操作使用授權(quán)命令會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的用戶并且完成授權(quán) mysqlgrant select,drop,alter,insert on king.* to wujiaxin10.0.0.%identified byjy123.com;Query OK,0rows affected,1warning(0.00sec)mysqlselectuser,host from mysql.user;--------------------------|user|host|--------------------------|jinyin|%||wujiaxin|10.0.0.%||wjx|127.0.0.1||mysql.session|localhost||mysql.sys|localhost||root|localhost|--------------------------6rowsinset(0.00sec)#登入賬號(hào)驗(yàn)證[rootdb01 ~]# mysql -uwujiaxin -h10.0.0.51 -P3306 -pEnter password: Welcome to the MySQL monitor. Commands end with;org. Your MySQL connectionidis7Server version:5.7.38-log MySQL Community Server(GPL)Copyright(c)2000,2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Typehelp;orhforhelp. Typectoclearthe current input statement. mysqlshow databases;--------------------|Database|--------------------|information_schema||king|--------------------2rowsinset(0.00sec)注意* 和%不要隨便使用為了數(shù)據(jù)庫(kù)安全REVOKE–刪除權(quán)限使用的語(yǔ)法REVOKE 權(quán)限列表 ON 權(quán)限范圍 FROM用戶名訪問(wèn)主機(jī);要撤銷的權(quán)限如SELECT、DROP、ALTER、INSERT多個(gè)權(quán)限用逗號(hào)分隔也可用ALL PRIVILEGES表示所有權(quán)限。COMMIT–永久數(shù)據(jù)修改DML語(yǔ)句DML是對(duì)數(shù)據(jù)內(nèi)容做處理insert–插入數(shù)據(jù)#使用語(yǔ)法insert into 表(字段字段字段)values(數(shù)據(jù)數(shù)據(jù)數(shù)據(jù));#在lol表中新增一條數(shù)據(jù)mysqlinsert into lol(id,name,jiage,password)values(1,jiax,1800,jiosffj),(2,jiayin,1700,csdlcsd);Query OK,2rows affected(0.01sec)mysqlselect* from lol;-------------------------------|id|name|jiage|password|-------------------------------|1|jiax|1800|jiosffj||2|jiayin|1700|csdlcsd|-------------------------------2rowsinset(0.00sec)注意字符串類型的數(shù)據(jù)必須使用引號(hào)update–更新數(shù)據(jù)一定要規(guī)范的進(jìn)行使用update就是必須加where條件進(jìn)行匹配需要更新的數(shù)據(jù)內(nèi)容不然會(huì)導(dǎo)致所有的數(shù)據(jù)都被修改語(yǔ)法update 表名字 SET 修改的字段修改的值 where 匹配修改內(nèi)容的字段匹配的數(shù)據(jù)值#修改lol表中id為1的name為jymysqlupdate lolsetnamejywhereid1;Query OK,1row affected(0.00sec)mysqlselect* from lol;-------------------------------|id|name|jiage|password|-------------------------------|1|jy|1800|jiosffj||2|jiayin|1700|csdlcsd|-------------------------------2rowsinset(0.01sec)#同時(shí)修改多個(gè)字段使用隔開(kāi)#修改lol表中id為2的name為wjx jiage為2000mysqlupdate lolsetnamewjx,jiage2000whereid2;Query OK,1row affected(0.00sec)mysqlselect* from lol;-----------------------------|id|name|jiage|password|-----------------------------|1|jy|1800|jiosffj||2|wjx|2000|csdlcsd|-----------------------------2rowsinset(0.00sec)delete–刪除數(shù)據(jù)注意delete是一行一行進(jìn)行刪除數(shù)據(jù)的不合適于在海量數(shù)據(jù)中進(jìn)行大批量的數(shù)據(jù)刪除效率會(huì)很低還有一個(gè)特點(diǎn)對(duì)于有自增的id數(shù)據(jù)列刪除之后也會(huì)保留id位置進(jìn)行刪除數(shù)據(jù) 語(yǔ)法delete from 數(shù)據(jù)庫(kù).表名字 where 接條件#刪除jiage是1800的數(shù)據(jù)mysqldelete from lol wherejiage1800;Query OK,1row affected(0.00sec)mysqlselect* from lol;-----------------------------|id|name|jiage|password|-----------------------------|2|wjx|2000|csdlcsd|-----------------------------1rowinset(0.00sec)truncate–永久刪除數(shù)據(jù)這個(gè)刪除是物理意義上的永久刪除而且是進(jìn)行大批量刪除語(yǔ)法truncate table 表名字;delete truncate drop刪除有什么區(qū)別DROP用于刪除整個(gè)表包括數(shù)據(jù)、索引和約束一旦執(zhí)行無(wú)法恢復(fù)。DELETE用于刪除表中的特定數(shù)據(jù)行但保留表的結(jié)構(gòu)和定義可以通過(guò)WHERE子句進(jìn)行限制。TRUNCATE用于快速刪除表中的所有數(shù)據(jù)但保留表的結(jié)構(gòu)和定義不會(huì)觸發(fā)觸發(fā)器不會(huì)通過(guò)WHERE子句進(jìn)行限制。字符集如果你只需要處理大多數(shù)的拉丁字符比如英文、法文、德文等UTF-8就足夠了。但如果你需要處理一些特殊的字符比如一些表情符號(hào)或者一些特殊的語(yǔ)言字符或者你的應(yīng)用可能會(huì)與一些舊的軟件或數(shù)據(jù)庫(kù)交互那么使用UTF-8MB4會(huì)是一個(gè)更好的選擇DQL語(yǔ)句 *** 【最常使用】SELECT–查詢語(yǔ)句1、通過(guò)*查詢所有生產(chǎn)環(huán)境重?cái)?shù)據(jù)比較龐大不建議使用比較合適內(nèi)容比較少的表格 SELECT * from 表名字 mysqlselect* from lol;-----------------------------|id|name|jiage|password|-----------------------------|2|wjx|2000|csdlcsd|-----------------------------1rowinset(0.00sec)2、指定字段進(jìn)行查詢可以看where結(jié)合使用 指定字段 mysqlselectid,name from lol;---------------|id|name|---------------|2|wjx||3|xiat||4|xiuxiu||5|xshasha||1|dage|---------------5rowsinset(0.00sec)結(jié)合條件查詢價(jià)格大于2000的id和name mysqlselectid,name from lol where jiage2000;---------------|id|name|---------------|5|xshasha||1|dage|---------------2rowsinset(0.00sec)#多條件查詢 合并and查詢id2jiage大于100的name mysqlSELECT name from lol whereid2and jiage1000;------|name|------|wjx|------1rowinset(0.00sec)查詢數(shù)據(jù)之后進(jìn)行排序 order by 字段 默認(rèn)是從小到大 order by 字段 desc;從大到小#查詢jiage大于2000的namejiage并且從大到小排序mysqlSELECT name,jiage from lol where jiage2000order by jiage desc;----------------|name|jiage|----------------|xshasha|5900||dage|2900|----------------2rowsinset(0.00sec)使用limit限制查詢的相關(guān)數(shù)據(jù) 語(yǔ)法limit 起點(diǎn),條數(shù) 從第幾條開(kāi)始查看幾條 mysqlSELECT * from lol;所有數(shù)據(jù) ---------------------------------|id|name|jiage|password|---------------------------------|2|wjx|2000|csdlcsd||3|xiat|1800|jsvr||4|xiuxiu|1900|csdvgresd||5|xshasha|5900|efhioew||1|dage|2900|jinyii|---------------------------------5rowsinset(0.00sec)mysqlSELECT * from lol limit2,3;---------------------------------|id|name|jiage|password|---------------------------------|4|xiuxiu|1900|csdvgresd||5|xshasha|5900|efhioew||1|dage|2900|jinyii|---------------------------------3rowsinset(0.00sec)DESC–查詢表結(jié)構(gòu)語(yǔ)法 DESC 表名字 mysqldesc lol;---------------------------------------------------|Field|Type|Null|Key|Default|Extra|---------------------------------------------------|id|int(11)|YES||NULL|||name|varchar(255)|NO||NULL|||jiage|int(11)|YES||NULL|||password|varchar(100)|YES||NULL||---------------------------------------------------4rowsinset(0.00sec)SHOW–查詢語(yǔ)句#查看數(shù)據(jù)庫(kù)show databases;#查看創(chuàng)建數(shù)據(jù)庫(kù)詳細(xì)信息show create database world;#查看表show tables;#查看創(chuàng)建表詳細(xì)信息show create table city;#查看授權(quán)show grants;#查看 字符集show charset核心SQL語(yǔ)法索引操作查看表的索引主鍵也是一種索引 語(yǔ)法 show index from 表 mysqlshow index from mysql.userG ***************************1. row *************************** Table: user Non_unique:0Key_name: PRIMARY Seq_in_index:1Column_name: Host Collation: A Cardinality: NULL Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: ***************************2. row *************************** Table: user Non_unique:0Key_name: PRIMARY Seq_in_index:2Column_name: User Collation: A Cardinality:6Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment:2rowsinset(0.00sec)添加表里面的索引 語(yǔ)法 alter table 表的名字 ADD index 索引的名(添加索引的字段);#給lol表的name列添加普通索引索引名idx_lol_namemysqlalter table lol ADD index idx_lol_name(name);Query OK,0rows affected(0.02sec)mysqlshow index from lolG ***************************1. row *************************** Table: lol Non_unique:1Key_name: idx_lol_name Seq_in_index:1Column_name: name Collation: A Cardinality:5Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment:1rowinset(0.00sec)