MYSQL的操作命令

来源:https://www.cnblogs.com/weimingai/archive/2019/09/04/11458591.html
-Advertisement-
Play Games

一、御前 1 win+R DOS 輸入 net start mtsql 和 net stop mysql 啟動和停止Mysql 服務,也可通過電腦——管理——服務和應用程式——服務——MYSQL——右擊 啟動mysql服務出現服務名無效的原因及解決方法【失敗】 問題原因:mysql服務沒有安裝。 ...


一、御前

1 win+R  DOS 輸入 net start mtsql 和 net stop mysql 啟動和停止Mysql 服務,也可通過電腦——管理——服務和應用程式——服務——MYSQL——右擊

 

啟動mysql服務出現服務名無效的原因及解決方法【失敗】

 

問題原因:mysql服務沒有安裝。

解決辦法: 在 mysql bin目錄下 以管理員的許可權 執行 mysqld -install命令

以管理員的許可權 mysqld -remove ,卸載mysql服務

 

2 登錄和退出

路徑: DOS:mysql -uroot -p

輸入密碼

exit; 退出

show databases; 查看資料庫

Command Line Client登錄和退出

 

3 常見操作

\h 或者 help;

source D:\test.sql 即執行test.sql文件

 

4 圖形 MYSQL Workbench

另外介紹第三方 SQLyog

 

二、資料庫和表的基本操作

1、MySQL支持的數據類型

1)數值類型 字元串類型 日期和時間類型

2)資料庫基本操作

CREATE DATABASE 資料庫名稱;

SHOW DATABASE;

SHOW CREATE DATABASE 資料庫名稱;    查看已經創建的資料庫的創建信息

CREATE DATABASE 資料庫名稱 CHARACTER SET gbk;    在創建資料庫時指定編碼方式

USE 資料庫名;

ALTER DATABASE 資料庫名稱 DEFAULT CHARACTER SET 編碼方式 COLLATE 編碼方式_bin;編碼方式為修改後的

DROP DATABASE 資料庫名稱;

3) 數據表的基本操作

CREATE TABLE stu( stu_id INT(10),stu_name VARCHAR(50) );

SHOW CREATE TABLE 表名;

SHOW CREATE TABLE 表名\G;格式化顯示創建信息

DESCRIBE 表名; 表的列相關信息

ALTER TABLE 原表名 RENAME [TO] 新表名;

ALTER TABLE 表名 CHANGE 原欄位名 新欄位名 新數據類型;

ALTER TABLE 表名 MODIFY 欄位名 新數據類型;

ALTER TABLE 表名 ADD 新添欄位名 數據類型;

AlTER TABLE 表名 DROP 欄位名;

ALTER TABLE 表名 MODIFY 欄位名1 數據類型 FIRST|AFTER 欄位名2; 調整欄位位置

DROP TABLE 表名;

 

三、表中數據的基本操作

INSERT INTO 表名 (欄位1,欄位2)VALUES{值1,值2);

INSERT INTO 表名 VALUES(值1,,值2); 為所有的欄位都填上數據

INSERT INTO 表名(欄位名1,欄位名2)VALUES(值1,值2);為指定欄位添加數據

INSERT INTO 表名[(欄位名1,欄位名2,…)]VALUES(值1,值2,…),…,(值1,值2,…);

UPDATE 表名 SET 欄位名1=值1 [欄位名2=值2,…] WHERE ;

DELETE FROM 表名 WHERE;刪除指定的全部數據

TRUNCATE [TABLE] 表名;刪除表中的所有數據

 

四 單表查詢

SELECT 欄位名1,…欄位名n FROM 表名;

SELECT * FROM 表名;

SELECT * FROM 表名 WHERE ;

SELECT * FROM 表名 WHERE 條件表達式1 AND|OR 條件表達式2 ;

SELECT * FROM 表名 WHERE 欄位名 [NOT] IN (元素1,元素2,…,元素n) ;

SELECT * FROM 表名 WHERE 欄位名 IS [NOT] NULL ;

SELECT * FROM 表名 WHERE 欄位名 [NOT] BETWEEN 值1 AND 值2 ;

SELECT * FROM 表名 WHERE 欄位名 [NOT] LIKE '匹配字元串';其中%表示n個字元,_表示一個

SELECT DISTINCT 欄位名 FROM 表名 ;去重覆

SELECT * FROM 表名 WHERE 欄位1 [ASC|DESC],欄位2 [ASC|DESC] ;ASC升序

2)聚合函數

SELECT COUNT (*|1|列名) FROM 表名;

SELECT SUM (欄位名) FROM 表名;

SELECT AVG (欄位名) FROM 表名;

SELECT MAX (欄位名) FROM 表名;

SELECT MIN (欄位名) FROM 表名;

3)分組

SELECT 欄位名1,…欄位名n FROM 表名 GROUP BY 欄位名1,欄位名2,…[HAVING 條件表達式];

4)分頁

SELECT 欄位名1,欄位名2,…FROM 表名 LIMIT [m,]n;【m代表起始數目,n代表個數】

 

五 數據的完整性

ALTER TABLE 表名 ADD PRIMARY KEY(列名);主鍵 不空 不重

或者 CREATE TABLE 表名 (欄位名 數據類型 PRIMARY KEY);

 

ALTER TABLE 表名 ADD UNIQUE(列名);唯一約束

或者 CREATE TABLE 表名 (欄位名 數據類型 UNIQUE);

 

ALTER TABLE 表名 ADD PRIMARY KEY AUTO_INCREMENT(列名);自增

或者 CREATE TABLE 表名 (欄位名 數據類型 AUTO_INCREMENT);

 

2)索引

AlTER INDEXE 索引名 ON  表名(欄位名[(長度)]);

或者 CREATE TABLE 表名 (欄位名 數據類型 ,INDEX [索引名] (欄位名[(長度)]));

 

唯一索引:【不可有重覆值】

在普通的INDEX 前加 UNIQUE

 

3)域完整性

ALTER TABLE  表名 MODIFY 欄位名 數據類型 NOT NULL,…;非空約束

或者 CREATE TABLE 表名 (欄位名 數據類型 NOT NULL,);

 

ALTER TABLE  表名 MODIFY 欄位名 數據類型 DEFAULT 預設值;預設值約束

或者 CREATE TABLE 表名 (欄位名 數據類型 DEFAULT 預設值,);

4)引用完整性

ALTER TABLE 表名 ADD FOREIGN KEY(外鍵欄位名) REFERENCES 主表表名(主鍵欄位名);

CREATE TABLE 表名 (欄位名 數據類型,FOREIGN KEY(外鍵欄位名) REFERENCES 主表表名(主鍵欄位名));

 

ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名;

 

六、多表查詢

1)合併結果集

SELECT * FROM test1 UNION SELECT * FROM test2;會過濾重覆數據

SELECT * FROM test1 UNION ALL SELECT * FROM test2;不會過濾重覆數據

2)連接查詢

SELECT 查詢欄位 FROM 表1 CROSS JOIN 表2 WHERE ;笛卡爾積

SELECT 查詢欄位 FROM 表1 [INNER] JOIN 表2 ON 表1.關係欄位=表2.關係欄位 Where  ;內連接

SELECT 查詢欄位 FROM 表1 LEFT [OUTER] JOIN 表2 ON 表1.關係欄位=表2.關係欄位 Where ;左外連接

SELECT 查詢欄位 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 表1.關係欄位=表2.關係欄位 Where ;右外連接

SELECT 查詢欄位 FROM 表1 [別名] JOIN 表2 [別名] ON 表1.關係欄位=表2.關係欄位 JOIN 表 m ON…;多表

SELECT 查詢欄位 FROM 表1 [別名] NATURAL JOIN 表2 [表名];自然連接 列名和數據類型相同的欄位自動匹配

SELECT 查詢欄位 FROM 表1 [別名] NATURAL [LEFT|RIGHT] JOIN 表2 [表名];

SELECT 查詢欄位 FROM 表名 [別名1],表名[別名2] WHERE 查詢條件;自連接

3)子查詢

SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='JONES');子查詢做條件

SELECT e.ename,e.sal,d.dname,d.loc FROM emp e,(SELECT dname,loc,deptno FROM dept)d Where

e.deptno=d.deptno AND e.empmo=7788;子查詢做表

 

七、常用函數

1)字元串函數

ASCII();

CONCAT();

INSERT();

LEFT();

RIGHT();

LENGTH();【占用位元組】

2)數學函數

ABS();

MOD();

PI();

RAND();

ROUND();

TRUNCATE();【保留指定位數的結果】

3)日期和時間函數

DAY();

WEEK();

MONTH();

YEAR();

NOW();

4)格式化函數

FORMAT();

DATE_FORMAT();

5)系統信息函數

DATABASE();

USER();

SYSTEM_USER();

VERSION();

 

 

八、視圖

SELECT Drop_priv FROM mysql.user WHERE User='root';查詢用戶對視圖許可權

CREATE VIEW view_emp(id,name,sex,age,department) AS SELECT id,name,sex,age,department FROM emp;還有一些可選的許可權條件,用到再百度吧

DESCRIBE 視圖名;視圖欄位信息

DESC 視圖名;

SHOW TABLE STATUS LIKE '視圖名';視圖的基本信息

SHOW CREATE VIEW 視圖名;視圖詳細信息

CREATE OR REPLACE VIEW view_emp_detail(id,name,sex) AS SELECT id,name,sex FROM emp;修改

ALTER VIEW view_emp AS SELECT name,age FROM emp;修改

UPDATE 視圖名 SET 欄位名1=值1 [欄位名2=值2,…] [WHERE 條件表達式];

INSERT INTO view_emp VALUES (值1,值2,……);

DELETE FROM 表名 [條件表達式];刪除數據

DROP VIEW [IF EXISTS] 視圖名 [,視圖2]… [RESTRICT|CASCADE];刪除視圖

 

九、存儲過程

1 查看用戶是否擁有創建存儲過程的許可權

SELECT Create_routine_priv FROM mysql.user Where User='root';

CREATE PROCEDURE sp_name ([proc_parameter[…]]) [characteristic…] routine_body;創建

SHOW PROCEDURE STATUS [LIKE 'pattern'];查看存儲過程的狀態

SHOW CREATE PROCEDURE sp_name;查看存儲過程的創建信息

 

SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME='SP_SEARCH' AND ROUTINE_TYPE='PROCEDURE'\G;

 

SELECT Alter_routine_priv FROM mysql.user Where User='root';查看修改許可權

ALTER PROCEDURE sp_name [characteristic…];修改

DROP PROCEDURE [IF EXISTS] sp_name;刪除

具體的  局部變數 定義條件 處理程式 游標的使用 流程式控制制(IF CASE WHILE) 自己看吧

 

2事件調度器

資料庫安自定義的時間周期來出發某種操作,可以理解為時間觸發器。

SELECT @@event_scheduler;查看是否已經開啟時間調度器

SET GLOBAL event_scheduler=ON;開啟

使用:

CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;

schedule:
AT timestamp [+ INTERVAL interval] ...
|EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
 

interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

 

來自 <https://www.cnblogs.com/geaozhang/p/6821692.html>

 

十、觸發器

1 創建觸發器

CREATE TRIGGER trigger_name【觸發器名稱】

 triggername_time【BEFORE|ALTER】

trihher_event【INSERT|UPDATE|DELETE】 on tablename

FOR EACH ROW

trigger_stmt;

 

2查看觸發器

SHOW TRIGGERS\G【查看所有觸發器】

DESC information_schema.triggers;【查看觸發器表】

SELECT * FROM information_schema.triggers WHERE trigger_name='t_afterdelete_on_test1'\G;【查看某一個觸發器具體信息】

DROP TRIGGER [IF EXISTS] [schema_name.].trigger_name;刪除觸發器

 

十一、資料庫事務

START TRANSACTION;開啟事務

中間寫語句

COMMIT;提交事務

ROLLBACK;事務回滾——在提交之前

 

2事務的屬性——資料庫是多線程併發訪問的

ACID:原子性 一致性 隔離性 持久性

事務的隔離級別:

READ UNCOMMITTED【臟讀 讀未提交】-所有事務都可看到其他未提交事務

READ COMMITTED【不可重覆讀 讀已提交】—一個事務只能看到已經提交事務改變

REPEATABLE READ 【幻讀 可重覆度】——同一事務多個實例併發執行同樣數據

SERIALIZABLE 【可串列化】-強制事務排序使之不可能互相衝突

 

SELECT @@tx_isolation;查看當前會話隔離級別

SET SESSION TRANSACTION ISOLATION LEVEL (READ UNCOMMITTED)|(READ COMMITTED)|(REPEATABLE READ)|(SERIALIZABLE);設置會話隔離級別

 

3 分散式事務

XA {START|BEGIN} xid [JOIN|RESUME] 開始一個分散式事務

XA END xid [SUSPEND [FOR MIGRATE]] 操作分散式事務

XA PREPARE xid 準備提交事務

XA COMMIT xid [ONE PHASE] 提交事務

XA ROLLBACK xid 回滾事務

XA RECOVER [CONVERT XID] 查看處於PREPARE狀態的事務

 

十二、MYSQL 高級操作

1 數據的備份

mysql -uusername -ppassword dbname>path:filename.sql;

SQLyog 圖形界面sql文件形式轉儲

2 數據的還原

mysql -uusername -ppassword dbname<path:filename.sql;

SQLyog 圖形界面 執行SQL腳本

3 許可權管理【百度去吧】

MYSQL的許可權與user表

授予許可權:

查看許可權:SHOW GANTS FOR ‘username’@‘hostname’

收回許可權:

4 MYSQL分區【具體自己看書去吧】

RANGE分區 LIST分區 HASH分區 KEY分區


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本篇涉及的數據表格可以自行查閱上篇《MySQL難點語法——子查詢》 MySQL的數據表格之間有三種連接方式:等值連接、外連接、自連接。以下是通過舉例介紹這三種連接方式 1、等值連接 等值連接一般適用於主表和外表的連接(主表的主鍵和外表的外鍵相等) 需求:1.查看所有員工的所在部門的名稱 需求:2.查 ...
  • 本篇主要通過練習來講解子查詢的知識,進入正題之前,先熟悉數據表,表格的數據可以先不用管,主要是熟悉表格的欄位名 這裡子查詢分為三個部分: 1、where條件子查詢 這個子查詢和普通的查詢沒什麼區別,主要是先讀懂題目的意思,然後將結果集組裝起來 需求:1.查看職員名稱和名字為chang的員工一樣的所有 ...
  • 查詢後的結果 更改SQL 語句為 查詢結果 ...
  • 外鍵的使用條件: 兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵外鍵列必須建立了索引,MySQL 4.1.2以後的版本在建立外鍵時會自動創建索引,但如果在較早的版本則需要顯式建立;外鍵關係的兩個表的列必須是數據類型相似,也就是可以相互轉換類型的列,比如int和tinyint可以,而int和 ...
  • [TOC] 1.使用mysqldump實現邏輯備份 2.恢復邏輯備份 3.備份/恢復案例 mysql 資料庫備份/恢復實驗一:資料庫損壞 備份: 1. mysqldump uroot p123 all databases /backup/ _all.sql 2. mysql uroot p123 e ...
  • ORA-12514 TNS 監聽程式當前無法識別連接描述符中請求服務 的解決方法 ORA-12514 TNS 監聽程式當前無法識別連接描述符中請求服務 有同事遇到這個問題,現總結一下,原因如下: 你oracle安裝成功後,一直未停止資料庫(即資料庫是啟動的),客戶端配置成功後,應該一直不會有什麼問題 ...
  • 1.避免全表掃描 對查詢進行優化,應儘量避免全表掃描,首先應考慮在where 及order by 涉及的列上建立索引。 2.避免判斷null 值 應儘量避免在where 子句中對欄位進行null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如: select id from t where n ...
  • 在使用left join時,on and和on where條件的區別如下: 1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。 2、where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...