MYSQL 筆記

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

本人是一名學生,正在學習過程中,所以筆記涵蓋的還不是很廣,不過也算基本夠用,希望以後能更加完善。 登陸資料庫 mysql -h 主機名 -u 用戶名 -p > mysql -u root -p 列出資料庫 show databases; 選擇資料庫 use 資料庫名; 查看當前資料庫 select ...


本人是一名學生,正在學習過程中,所以筆記涵蓋的還不是很廣,不過也算基本夠用,希望以後能更加完善。

登陸資料庫

mysql -h 主機名 -u 用戶名 -p

> mysql -u root -p

列出資料庫

show databases;

選擇資料庫

use 資料庫名;

查看當前資料庫

select databases;

查看資料庫定義

show create database 資料庫名;

創建資料庫

create databases 資料庫名;

default 預設約束

collate 字元序

(例 CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci)

修改資料庫

alter databases 資料庫名;

刪除資料庫

drop database <資料庫名>;

 

數據備份:

備份一個資料庫:

 mysqldump -u username -p dbname table1 table2 ...> path/backupName.sql

(dbname為資料庫文件名如:word.sql,table1,table2為參數表名,當沒有表名時,將備份整個資料庫,path/to/your/dictionary為你要備份到什麼地方的路徑)

備份多個資料庫

mysqldump -u username -p  --databases  dbname1  dbname2...> path/backupName.sql

備份所有資料庫

 mysqldump -u username -p  --all-databases  > path/backupName.sql

直接複製整個資料庫目錄,簡單粗暴:

show variables like '%datadir%';

數據恢復

 1. mysql -uusername  -p  dbname  < path/to/your/dictionary

  2.進入mysql後選擇資料庫 source 後面直接接路徑

 

 

顯示表

show tables;

顯示數據表的屬性

show columns from 數據表;

查看表的結構

desc 表名;

查看表的定義結構

show create table 表名;

創建數據表

create table table_name (column_name column_type);

預設數據

default

(建表示例:

    create table customers(

       id int not null auto_increment,

       name char(20) not null,

       address char(50) null,

       city char(50) null,

       age int not null,

       love char(50) not null default 'No habbit',

       primary key(id)

     )engine=InnoDB DEFAULT CHARSET=utf8;

     

  #引擎類型,多為engine = InnoDB,如果省略了engine=語句,則使用預設的引擎(MyISAM)

  #預設字元集,DEFAULT CHARSET,一般為utf8或GBK。

)

刪除數據表

drop table table_name ;

重命名數據表

rename table 表名 to 新表名

更新表(alter table 表名)

添加列

alter table 表名 add 列名 數據類型

刪除列

alter table 表名 drop column 列名

修改列名

alter table 表名 change 列名 新列名 數據類型

修改列的數據類型

alter table 表名 modify 列名 數據類型

 

 

自動編號(必須與主鍵組合使用)

AUTO_INCREMENT

主鍵(主鍵保證記錄的唯一性,主鍵自動為NOT NULL)

PRIMARY KEY

外鍵(指定該列記錄屬於主表中的一條記錄,參照另一條數據)

foreign key

(

外鍵:刪除和更新有四種設置方式

(1)cascade:級聯,當父表更新、刪除,子表會同步更新和刪除

(2)set null:置空,當父表更新、刪除的時候,字表會把外鍵欄位變為null,所以這個時候設計表的時候該欄位要允許為null,否則會出錯

(3)restrict:父表在刪除和更新記錄的時候,要在子表中檢查是否有有關該父表要更新和刪除的記錄,如果有,則不允許刪除個更改

(4)no action:和restrict一樣

導入表時外鍵建立不了,查看引擎是否為innodb,(INNODB支持外鍵和事務)

修改表的存儲引擎為INNODB

ALTER TABLE 表名 ENGINE='INNODB'

)

唯一約束(指定某列和幾列組合的數據不能重覆)

UNIQUE

非空約束(指定某列不為NULL)

not null

預設約束

DEFAULT

 

 

插入數據

insert into 表名(列名1,列名2……)values ( 數據1,數據2……)

insert into 表名 values (數據1,數據2……)

批量插入

insert into 表名 values (數據1,數據2……),(數據1,數據2……),(數據1,數據2……)

刪除數據

delete from 表名 [where 條件] (沒有條件則刪除整個表)

truncate table 表名:先刪除表再重建表 (刪除表)

更新數據

update 表名 set 列名=值,列名=值 [where 條件];

查詢數據

select[distinct][*][列名1,列名2] from 表名 where 條件 group by…… having 條件過濾 order by 排序;

去重

distinct

限制結果

limit

完全限製表名

表名+.

排序(order by)

asc:ascend 升序(預設)

desc:descend 降序

分組

group by

合併結果

union

過濾數據

 

WHERE子句

=   等於

<>  不等於

!=  不等於

<   小於

<=  小於等於

>   大於

>=  大於等於

between……and……  指定兩個值之間

is null  為空值

AND  兩個條件同時滿足   OR  滿足其中一條

(AND 和 OR 可以組合使用,AND優先順序高於OR)

IN 指定條件範圍 (例 IN(1002,1003))

Not 否定後跟條件關鍵字 ====> not in,not like...

分組數據

group by 分組數據

having 過濾分組

having和where的區別

   having 與where使用方式類似,在分組之後使用

   where是判斷數據從磁碟讀入記憶體的時候

   having是判斷分組統計之前的所有條件

   having子句中可以使用欄位別名,而where不能使用

   having能夠使用統計函數,但是where不能使用

 

通配符

LIKE 操作符 =====> select prod_id from products where prod_name like '%a-';

% 任意字元出現任意次數

_ 單個字元

正則表達式

REGEXP 操作符

.   任意一個字元

a|b   兩個串之一(或,類同於or)

[a,b,c]  或 (例[123]匹配1或2或3,等同於[1|2|3]的縮寫)

[^……] 非或 不匹配括弧中的內容

[a-b] 範圍區間 (例[1-3] 匹配1到3之間的數 [a-z]匹配任意字元)

BINARY 區分大小寫

\\  特殊字元需要用\\引導 (例如查詢 - 則輸入 \\-)

元字元

\\f 換頁

\\n 換行

\\r 回車

\\t 製表

\\v 縱向製表

字元類

[:alnum:]        文字數字字元

[:alpha:]        文字字元

[:blank:]        空白字元

[:cntrl:]        控制字元

[:digit:]        數字字元

[:graph:]        圖形字元

[:lower:]        小寫文字字元

[:print:]        圖形或空格字元

[:punct:]        標點字元

[:space:]        空格、製表符、新行、和回車

[:upper:]        大寫文字字元

[:xdigit:]       十六進位數字字元

(^)字元

匹配字元串的開始位置,如“^a”表示以字母a開頭的字元串。

($)字元

匹配字元串的結束位置,如“X$”表示以字母X結尾的字元串。

(.)字元

這個字元就是英文下的點,它匹配任何一個字元,包括回車、換行等。

[[:<:]]     詞的開始

[[:>:]]     詞的結尾

重覆字元

(*)字元

星號匹配0個或多個字元,在它之前必須有內容。如:

(+)字元

加號匹配1個或多個字元,在它之前也必須有內容。加號跟星號的用法類似,只是星號允許出現0次,加號則必須至少出現一次。

(?)字元

問號匹配0次或1次。

{} 區間

{n} 指定數目的匹配

{n,} 不少於指定數目的匹配

{n,m} 匹配數目的範圍(m不超過255)

這是一個更全面的方法,它可以實現前面好幾種保留字的功能

a*可以寫成a{0,}

a+可以寫成a{1,}

a?可以寫成a{0,1}

計算欄位

+ 加

- 減

* 乘

/ 除

(select後可以跟計算公式)

Concat() 拼接欄位

(例 mysql> SELECT CONCAT(’My’, ‘S’, ‘QL’);  ---> ‘MySQL’)

函數

聚集函數

AVG()  返回某列的平均值

COUNT()  返回某列的行數

MAX()  返回某列的最大值

MIN()  返回某列的最小值

SUM()  返回某列值之和

 

連接

INNER JOIN(內連接,或等值連接):獲取兩個表中欄位匹配關係的記錄。

LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。

RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。

 

視圖(視圖是虛擬表,本身不存儲數據,而是按照指定的方式進行查詢。)

-- 1.創建視圖

create view 視圖名 as  sql語句;

--2.刪除視圖

Drop view 視圖名;

--3.修改視圖

ALTER VIEW 視圖名稱 AS SQL語句

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 我是19年3月轉向使用Linux進行開發,沒啥特別的理由,就是覺得使用Linux系統是每個程式員必須經歷的吧。 選擇版本 一開始,在網上瞭解到現在流行的Linux發行版有基於Redhat的,還有基於debian的,就簡單瞭解一下而已,太冷門的系統對新手也不友好。 我推薦的版本就Ubuntu和Deep ...
  • 多表查詢: 顯示內連接: select 欄位列表 from 表名1 inner join 表名1 on 條件 * inner 可忽略 select * from student inner join class on student.clas_id=class.id 隱式內連接: 使用where: ...
  • (一)neo4j安裝 neo4j有社區版本和企業版,社區版本是免費的,企業版本是收費的。在linux上安裝如下步驟: 1、將下載的neo4j-enterprise-3.4.0-unix.tar.gz包上傳到linux伺服器,並解壓。 2、設置$NEO4J_HOME也就是解壓圖資料庫安裝包所在的目錄到 ...
  • 本系列筆記是在看完《neo4j權威指南》基礎上做的記錄。方便於自己後面查閱!! 1.圖庫介紹 圖資料庫(Graph Database)是基於圖論實現的一種新型NoSQL資料庫。它的數據存儲結構和數據的查詢方式都是以圖論為基礎的。圖論中圖的基本元素為節點和邊,在圖資料庫中對應的就是節點和關係。在圖數據 ...
  • 1.起因: 需要導入一個sql文件,發現死活導不進去.當執行到這一句時,就有問題.經過一番搜索,原來是我的資料庫版本(原先Mysql版本5.5)低了,而支持該語句的版本應該是至少要5.7.那我索性就去Mysql官網去下載了個最新版本的(8.0.15). 2.過程: 那麼問題來了:有兩個解決方案.1. ...
  • 關於視圖的用法以及作用。 作用一: 提高了重用性,就像一個函數。如果要頻繁獲取user的name和goods的name。就應該使用以下sql語言。示例: select a.name as username, b.name as goodsname from user as a, goods as b ...
  • 背景 從mysql.slow_log 獲取慢查詢日誌很慢,該表是csv表,沒有索引。 想添加索引來加速訪問,而csv引擎不能添加索引(csv引擎存儲是以逗號分割的文本來存儲的),只能改存儲引擎來添加索引了 mysql.slow_log表能改成myisam,不能改成innodb mysql.gener ...
  • 元欄位是ES為每個文檔配置的內置欄位, 主要用於ES內部相關操作. ES有多種類型的元欄位, 在使用和提高性能方面有很強大的地方, 這篇文章列舉常用元欄位的功能和使用方法, 包括_index、_type、_source、_routing等, 歡迎交流吖~ ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...