mysql 語言學習

整理了一下 mysql 操作語言,不是很全,部分地方也許需要修改,先放上來,有時間再慢慢完善。

一、數據庫操作

連接數據庫

$ sudo mysql [-h ip] -u root -p [-P 3306] 

初始化數據庫

$ mysql_secure_installation

備份數據庫

# 備份一個或多個數據庫
$ sudo mysqldump [options] --databases 數據庫名,... > 備份文件# 備份所有數據庫
$ sudo mysqldump [options] --all-databases > 備份文件# 備份一個或多個表
$ sudo mysqldump [options] 數據庫名 [表名,...] > 備份文件

常用的 options:

  • -u, --user= username :數據庫用戶名。
  • -p, --password[= password]:數據庫密碼。
  • -P, --port= portnumber :指定端口。
  • -h, --host= hostname :指定主機名。
  • -r, --result-file= filename :將導出結果保存到指定的文件中,等同于“>”。
  • -t:只備份數據。
  • -d:只備份表結構。

還原數據庫

$ sudo mysql [-h 主機名] [-P 3306] -u 用戶名 -p 數據庫名 < 已備份文件

二、數據庫系統變量操作

mysql 系統變量有全局變量和會話變量兩類。

  • 全局變量(global variables)的修改只在當前 mysql 服務有效,當 mysql 服務重啟后變量將重新初始化;
  • 會話變量(session variables)的修改只在當前會話中有效,關閉會話并重新打開會話后該變量設置失效。
-- 查看所有全局|會話變量,省略參數則默認為會話變量
mysql> show [global|session] variables;
-- 查看字符集變量
mysql> show variables like '%character%';    
-- 查看密碼規則變量
mysql> show variables like 'validate_password%';
-- 修改密碼策略(0 low,1 medium,2 strong)
mysql> set global validate_password.policy=0;

注意:用 set 修改全局變量,mysql重啟失效;修改會話變量后,關閉會話失效。

三、數據庫用戶管理

mysql 的用戶信息(用戶名、允許訪問的地址、密碼驗證策略、有關權限等等)存儲在 mysql.user 表中。

-- 創建數據庫用戶
mysql> create user '用戶名'@'主機名' identified [with 密碼驗證規則] by '密碼';

主機名表示在哪臺主機上可以登錄 mysql,可以是 ip 地址,并且可以使用 % 通配符。其中:localhost 表示本機,% 通配符則表示任意 ip。
通過 create 創建的用戶沒有任何權限,需要通過 grant 來對用戶授權。

-- 給數據庫用戶賦權
mysql> grant privileges on 數據庫名.數據庫對象名 to '用戶名'@'主機名' [with grant option];

priveleges 表示用戶的操作權限,如 select,insert,update 等,多個權限之間?逗號分開。如果要授予所有的權限則使用 all
數據對象名主要為:表、視圖、存儲過程、存儲函數等。*.*表示所有任意數據庫的任意對象。
with grant option :可選參數,表示該用戶可以給將??擁有的權限授權給別?。

-- 刷新權限,賦權之后通常要刷新權限
mysql> flush privileges;
-- 查看用戶權限
mysql> show grants [for '用戶名'@'主機名'];
-- 撤銷用戶權限,參數與 grant 賦權的參數含義相同
mysql> revoke privileges on 數據庫名.表名 from '用戶名'@'主機名';
-- 修改數據庫用戶
mysql> alter user '用戶名'@'主機名' identified [with 密碼驗證規則] by '密碼';
-- 刪除數據庫用戶
mysql> drop user [if exists] '用戶名'@'主機名';-- 因為數據庫用戶存儲在mysql.user表中,因此可以通過表操作語言來刪除,但記得要調用flush privileges 來刷新權限。
mysql> delete from mysql.user where user='用戶名' and host='主機名';
mysql> flush privileges;

四、數據庫管理

-- 創建數據庫
mysql> create database [if not exists] 數據庫名 [character set 字符集名];-- 顯示所有數據庫
mysql> show databases;-- 選擇數據庫
mysql> use 數據庫名;-- 修改數據庫
mysql> alter database 庫名 character set 字符集名;-- 刪除數據庫
mysql> drop database [if exists] 庫名;

五、表相關語法

-- 創建表
mysql> create table [if not exists] 表名(…字段名 字段類型 [約束],...);-- 查看表結構
mysql> desc table_name;-- 查看所有表
mysql> show tables;-- 添加列
mysql> alter table 表名 add column 列名 類型 [first|after 字段名];-- 修改列類型&約束
mysql> alter table 表名 modify column 列名 新類型 [新約束];-- 修改列名稱
mysql> alter table 表名 change column 舊列名 新列名 類型;-- 刪除列
mysql> alter table 表名 drop column 列名;-- 修改表名
mysql> alter table 表名 rename [to] 新表名;-- 刪除表
mysql> drop table[if exists] 表名;-- 復制表
mysql> create table 表名 like 舊表;-- 復制表結構&數據
mysql> create table 表名 select 查詢列表 from 舊表[where 篩選];-- 創建索引
mysql> create [unique|fulltext|spatial] index index_name[using index_type] on table_name (index_col_name,...)-- 刪除索引
mysql> alter table table_name drop index index_name;-- 查看索引
mysql> show index from table_name;

插入數據語法

-- 插入多行
mysql> insert into 表名(字段名,) values(,);-- 子查詢插入
mysql> insert into 表名 (查詢語句);

刪除數據語法

mysql> delete from 表名 [where 篩選條件][limit 條目數];

修改數據語法

mysql> update 表名 set 字段=,字段=[where 篩選條件];

查詢數據語法

-- 綜合
mysql> select 查詢列表 from1 [別名 連接類型 join2 on 連接條件 where 篩選 group by 分組列表 having 篩選 order by排序列表 limit 起始條目索引,條目數];-- 通配符
mysql> select 查詢列表 from 表名 where 列名 like 'test%'-- 子查詢
mysql> select 查詢列表 from 表名 where 列名 in(子查詢)-- 子查詢為真才有結果
mysql> select 查詢列表 form 表名 where exists (子查詢)

表連接查詢語法

-- 返回兩個表中聯結字段相等的行
mysql> select * from table1 A inner join table2 B on A.id=B.id;-- 左表中的所有記錄和右表中聯結字段
mysql> select * from table1 A left join table2 B on A.id=B.id;相等的記錄-- 右表中的所有記錄和左表中聯結字段相等的記錄
mysql> select * from table1 A right join table2 B on A.id=B.id;

視圖相關語法

-- 創建視圖
mysql> create view 視圖名 as select 語句;-- 刪除視圖
mysql> drop view 視圖名

union集語法

-- 不重復并集
mysql> [SELECT 語句 1] UNION [SELECT 語句 2];-- 重復并集
mysql> [SELECT 語句 1] UNION ALL [SELECT 語句 2];

case語法

select case (列名) when '條件1' then '結果1' when '條件2' then '結果2'[else '結果N']endfrom 表名

六、存儲過程

存儲過程創建的格式為:CREATE PROCEDURE 過程名 ([過程參數[,...]])[特性 ...] 過程體 ,其中過程體是以 BEGIN 作為開始標志,以 END 作為結束標志的,下面進行簡單的演示:

創建存儲過程

mysql> use mysql;                                       --選擇 mysql 數據庫  
mysql> DELIMITER $$                                     --聲明分隔符為 $$ (默認分隔符是分號,聲明 $$ 分隔符后再碰到分號,就不會立即執行語句了)
mysql> CREATE PROCEDURE Proc(IN p1 varchar(32))         --創建存儲過程,過程名為Proc,帶字符型輸入參數 p1-> BEGIN                                            --過程體以關鍵字 BEGIN 開始-> select user,host from user where user=p1;        --過程體語句,查找用戶名為 p1 的用戶-> END                                              --過程體以關鍵字 END 結束-> $$                                               --輸入 $$ 分隔符,執行上面的語句,也就是完成了存儲過程的創建
mysql> DELIMITER ;                                      --將語句的結束符號恢復為分號

調用存儲過程

mysql> SET @p1='root'                                   --因此上面的存儲過程有一個輸入參數,所以先定義一個變量 @p1
mysql> call Proc(@p1);                                  --調用存儲過程
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)

查看存儲過程

mysql> show procedure status where db='mysql';     --查看 mysql 數據庫中所有的存儲過程狀態信息
+-------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db    | Name | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| mysql | proc | PROCEDURE | root@localhost | 2023-12-09 22:03:36 | 2023-12-09 22:03:36 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
+-------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)mysql> select routine_name from information_schema.routines where routine_schema='mysql';    --查看 mysql 數據庫中所有的存儲過程名
+--------------+
| ROUTINE_NAME |
+--------------+
| proc         |
+--------------+
1 row in set (0.00 sec)mysql> SHOW CREATE PROCEDURE mysql.Proc;           --查看某個存儲過程的具體信息

刪除存儲過程

mysql> DROP PROCEDURE IF EXISTS Proc;            --僅當存在時刪除,如果指定的過程不存在,則產生一個錯誤

有關函數

1)數學函數

SQRT(number)                        --求平方根
ABS(number)                         --絕對值
CEILING(number2)                    --向上取整
CONV(number2,from_base,to_base)     --進制轉換
FLOOR(number2)                      --向下取整
FORMAT(number,decimal_places)       --保留小數位數
BIN(decimal_number)                 --十進制轉二進制
HEX (DecimalNumber)                 --十進制轉十六進制,HEX()中還傳入字符串,返回值是其ASC-11碼,如HEX('DEF')返回4142143
GREATEST(x1,x2…)                   --求最大值
LEAST(number , number2 [,..])       --求最小值
MOD(numerator ,denominator)         --求余
POWER(number ,power)                --求指數
RAND([seed])                        --隨機數
ROUND(number,decimals)              --四舍五入,decimals 為小數位數

2)聚合函數

avg() --平均值
count() --個數
min() --最大值
max() --最小值
sum() --求和

3)字符串函數

SPACE(count)                 --生成count個空格
REVERSE(str)                 --字符串反轉
CHARSET(str)                 --返回字串字符集
CONCAT(str [,... ])          --連接字串
LCASE(str )                  --轉換成小寫,也可用lower(str)
UCASE(str )                  --轉換成大寫,也可用UPPER(str )
LEFT (str ,length )          --從str中的左邊起取length個字符
RIGHT(str ,length )          --從str中的右邊起取length個字符
LENGTH (str )                --返回長度
LOAD_FILE (file_name )       --從文件讀取內容
INSTR (str,substring )       --返回substring首次在str中出現的位置,不存在返回0
LOCATE (substring , string [,start_position ] ) --同INSTR,但可指定開始位置
LPAD (str ,length ,pad )     --重復用pad加在string開頭,直到字串長度為length
LTRIM (str )                 --去除前端空格
REPEAT (str ,count )         --重復count次
REPLACE (str ,search_str ,replace_str )           --在str中用replace_str替換search_str
RPAD (str ,length ,pad)      --在str后用pad補充,直到長度為length
RTRIM (str )                 --去除后端空格
STRCMP (str1 ,str2 )         --逐字符比較兩字串大小,返回-1,0,1
SUBSTRING (str , position [,length ])           --從str的position開始,取length個字符

4) 日期時間函數

ADDTIME (date2 ,time_interval )               --將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ )         --轉換時區
CURRENT_DATE ( )                              --當前日期
CURRENT_TIME ( )                              --當前時間
CURRENT_TIMESTAMP ( )                         --當前時間戳
DATE (datetime )                              --返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type )   --在date2中加上日期或時間
DATE_FORMAT (datetime ,FormatCodes )          --使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type )   --在date2上減去一個時間
DATEDIFF (date1 ,date2 )                      --兩個日期差
DAY (date )                                   --返回日期的天
DAYNAME (date )                               --英文星期
DAYOFWEEK (date )                             --星期(1-7) ,1為星期天
DAYOFYEAR (date )                             --一年中的第幾天
EXTRACT (interval_name FROM date )            --從date中提取日期的指定部分
MAKEDATE (year ,day )                         --給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second )              --生成時間串
MONTHNAME (date )                             --英文月份名
NOW ( )                                       --當前時間
SEC_TO_TIME (seconds )                        --秒數轉成時間
STR_TO_DATE (string ,format )                 --字串轉成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 )              --兩個時間差
TIME_TO_SEC (time )                           --時間轉秒數]
WEEK (date_time [,start_of_week ])            --第幾周
YEAR (datetime )                              --年份
DAYOFMONTH(datetime)                          --月的第幾天
HOUR(datetime)                                --小時
LAST_DAY(date)                                --date的月的最后日期
MICROSECOND(datetime)                         --微秒
MONTH(datetime)                               --月
MINUTE(datetime)                              --分返回符號,正負或0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210466.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初出茅廬的小李博客之TobudOS移植到EVB_AIoT開發板

本博客參考教程&#xff1a; https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md 介紹一下EVB_AIoT開發板 這個開發板是由TobudOS開源社區聯合意法半導體、南京厚德物聯網設計的一款高性能IoT開發平臺&#xff0c;主控芯片是S…

SystemVerilog學習(0)——目錄與傳送門

一、驗證導論 SystemVerilog學習&#xff08;1&#xff09;——驗證導論-CSDN博客文章瀏覽閱讀403次。SystemVerilog自學&#xff0c;驗證系統概述&#xff0c;什么是SVhttps://blog.csdn.net/apple_53311083/article/details/133953016 二、數據類型 SystemVerilog學習&…

含掩膜mask的單通道灰度圖轉化為COCO數據集格式標簽的json文件(python)

輸入&#xff1a;單通道的灰度圖&#xff0c;灰度圖內含掩膜mask 目標&#xff1a;把灰度圖中的語義mask轉換為COCO數據集格式的json文件 輸出&#xff1a;COCO數據集格式的json文件 期間遇到的問題&#xff1a; 發現有的掩膜內部存在其他類別的掩膜&#xff0c;即mask內部還套…

枚舉類簡單使用

1、創建一個枚舉 public enum DemoEnum {// 引號里面存放的是下面所創建的屬性&#xff0c;如果不創建屬性則不能輸入引號里的值的NORMAL("正常"),DESTORY("廢棄");private String label;private DemoEnum(String label){this.label label;}public Strin…

使用.net core MVC實現圖片上傳下載

今天閑來無事&#xff0c;復習復習 1、上傳 上傳界面 <div class"text-center"><h1 class"display-4">Welcome</h1><form method"post" enctype"multipart/form-data" asp-controller"Home" asp-ac…

<HarmonyOS主題課>三方庫【課后考核】

【習題】三方庫 判斷題 三方組件是開發者在系統能力的基礎上進行了一層具體功能的封裝&#xff0c;對其能力進行拓展的工具 。 正確(True) 可以通過ohpm uninstall 指令下載指定的三方庫 錯誤(False) lottie使用loadAnimation方法加載動畫。 正確(True) 單選題 通過ohpm安…

@FunctionalInterface、Lambda表達式和方法引用

知識不回顧是會被遺忘的&#xff01; 網上看了一些相關文章&#xff0c;這里記錄一下&#xff0c;僅供參考 Java語言從JDK1.8開始引入了函數式編程。 函數式編程的核心特點是&#xff0c;函數作為一段功能代碼&#xff0c;可以像變量一樣進行引用和傳遞&#xff0c;以便在有需…

stm32 使用18B20 測試溫度

用18b20 測試溫度是非常常用的&#xff0c;不過18B20的調試不是這么容易的&#xff0c;有些內容網上很多的&#xff0c;不再重復說了&#xff0c;我先把波形說一下&#xff0c;再說程序部分&#xff1a; 整個都溫度數據的順序是&#xff1a; 1.700uS的低電平復位并測試18B20的…

【素書學習】人生境界的四個層次

馮友蘭先生認為人生境界有四個層次&#xff1a; 1、自然境界。總是依照社會習慣或本性而為&#xff0c;完全隨天地運轉而運轉&#xff0c;無明了的目的&#xff0c;不明所做的意義。日出而作&#xff0c;日落而息&#xff0c;不會去過多地思考此外的事情。不知何為苦、何為樂&…

mfc110u.dll丟失的解決方法,mfc110u.dll丟失原因是什么?

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“mfc110u.dll文件丟失”。那么&#xff0c;mfc110u.dll是什么&#xff1f;為什么會出現丟失的情況呢&#xff1f;本文將為您詳細介紹mfc110u.dll文件的含義、丟失原因以及解決方法。 首先&…

MyBatis進階之結果集映射注解版

文章目錄 注解實現結果集映射注解實現關系映射常用功能注解匯總 注解實現結果集映射 注意 配置結果集映射&#xff0c;只用看 SQL 執行結果&#xff0c;不看 SQL 語句&#xff01; 注意 由于注解在映射結果集上沒有實現 <resultMap> 的 100% 功能&#xff0c;因此&#x…

LeetCode763. Partition Labels

文章目錄 一、題目二、題解 一、題目 You are given a string s. We want to partition the string into as many parts as possible so that each letter appears in at most one part. Note that the partition is done so that after concatenating all the parts in orde…

java 有一個N位數字,各位加起來不超過M。

java 有一個N位數字&#xff0c;各位加起來不超過M。M<1000000 import java.util.*; //1:無需package //2: 類名必須Main, 不可修改public class Main { public static void main(String[] args) {Scanner scan new Scanner (System.in);int n scan.nextInt();int m scan…

【車載開發系列】Visio工具使用小技巧

【車載開發系列】Visio工具使用小技巧 【車載開發系列】Visio工具使用小技巧 【車載開發系列】Visio工具使用小技巧一. Word中編輯Visio技巧二. Word中插入visio圖形的問題三. 總結 一. Word中編輯Visio技巧 本節主要介紹了Microsoft Word中編輯Visio圖形的具體方法。 在 Word…

鴻蒙(HarmonyOS)應用開發——從網絡獲取數據(題目答案)

判斷題 1.在http模塊中&#xff0c;多個請求可以使用同一個httpRequest對象&#xff0c;httpRequest對象可以復用。 錯誤(False) 2.使用http模塊發起網絡請求后&#xff0c;可以使用destroy方法中斷網絡請求。 正確(True) 3.Web組件onConfirm(callback: (event?: { url: …

單臂路由與三層交換機

單臂路由 劃分VLAN后同一VLAN的計算機屬于同一個廣播域&#xff0c;同一VLAN的計算機之間的通信是不成問題的。然而&#xff0c;處于不同VLAN的計算機即使是在同一交換機上&#xff0c;它們之間的通信也必須使用路由器。 圖&#xff08;a&#xff09;是一種實現VLAN間路由的方…

人工智能原理復習

緒論 人工智能原理復習–緒論 知識表示 人工智能原理復習–知識表示&#xff08;一&#xff09; 人工智能原理復習–知識表示&#xff08;二&#xff09; 確定性推理 人工智能原理復習–確定性推理 不確定性推理 人工智能原理復習–不確定推理 搜索策略 人工智能原理復…

光伏連接器

光伏連接器 電子元器件百科 文章目錄 光伏連接器前言一、光伏連接器是什么二、光伏連接器的類別三、光伏連接器的應用實例四、光伏連接器的作用原理總結前言 常用的光伏連接器類型包括MC4、MC3、Amphenol和Tyco等,它們根據連接方式、電氣性能和標準規范等因素進行設計和選擇…

【原創】【一類問題解決】有正定陣A,讓求可逆陣R使得A=RTR(或A=RRT)的策略

【問題背景】有正定陣A&#xff0c;讓求可逆陣R使得ARTR&#xff08;或ARRT&#xff09;的策略 【法一】代數法&#xff1a;轉二次型配方 【實操】構造A的二次型fxTAx&#xff0c;將f在可逆變換xPy下配方為規范型yTy(即yTEyy1y2y3)〔即相應配方系數陣為P&#xff08;-1&#x…

電腦中環境變量的設置方法

環境變量是在操作系統中一個具有特定名字的對象&#xff0c;它包含了一個或者多個應用程序所將使用到的信息。例如Windows和DOS操作系統中的path環境變量&#xff0c;當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時&#xff0c;系統除了在當前目錄下面尋找此程序外&a…