常用MySQL語法

来源:https://www.cnblogs.com/xlizi/archive/2018/07/12/9300761.html
-Advertisement-
Play Games

一、進入MySQL與退出MySQL 1.進入MySQL步驟:先打開CMD命令行;命令:C:\Users\admin> mysql -h(功能變數名稱,可填或不填) -u(賬號) -p(密碼); 連接成功時會跳出以下命令: Connection id: 9 【這個表示:連接次數】Current databas ...


一、進入MySQL與退出MySQL

1.進入MySQL步驟:先打開CMD命令行;命令:C:\Users\admin> mysql -h(功能變數名稱,可填或不填) -u(賬號) -p(密碼);

連接成功時會跳出以下命令:

Connection id: 9 【這個表示:連接次數】
Current database: 【這個表示:當前操作的資料庫名稱】
Current user: root@localhost 【這個表示:當前登錄的用戶 用戶名@地址】
SSL: Not in use 【這個表示:是否在使用加密鏈接 SSL加密】
Using delimiter: ; 【這個表示:命令分隔符,結束時以分號結束】
Server version: 5.5.48 MySQL Community Server (GPL) 【這個表示:當前mysql資料庫的版本型號】
Protocol version: 10 【這個表示:協議版本】
Connection: 127.0.0.1 via TCP/IP 【這個表示:連接信息】
Server characterset: utf8 【這個表示:mysql資料庫管理系統的安裝編碼】
Db characterset: utf8 【這個表示:資料庫編碼】
Client characterset: utf8 【這個表示:當前客戶端的預設編碼】
Conn. characterset: utf8 【這個表示:當前資料庫鏈接使用的編碼】
TCP port: 3306 【這個表示:埠號】
Uptime: 7 min 11 sec 【這個表示:資料庫的啟動時間[距離上一次重啟的時間]】

2、退出MySQL:quit或exit (回車) 或者 Ctrl+C

二、MySQL基礎的操作

1.創建資料庫命令:mysql> create database <資料庫名>

2.顯示所有的資料庫命令:mysql> show databases (註意:最後有個s)

3.刪除資料庫命令:mysql> drop database <資料庫名>

4.進入資料庫命令:mysql> use <資料庫名>

5.轉換編碼命令:mysql> set names gbk

6.查看當前使用的資料庫命令:mysql> select database();

7.當前資料庫所有的表信息命令:mysql> show tables (註意:最後有個s);

8.導出資料庫命令:mysqldump  -h(功能變數名稱)  -u(帳號)  -p(密碼) 資料庫名  >  本地路徑+文件名; (註意:導出資料庫前必須先要退出MySQL控制台。還有導出的文件尾碼名一般都是使用 .sql)

9.導入資料庫命令:首先登入MySQL控制台C:\Users\admin> mysql -h(功能變數名稱,可填或不填) -u(賬號) -p(密碼); 在進入資料庫mysql> use <資料庫>; 在導入資料庫mysql> source E:/school.sql  (註意:source 後面是你sql文件所在的絕對路徑)

10.在MySQL的表中增加欄位命令:mysql> alter table <表名> add column userid smallint not null primary key auto_increment; 這樣,就在這張表dbname中添加了一個欄位userid,類型為smallint

11.刪除表命令:mysql> drop table student

12.清空表命令:mysql> delete from student

13.更新表命令:mysql> update student set `name`='小A' where `id`=1

 

三、表操作,操作前必須連接某個資料庫

1.建表命令:create table <表名> ( <欄位名1> <類型1> [,..<欄位名n> <類型n>]);

例如:

mysql> create table Student(

-> id smallint unsigned not null primary key auto_increment comment '註釋id',

-> name char(20) not null comment '註釋name',

-> sex tinyint null default "1" comment '註釋sex[男為1,女為2]',

->) engine = innoDB;

2.獲取表結構命令:desc <表名> 或者 show columns from <表名> 還有 show create table <表名>

例如:

mysql> desc Student

mysql> show columns from Student

mysql> show create table Student

3.刪除表命令:drop table <表名>

例如:

mysql> drop table Student

4.添加新數據命令:insert into <表名> ( 欄位名1 , ...欄位名n ) values ( 值1 , ...值n )。或者 insert into <表名> values( 要輸入全部的數據結構 ),(註意:如需添加多條數據請用逗號隔開)

例如:

mysql> insert into Student values(1, '小A' , 2), (2, '小B', 1), (3, '小C', 2)

5.查詢表中數據命令:select <欄位1,欄位2,...欄位n> from <表名> where <條件>。或者 select * from <表名>

例如:

mysql> select * from Student

6.刪除表中數據命令:delete from <表名> where <條件>。或者 delete from <表名>

例如:

mysql> delete from Student

7.修改表中的數據命令:update <表名> set 欄位=新值, … where <條件>

例如:

mysql> update Student set name='小D' where id=3

8.更改表名命令:rename table <舊的表名> to <新的表名>

例如:

mysql> rename table Student to Class

9.用文本方式將數據裝入資料庫表中

例如:D:/mysql.txt

mysql> load data local infile "D:/mysql.txt" into table Student

四、數據類型

1.字元串類型

CHAR(M)型: 固定長度的字元串,最大長度為255個位元組

VARCHAR(M)型: 可變長度,最多不超過65 535位元組,如在創建時指定VARCHAR(n),則可存儲0~n個位元組

TINYTEXT型: 可變長度的字元串,支持最大長度255個位元組

TEXT型: 可變長度的字元串,支持最大長度65 535個位元組

MEDIUMTEXT型: 可變長度的字元串,支持最大長度16 777 215個位元組

LONGTEXT型: 可變長度的字元串,支持最大長度4 294 967 295個位元組

2.整型與浮點型    有符號[正負]                    無符號unsingn

TINYINT型:     -128 ~ 127                         0 ~ 255 (就是2的8次方-1)

SMALLINT型:    -32768 ~ 32767                     0 ~ 65535 (就是2的16次方-1)

MEDIUMINT型:   -8388608 ~ 8388607                  0 ~ 16777215 (就是2的24次方-1)

INT型:        -2147483648 ~ 2147483647              0 ~ 4294967296 (就是2的32次方-1)

BIGINT型:      -9223372036854775808 ~ 9223372036854775807   0 ~ 18446744073709551615 (就是2的64次方-1)

3.日期和時間類型

DATE型: YYYY-MM-DD 格式表示的日期值 / 取值範圍 1000-01-01 ~ 9999-12-31

TIME型: hh:mm:ss 格式表示的時間值 / 取值範圍 -838:59:59-838:59:59

DATETIME型: YYYY-MM-DD hh:mm:ss 格式表示日期與時間 / 取值範圍 1000-01-01 00:00:00 ~ 9999-12-31

TIMESTAMP型: YYYYMMDDhhmmss 格式表示的時間戳 / 取值範圍 19700101080001——20380119111407

YEAR型: YYYY 格式的年份 / 取值範圍 1901~2155

五、欄位約束

我們僅僅是定義了欄位的數據類型還不夠,我們還需要一些附加的屬性來約束或者規範欄位

UNSIGNED 只能用於設置數據類型,不允許出現負數,最大存儲長度會增加一倍,ZEROFILL 只能用於設置數值類型,在數值之前自動用0補齊不足的位數,AUTO_INCREMENT 如果給某個數據表的一個整數數據列定義可選的AUTO_INCREMENT屬性,那麼當用戶向這個數據表插入一個新記錄時,MySQL就會自動地把這個整數數據列的當前最大取值加上1之後賦值給新記錄中的這個整數欄位; 使用AUTO_INCREMENT屬性需要註意幾個問題: 這個屬性必須與NOT NULL 、PRIMARY KEY 或者 UNIQUE 屬性同時使用; 每個數據表最多只能有一個AUTO_INCREMENT數據列; MySQL的這種ID值自動生成機制只在用戶使用INSERT命令插入新記錄、並且沒有為ID欄位明確地給出一個值或NULL時才起作用。如果用戶給出了一個具體的值並且這個值在ID列里出現過,MySQL就將使用這個ID值生成一條新記錄;

NULL和NOT NULL 預設為NULL,即插入值時沒有在此欄位插入值,預設為NULL值,如果指定了NOT NULL,則必須在插入值時在此欄位填入值 DEFAULT 可以通過此屬性來指定一個預設值,如果沒有在此列添加值,那麼預設添加此值 主鍵(PRIMARY KEY) 能夠唯一標識表中某一行的屬性或屬性組。 一個表只能有一個主鍵,但可以有多個候選索引。主鍵常常與外鍵構成參照完整性約束,防止出現數據不一致。主鍵可以保證記錄的唯一和主鍵域非空,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。 外鍵(foreign key)是用於建立和加強兩個表數據之間的鏈接的一列或多列。 外鍵約束主要用來維護兩個表之間數據的一致性。簡言之,表的外鍵就是另一表的主鍵,外鍵將兩表聯繫起來。一般情況下,要刪除一張表中的主鍵必須首先要確保其它表中的沒有相同外鍵(即該表中的主鍵沒有一個外鍵和它相關聯)

六、MySQL 運算符

1.比較運算符

=   等於 
>   大於 
<   小於 
>=  大於等於 
<=  小於等於 
<>  不等於 
!>   不大於 
!<   不小於

%  匹配任意多個字元

_   匹配任意一個字元

2.邏輯運算符

AND  如果組合的條件都是 TRUE , 返回 TRUE

OR    如果組合的條件其一是 TRUE , 返回 TRUE

NOT  如果條件是 FALSE , 返回 TRUE

七、聚集函數

SUM ( ) 求和 
AVG ( ) 平均值 
COUNT ( ) 表達式中記錄的數目 
COUNT (* ) 計算記錄的數目 
MAX 最大值 
MIN 最小值 
VAR 方差 
STDEV 標準誤差 
FIRST 第一個值 
LAST 最後一個值

八、查詢字句

1.用ORDER BY子句排序結果(ASC表示升序,為預設值,DESC為降序)

ORDER子句按一個或多個(最多16個)欄位排序查詢結果,可以是升序(ASC)也可以是降序(DESC),預設是升序

ORDER子句通常放在SQL語句的最後

ORDER子句中定義了多個欄位,則按照欄位的先後順序排序

例如:對學生的年齡進行排序

SELECT * FROM student ORDER BY age DESC;

2.LIMIT 子句對查詢出的結果做限制,往往我們不想一次取出所有的數據

LIMIT有兩個參數: 一個參數、表示取得行數! 兩個參數、第一個參數表示從第幾行去,第二個參數表示取多少行

3.LEFT JOIN  ON 連表查詢

連表查詢有三種方式,分別是:左連和右連還有內連

左連:  以左邊的主表為主,如果主表沒有數據,則不會返回結果,即便是從表有數據
left join `表名` on 連表條件

右連: 以右邊的從表為主,如果從表沒有數據,則不會返回結果,即便是主表有數據
right join `表名` on 連表條件

內連: 以兩張表為主,必須兩張表都有數據的情況,才會返回結果。
inner join `表名` on 連表條件

九、MySQL的函數

mysqli_connect 連接資料庫,參數是 訪問地址、賬號、密碼、資料庫名

mysqi_connect_errno 返回資料庫連接的錯誤狀態碼

mysqli_connect_error 返回資料庫連接的錯誤信息

mysqli_close 關閉資料庫連接,參數是資料庫連接

mysqli_query 對資料庫執行一次sql語句的執行

mysqli_num_rows 取得結果集中行的數目

mysqli_fetch_array 從結果集中取得一行作為關聯數組,或數字數組,或二者兼有,第二個參數 索引數組MYSQLI_NUM 關聯數組 MYSQLI_ASSOC 兩者皆有MYSQLI_BOTH

mysqli_fetch_assoc 從結果集中取得一行作為關聯數組

mysqli_fetch_row 從結果集中取得一行作為枚舉數組

mysqli_fetch_object 從結果集中取得一行作為對象

mysqli_free_result 釋放結果記憶體

十、事務

事務是需要在同一個處理單元中執行的一系列更新處理的集合。通過使用事務,可以對資料庫中的資料庫中的資料庫更新處理的提交和取消進行管理。事務處理的終止指令包括COMMIT(提交處理) 和ROLLBACK(取消處理)兩種。 DBMS的事務具有原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)四種特性。通常將這四種特性的首字母結合起來,統稱為ACID特性。

例:給A君減10元,給B君加10元。 START TRANSACTION; UPDATE user SET money=money-10 WHERE name = 'A君'; UPDATE user SET money=money+10 WHERE name = 'B君'; COMMIT;

 

(註)、以下是在網路看到使用MySQL的一些管理心得

在windows中MySql以服務形式存在,在使用前應確保此服務已經啟動,未啟動可用net start mysql命令啟動。而Linux中啟動時可用“/etc/rc.d/init.d/mysqld start"命令,註意啟動者應具有管理員許可權。
剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患,對於一些重要的應用我們應將安全性儘可能提高,在這裡應把匿名帳戶刪除、 root帳戶設置密碼,可用如下命令進行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD('newpassword') where User='root';
如果要對用戶所用的登錄終端進行限制,可以更新User表中相應用戶的Host欄位,在進行了以上更改後應重新啟動資料庫服務,此時登錄時可用如下類似命令:
mysql -uroot -p;
mysql -uroot -pnewpassword;
mysql mydb -uroot -p;
mysql mydb -uroot -pnewpassword;
上面命令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登錄的資料庫的名稱。
在進行開發和實際應用中,用戶不應該只用root用戶進行連接資料庫,雖然使用root用戶進行測試時很方便,但會給系統帶來重大安全隱患,也不利於管理技術的提高。我們給一個應用中使用的用戶賦予最恰當的資料庫許可權。如一個只進行數據插入的用戶不應賦予其刪除數據的許可權。MySql的用戶管理是通過 User表來實現的,添加新用戶常用的方法有兩個,一是在User表插入相應的數據行,同時設置相應的許可權;二是通過GRANT命令創建具有某種許可權的用戶。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要給此用戶賦予他在相應對象上的許可權的管理能力,可在GRANT後面添加WITH GRANT OPTION選項。而對於用插入User表添加的用戶,Password欄位應用PASSWORD 函數進行更新加密,以防不軌之人竊看密碼。對於那些已經不用的用戶應給予清除,許可權過界的用戶應及時回收許可權,回收許可權可以通過更新User表相應欄位,也可以使用REVOKE操作。
下麵給出本人從其它資料(www.cn-java.com)獲得的對常用許可權的解釋:
全局管理許可權:
FILE: 在MySQL伺服器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控製表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
資料庫/數據表/數據列許可權:
Alter: 修改已存在的數據表(例如增加/刪除列)和索引。
Create: 建立新的資料庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或資料庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。
特別的許可權:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登錄--其它什麼也不允許做。

一個小小操作技巧:

  如果你在打命令時,回車後發現忘記加上結束分號了,你無須重新打一遍命令,只要打個分號回車就可以了。也就是說你可以把一個完整的命令分成幾行來打,完後用分號作結束標誌就OK了


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

-Advertisement-
Play Games
更多相關文章
  • 表level,其主鍵為lid 1.select max(id) from table 查詢語句:SELECT MAX(lid) FROM LEVEL 返回插入主鍵 2.select LAST_INSERT_ID(id) from table 查詢語句:SELECT LAST_INSERT_ID(li ...
  • 目錄 一、概述 二、工作機制 三、安裝 1、前提概述 2、軟體下載 3、安裝步驟 四、Sqoop的基本命令 基本操作 示例 五、Sqoop的數據導入 1、從RDBMS導入到HDFS中 2、把MySQL資料庫中的表數據導入到Hive中 3、把MySQL資料庫中的表數據導入到hbase 目錄 一、概述 ...
  • 一、從官網下載mysql-5.7.22-winx64.zip壓縮文件,解壓到自定義目錄。 二、將mysql安裝目錄的下的bin目錄 添加到系統path環境變數。 三、配置my.ini 文件,放置於mysql的安裝目錄之內。文件內容如下: 說明: basedir為mysql安裝目錄,datadir為數 ...
  • 前言:我用的是wafer2 node.解決方案 下麵連接有環境配置及搭建流程(https://github.com/tencentyun/wafer2-quickstart-nodejs) ,連接是官方的可以點擊 一、配置mysql 資料庫連接參數 打開 server下麵的config.js use ...
  • 資料庫sql優化總結-百萬級資料庫優化方案+數據分析 有三張百萬級數據表 知識點表(ex_subject_point)9,316條數據 試題表(ex_question_junior)2,159,519條數據 有45個欄位 知識點試題關係表(ex_question_r_knowledge)3,156,... ...
  • 摘要: 本文著重介紹 DRDS 執行計劃中各個操作符的含義,以便用戶通過查詢計划了解 SQL 執行流程,從而有針對性的調優 SQL。 DRDS分散式SQL引擎 — 執行計劃介紹 前言 資料庫系統中,執行計劃是對 SQL 如何執行的形式化表示,往往由若幹關係操作符構成,用戶可以通過對應的 EXPLAI ...
  • Oracle簡介Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關係資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關係資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微 ...
  • 返回 "ProxySQL系列文章:http://www.cnblogs.com/f ck need u/p/7586194.html"   1.關於ProxySQL路由的簡述 當ProxySQL收到前端app發送的SQL語句後,它需要將這個SQL語句(或者重寫後的SQL語句)發送給後端的M ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...