主頁 > 資料庫 > mysql

mysql

2021-02-07 07:16:25 資料庫

@

目錄
  • MySQL講解
    • 一.啟動服務
    • 二.MySQL命令之資料庫操作
    • 三. MySQL命令之表操作
    • 四.MySQL語法規范
    • 五.DQL語言(主查詢)
    • 六.DML語言(對表中的資料操作)
    • 七. DDL語言(表欄位操作)

MySQL講解

一.啟動服務

  • 用管理員身份運行命令提示符
停止服務
net stop + 服務名

啟動服務
net start + 服務名

查詢服務器連接所用埠資訊
select @@port;

查詢系統所支持的存盤引擎型別
show engines;

登錄到MySQL服務端查看服務器版本資訊
select version();

未登錄到MySQL服務器端查看服務器版本資訊
mysql --version/--V;

查看默認存盤引擎
show variables like 'default_storage_engine';

二.MySQL命令之資料庫操作

創建資料庫
create database 庫名;

查看當前所有資料庫
show databases;

打開指定的資料庫
use 庫名;

洗掉指定的資料庫
drop database 庫名;

查看當前在哪個資料庫
select database();

查看資料庫的存盤引擎
show variables like 'storage_engine'

查看資料庫的存盤引擎
show variables like '%storage_engine%'

三. MySQL命令之表操作

創建表
create table if not exists 表名

查看當前資料庫的所有表
show tables;

查看其他資料庫的所有表
show tables from 庫名;

查看表結構
desc 表名;
show index from 表名;
show create table 表名 \g

洗掉表
drop table [if exists] 表名;

四.MySQL語法規范

  • 不區分大小寫,但建議關鍵字大寫,表名,列名小寫
  • 建議每條命令用分號結尾
  • 每條命令根據需要,可以進行縮進或換行
  • 注釋
    • 單行注釋:# 或 --格 注釋文字
    • 多行注釋:/.../

MySQL資料型別

資料型別 系統資料型別
整數型 TINYINY / SMALLINT / MEDIUMINT / INT / BIGINT
精確數值型 DECIMAL(M,D) / NUMERIC(M,D)
浮點型 FLOAT / REAL / DOUBLE
位型 BIT
二進制型 BINARY / VARBINARY
字符型 CHAR / VARCHAR / BLOB / TEXT / ENUM / SET
Unicode字符型 NCHAR / NVARCHAR
文本型 TINTTEXT / TEXT / MEDIUMTEXT / LONGTEXT
BLOB型別 TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB
日期時間型 DATETIME / DATE / TIMESTAMP / TIME / YEAR

五.DQL語言(主查詢)

  • 基礎查詢

    • 語法

    select 查詢串列 from 表名;

    • 類似于

    system.out.printLn(列印的東西)

    • 特點
      • 查詢串列可以是
        1. 表中的欄位
        2. 常量值
        3. 運算式
        4. 函式
      • 查詢結果是一個虛數值
      • 起別名
        1. 使用AS

        select 要查詢的欄位 As 別名;

        1. 使用空格

        select 要查詢的欄位 別名;

      • 去重

      select distinct 要查詢的欄位 from 表名;

      • 拼接

      select concat(str1,str2,...) As 別名;

  • 條件查詢

    • 語法

    select 查詢串列 from 表名 where 篩選條件;

    • 篩選條件分類
      • 條件運算子
      >.<.=.!=.<>.>=.<=
      
      • 邏輯運算子
      &&(與) / ||(或) / !(非) / and / or / not
      
      • 模糊查詢
      like / between / and / in / is null / is not null 
      

      like一般與通配符搭配使用
      - 通配符
      1. %:任意多個字符,包含0個字符
      2. _:任意單個字符

  • 排序查詢

    • 語法:
    select * from student
    where [篩選條件]
    order by 排序串列 [asc | desc]
    

支持多欄位排序,中間用,分割

  • 常見函式

    • 概念:類似Java中的方法
    1. 隱藏了實作細節
    2. 提高代碼的重用性
    • 呼叫

    select 函式名() [from 表];

    • 分類
    1. 單行函式

    concat:拼接字串
    length:個數
    ifnull:判斷是否為空

    單行函式:
    	字符函式
    		獲取引數值的位元組個數
    		length
    
    		拼接字串
    		concat
    
    		變大寫
    		upper
    
    		變小寫
    		lower
    
    		截取字串
    		substr/substring
    
    		回傳str2在str1中第一次出現的起始索引
    		instr(str1,str2)
    
    		去掉str2中前后的str1
    		trim(str1 form str2)
    			eg:select trim('a' from 'aaaStudentaaa');
    
    		用指定的字符實作左填充指定長度
    		lpad(str,len,str)
    
    		右填充
    		rpad
    
    		替換
    		replace
    
    	數學函式
    		四舍五入
    		round
    
    		向上取整
    		ceil
    
    		向下取整
    		floor
    
    		截斷
    		truncate()
    
    		取余
    		mod
    		
    	日期函式
    		回傳當前系統日期和時間
    		now
    
    		回傳當前系統的日期,不包含時間
    		curdate
    
    		回傳當前系統的時間,不包含日期
    		curtime
    
    		將日期格式字符轉換成指定格式
    		str_to_date('9-13-2020','%m-%d-%y')
    
    		將日期轉換為字串
    		date_format('2020/11/16','%y年%m月%d日')
    
    		回傳(date1-date2)的天數
    		DATEDIFF(date1,date2)
    
    	其他函式
    		查看MySQL版本號
    		version()
    
    		查看當前資料庫
    		database()
    
    		查看當前用戶
    		user()
    
    	流程控制函式
    		if函式:實作if else的效果
    		case函式:
    		      --switch case的效果
    			語法:(當then后面接的是陳述句的時候,要用';'結尾,值的話就不用)
    			case 要判斷的欄位或運算式
    			when 常量1 then 要顯示的值1或陳述句1
    			when 常量2 then 要顯示的值2或陳述句2
    			...
    			else 要顯示的陳述句n或值
    			end
    		      --多重if
    
  • 分組函式

    • 功能:做統計使用,又稱為統計函式、聚合函式、組函式
    分類:
    	求和
    	sum
    
    	平均值
    	avg
    
    	最大值
    	max
    
    	最小值
    	min
    
    	計算非空的值的個數
    	count
    
    • 特點:
      1. 一般sum、avg處理數值型別的資料
        max、min、count可以處理任何型別
      2. 以上分組函式都忽略null值
      3. 可以和distinct搭配去重
      4. count函式的詳細介紹
        一般用count(*)統計行數
      5. 和分組函式一同查詢的欄位要求是group by后面的欄位
    • 效率:

    MYISAM存盤引擎下,count()效率最高
    innodb存盤引擎下,count(
    )和COUNT(1)效率差不多,但比COUNT(欄位)要高一些

  • 分組查詢

    • 語法:

    select 分組函式,列(要求出現在group by的后面)
    from 表名
    【where 篩選條件】
    【group by 分組串列】
    【order by 子句】

  • 注意:查詢串列必須特殊,要求是分組函式和group by后出現的欄位

  • 特點:

    1. 分組查詢中的篩選條件分為兩類
      分組前篩選:從原始表篩選,放在group by前,用where關鍵字
      分組后篩選:分組后的結果集,放在group by后,用having關鍵字
    2. 分組函式做條件一定放在having子句中
    3. group by子句支持
      單個欄位分組
      多個欄位分組(多個欄位之間用逗號來連接)
      運算式
      函式
    4. 也可以添加排序
  • 連接查詢

    • 含義:又稱為多表查詢,多表連接,當查詢的欄位涉及/來自多個表時
    • 笛卡爾乘積現象:表1 m 行,表2 n 行,結果=m*n行
    • 如何發生:沒有有效的連接條件
    • 如何避免:添加有效的連接條件
    • 分類:
    • 按年代分類

    sql92標準:僅僅支持內連接
    sql99標準【推薦】:支持內連接+外連接(左外、右外)+交叉連接

    • 按功能分類
      • 內連接

        等值連接
        非等值連接
        自連接

      • 外連接

        左外連接
        右外連接
        全外連接

      • 交叉連接
  • 子查詢

  • 分頁查詢

  • union聯合查詢

六.DML語言(對表中的資料操作)

- 查看
select * from 表名;

- 插入
	- 語法一
	> insert into 表名 (欄位名,...) value(值,[約束]),(值,[約束]);
	- 特點
		1. 要求值的型別和欄位的型別一致或兼容
		2. 欄位名和值要匹配
	- 語法二
	> insert into 表名 set=值,...;
	- 語法三
	> insert into 表名 values();

- 修改
	- 語法
	> update 表名 set 欄位=值,欄位=值 [where 篩選條件];

- 洗掉
	- 語法
	> delete from 表名 where id=1;
  • 標識列
    • 又稱為自增長列

    • 含義:可以不用手動的插入值,系統提供默認的序列值

    • 特點

      1. 標識列必須與一個key搭配使用,可以是primary key、foreign key、unique……
      2. 一個表至多一個標識列
      3. 標識列型別只能是數值型
      4. 標識列可以通過:SET auto_increment_increment=3;設定步長
      5. 標識列可以通過手動插入值來設定起始值
    • 創建表時設定標識列

      • 關鍵詞:auto_increment
      查看標識列
      show variables like '%auto_increment%';
      {
      auto_increment_increment:步長
      auto_increment_offset:默認值,MySQL中不支持修改默認值
      }
      

七. DDL語言(表欄位操作)

  • 表的約束
    • 常見約束:六大約束
      非空約束
      not null
      
      默認約束
      default
      
      主鍵約束
      primary key
      
      外鍵約束
      foreign key
      
      唯一性約束
      類似于primary key,可以為空
      unique
      
      檢查約束
      check
      
      
      • 約束可以分為表級約束和列級約束
      • 列級約束,在列后面添加
      • 表級約束

      constraint 約束名 約束型別;

修改表名
alter table 舊表名 rename [to] 新表名;

修改列名/欄位語法規則
alter table 表名 change 原欄位名 新欄位名 新欄位型別;

添加列
alter table 表名 add column 列名 型別 [first | after 欄位名];

修改列型別或約束
alter table 表名 modify column 列名 新型別 [新約束];

洗掉某列
alter table 表名 drop column 列名;

復制舊表的結構
create table if not exists 表名 like 舊表名;

復制舊表的結構和資料
create table if not exists 表名 select 查詢串列 from 舊表名 [where 篩選條件];

### 八.TCL語言(事務控制語言)
- TCL語言
- 通過show engines;來查看MySQL支持的存盤引擎
- 其中innodb支持事務,而myisam,memory等不支持事務
- 事務的屬性/特點:
	- 原子性:一個事務不可再分割,要么全部執行,要么全部不執行
	- 一致性:一個事務執行會使資料從一個一致狀態切換到另一個一致狀態
	- 隔離性:一個事務的執行不受其他事務的干擾
	- 持久性:一個事務一旦提交,則會永久的改變資料庫的資料

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/257344.html

標籤:MySQL

上一篇:資料庫無法查看

下一篇:Redis-第七章節-持久化

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more