Mysql中視圖的使用以及常見運算符的使用示例和優先級

場景

基礎知識回顧:mysql中視圖的基礎使用以及常見運算符的使用示例。

注:

博客:
霸道流氓氣質-CSDN博客

實現

Mysql中視圖的使用

視圖的創建

CREATE VIEW stu_view AS
SELECT * FROM bus_student;

視圖查詢

SELECT * FROM stu_view;

查看視圖基本信息

SHOW TABLE STATUS LIKE 'stu_view';

執行結果顯示,表的 Comment 的值為 VIEW 說明該表為視圖,其他信息為 NULL 說明這是一個虛表。

查看視圖詳細信息

執行結果顯示視圖的名稱、創建視圖的語句等信息

SHOW CREATE VIEW stu_view;

修改視圖

使用 CREATE OR REPLACE VIEW 語句可以修改視圖。當視圖存在時可以對視圖進行修改,當視圖不存在時可以創建視圖。

CREATE OR REPLACE VIEW stu_view AS
SELECT id,name,age FROM bus_student;

除了可以使用 CREATE OR REPLACE 修改視圖以外,用戶還可以使 ALTER 修改

ALTER VIEW stu_view AS
SELECT id,name FROM bus_student;

更新視圖

CREATE OR PLAC ALTER 主要是對視圖的結構進行修改,其實在 MySQL 中還可以對視圖內

容進行更新,也就是對視圖進 UPDATE 操作,通過視圖增加、刪除、修改數據表中的數據,當然對視圖

的更新操作實際上是對數據表進行操作

UPDATE stu_view SET name='公眾號:霸道的程序猿' WHERE id =1;

當視圖中包含以下內容時視圖的更新操作不能被執行

視圖中不包含基表中被定義為非空的列?

在定義視圖的 SELECT 語句后的字段列表中使用了數學表達式。

在定義視圖的 SELECT 語句后的字段到表中使用了聚合函數。

在定義視圖的 SELECT 語句中使用了 DISTINCT UNION TOP GROUP BY HAVING 子句

注意:雖然修改視圖的方法有很多,但不建議對視圖頻繁修改,一般將視圖作為虛擬表未完成查詢操作

刪除視圖

DROP VIEW IF EXISTS stu_view;

Mysql 常用的運算符

算數運算符

CREATE TABLE test1(a INT);
INSERT INTO test1 VALUES(10);
SELECT a,a+10,a-1+2,a+10.5,a*2,a/2,a/3,a%3,a/0 FROM test1;

運行結果

10?20?11?20.5?20?5.0000?3.3333?1 NULL

比較運算符=

SELECT5=6,'8'=8,'0.02'=0,'badao'='badao',(1+6)=(2+5),NULL=NULL;

運行結果

0?1?0?1?1?

-- 在進行數值比較時有以下規則
-- 若有一個或兩個操作數為 NULL,則比較運算的結果為 NULL
-- 若同一個比較運算中的兩個操作數都是字符串,則按照字符串進行比較。
-- 若兩個操作數均為整數,則按照整數進行比較
-- 若一個字符串和一個數字進行相等判斷,則 MySQL可以自動將字符串轉換為數字。

安全等于運算符<=>

具有=運算符的所有功能,不同的是<=>可以用來判斷 NULL 值。當兩個操作數均為

NULL 其返回值為1,而不為 NULL; 當其中一個操作數為 NULL 時,其返回值為0,而不為 NULL

SELECT5<=>6,'8'<=>8,'0.02'<=>0,'badao'<=>'badao',(1+6)<=>(2+5),NULL<=>NULL;

運行結果

0?1?0?1?1?1

不等于運算符<> 或者!=

用來判斷左邊的操作數是否小于等于右邊的操作數,如果小于或等于,返回值為1 ,否則返回值0

注意<=不能用于判斷空值

SELECT'badao'<='badao',5<=6,8<=8,8.8<=8,(1+2)<=(1+3),NULL<= NULL;

運行結果

1?1?1?0?1?NULL

小于運算符<?

SELECT 'badao'<'badao',5<6,8<8,8.8<8,(1+2)<(1+3),NULL<NULL;

運行結果

0?1?0?0?1?NULL

大于或等于運算符>=

SELECT'badao'>='badao',5>=6,8>=8,8.8>=8,(1+2)>=(1+3),NULL>=NULL;

運行結果

1?0?1?1?0?NULL

大于運算符>

SELECT 'badao'>'badao',5>6,8>8,8.8>8,(1+2)>(1+3),NULL>NULL;

運行結果

0?0?0?1?0?NULL

IS NULL 、IS NOT NULL 運算符

SELECT NULL IS NULL,ISNULL(NULL),ISNULL(2),6 IS NOT NULL,NULL IS NOT NULL;

運行結果

1?1?0?1?0

BETWEEN AND 運算符

SELECT 6 BETWEEN 1 AND 10,10 BETWEEN 1 AND 5;

運行結果

1?0

LEAST運算符

返回最小值 假如任意一個自變量為 NULL ,返回值為 NULL。

SELECT LEAST(1,2,3),LEAST('a','b','c'),LEAST(100,NULL);

運行結果

1?a? NULL

GREATEST 運算符

返回最大值,假如任意1個變量為NULL,返回值為 NULL

SELECT GREATEST(1,2,3),GREATEST('a','b','c'),GREATEST(100,NULL);

運行結果

3? c? NULL

IN NOT IN 運算符

IN 運算符用來判斷操作數是否為 IN 列表中的-個值,如果是,返回值為 1,否則返回值為0

NOT IN 運算符用來判斷操作數是否為 IN 列表中的一個值,如果不是,返回值為1 否則返回值為0

SELECT 2 IN (2,4,'AA'),'A' IN (3,'DD');
-- 1? 0
SELECT 2 NOT IN (2,4,'AA'),'A' NOT IN (3,'DD');
-- 0 1

LIKE 運算符

LIKE 運算符用來匹配字符串, 其語法格式為 expr LIKE 匹配條件 。如果 expr 足匹配條件,

返回值 TRUE 如果不匹配 返回 FALSE。若 expr 或匹配條件中 的任何一個為 NULL ,則為NULL

%配任何字符, 甚至包括零字符。

_只能匹配一個字符。

SELECT 'BADAO' LIKE 'BADAO','BADAO' LIKE 'BADA_','BADAO' LIKE '%O','BADAO' LIKE 'B____','B' LIKE NULL;
-- 1?1?1?1?NULL

REGEEXP 運算符

-- REGEXP 算符用來匹配字符串,其語法格式為“expr REGEXP 匹配條件”。如果 expr 滿足匹配條件,
-- 返回1:如果不滿足, 返回0。若 expr 或匹配條件中的任意個為 NULl 結果為 NULL
-- REGEXP 算符在進行匹配時常用下面幾種通配符。
-- (1)^:匹配以該字符后面的字符開頭的字符串
-- (2)$:匹配以該字符前面的字符結尾的字符串
-- (3).:匹配任何一個單字符
-- (4)[...]:匹配方括號內的任何字符 例如[abc]匹配a、b、c。 為了指定字符的范圍,使用[-]例如
-- [a-z]匹配任意字母,而[0-9]匹配任意數字
-- (5)*:匹配零個或多個在它前面的字符 例如,"x*"匹配任意數量'x'字符,"[0-9]*"匹配任意數量
-- 的數字,而".*"匹配任意數量的任意字符

SELECT 'BADAO' REGEXP '^B','BADAO' REGEXP 'O$','BADAO' REGEXP '.DAO','BADAO' REGEXP '[AB]'
-- 1?1?1?1

邏輯運算符

邏輯非運算符NOT 或者 !

邏輯非運算符 NOT 或者 ! 當操作數為0時返回值為1, 當操作數為1時返回值為0,當操作數NULL 時返回值為 NULL

SELECT NOT 6,NOT(6-6),NOT -6,NOT NULL,NOT 6+6;
-- 0 1 0 NULL 0
SELECT !6,!(6-6),!-6,!NULL,!6+6;
-- 0 1 0 NULL 6

NOT 和 !的優先級不同,NOT的優先級低于+,!的優先級高于+

邏輯與運算符AND 或者 &&

SELECT 6 AND -6,6 AND 0,6 AND NULL,0 AND NULL;
-- 1 0 NULL 0
SELECT 6 && -6,6 && 0,6 && NULL,0 && NULL;
-- 1 0 NULL 0

邏輯或運算符OR 或者 ||

SELECT 6 OR -6,6 OR 0,6 OR NULL,0 OR NULL;
-- 1 1 1 NULL
SELECT 6 || -6,6 || 0,6 || NULL,0 || NULL;
-- 1 1 1 NULL

XOR 邏輯異或運算符

當任意一個操作符為NULL 時返回值為NULL;對于非NULL的操作數,如果兩個操作數都是非零值或者都是零值,則返回0

如果一個為零值,一個為非零值,則返回1

SELECT 6 XOR 6,0 XOR 0,6 XOR 0,6 XOR NULL,6 XOR 6 XOR 6;
-- 0 0 1 NULL 1

位運算符

按位或運算符 |

按位或運算符實際是將參與運算的兩個數據接對應的二進制數進行邏輯或運算,對應的二進制位有一個或兩個為1 ,

則該位的運算結果為1 ,否則為0

SELECT 8|12,6|4|1;

-- 12 7
-- 10 的二進制數為 1000, 12 二進制數為 1100 在接位或之后結果為 1100 ,即整數 12;
-- 6的二進制數0110, 4的二進制數為 0100, 1的二進制數為 0001 ,在按位或之后結果為 0111 ,即整數7

按位與運算 &

按位與運算符實際是將參與運算的兩個操作數接對應的二進制數逐位進行邏輯與運算 對應的二進制

位都為1,則該位的運算結果為1,否則為0

SELECT 8&12,6&4&1;
-- 8 0

按位異或運算符^

接位異或運算符實際是將兩個數據按對應的二進制數逐位進行邏輯異或運算,

當對應的二進制數不同時對應位的結果才為1, 如果兩個對應位數都為0或都為l,則對應位的運算結果為0

SELECT 8^12,6^4^1;
-- 4 3

按位左移運算符<<

按位左移運算符<<的功能是讓指定二進制數的所有位都左移指定的位數。在左移指定位數之后 左邊

高位的數值將被移出并丟棄,右邊低位空出的位置用0補齊

語法格式為a<<n,這里的n指定值a移動的位置。

SELECT 6<<2,8<<1;
-- 24 16
-- 6的二進制數為 00000110 ,左移兩位之后變成 00011000 ,即十進制數24; 8的二進制數為 00001000,
-- 左移一位之后變成 00010000 ,即十進制16

按位右移運算符>>

按位右移運算符>>的功能是讓指定二進制數的所有位都右移指定的位數。

在右移指定位數之后,右邊低位的數值將被移出并丟棄,左邊高位空出的位置用0補齊。

其語法格式為a>>n,這里的n指定值a要移動的位置。

SELECT 6>>2,8>>2;
-- 1 2
-- 6的二進制數為 00000110 ,右移一位之后變成 00000011 ,即十進制數3;8的二進制數為 00001000,
-- 右移兩位之后變成 00000010 即十進制數2

按位取反運算符~

按位取反運算符實際是將參與運算的數據接對應的二進制數逐位反轉, 1取反后變為0, 0取反后變1

SELECT 6&~2;
-- 4
-- 對于邏輯運算 由于按位取反運算符“~”的級別高于接位運算符“&”, 因此先對2進行取
-- 反操作,取反的結果為 1101;然后再與十進制數6進行運算,結果為 0100 即整數4

Mysql中運算符的優先級

按照優先級從低到高

-- 1、== :=
-- 2、|| OR
-- 3、XOR
-- 4、&&、AND
-- 5、NOT
-- 6、BETWEEN? CASE? WHEN THEN ELSE
-- 7、= <=> >= > <= < <> != IS LIKE REGEXP IN
-- 8、|
-- 9、&
-- 10、<< >>
-- 11、- +
-- 12、* / %
-- 13、^
-- 14、-(負號) ~
-- 15、!

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

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

相關文章

澳大利亞媒體發稿:怎樣用圖表提高易讀性?-華媒舍

媒體發稿的可讀性變得尤為重要。讀者們不會再有時間與耐心去閱讀文章繁瑣的文本&#xff0c;他們更喜歡簡潔明了的信息展現形式&#xff0c;在其中圖表是一種極為高效的專用工具。下面我們就詳細介紹怎么使用圖表提高澳大利亞新聞媒體發稿的可讀性&#xff0c;以適應讀者的需要…

java 柵欄(CyclicBarrier)

Java中的柵欄&#xff08;CyclicBarrier&#xff09;是一種用于協調多個線程并發工作的同步輔助類。與CountDownLatch不同&#xff0c;CyclicBarrier允許一組線程相互等待&#xff0c;直到所有線程都到達一個共同的屏障點&#xff08;barrier&#xff09;后&#xff0c;才繼續執…

CSS 【詳解】樣式選擇器(含ID、類、標簽、通配、屬性、偽類、偽元素、Content屬性、子代、后代、兄弟、相鄰兄弟、交集、并集等選擇器)

CSS 樣式選擇器&#xff0c;用于選中頁面中的 html 元素&#xff0c;以便添加 CSS 樣式。 按渲染性能由高到低 依次是&#xff1a; ID 選擇器 #id 通過元素的 id 屬性選中元素&#xff0c;區分大小寫 <p id"p1" >第一段</p>#p1{color: red; }但不推薦使…

【LinuxC語言】手撕Http之處理POST請求

文章目錄 前言聲明POST的組成讀取POST信息讀取消息體長度讀取消息體解析消息體How to use?總結前言 在互聯網的世界中,HTTP協議無疑是最重要的協議之一。它是Web的基礎,支持著我們日常生活中的大部分在線活動。盡管有許多現成的庫可以處理HTTP請求,但了解其底層工作原理是…

全面解析:兒童編程等級考試及其區別

目錄 1. 前言2. 兒童編程等級考試的重要性3. 兒童編程等級考試的特點4. 兒童編程等級考試4.1 非專業級軟件能力認證(CSP-J/S)4.2 GESP編程能力等級認證4.3 青少年編程能力等級測試(CPA)4.4 全國青少年軟件編程等級考試4.5 全國青少年編程能力等級考試(PAAT)1. 前言 近年來…

【學習筆記】Mybatis-Plus(四):MP中內置的插件

內置插件 目前MP已經存在的內部插件包括如下&#xff1a; 插件類名作用PaginationInnerInterceptor分頁插件。可以代替以前的PageHelperOptimisticLockerInnerInterceptor樂觀鎖插件。用于冪等性操作&#xff0c;采用版本更新記錄DynamicTableNameInnerInterceptor動態表名Te…

【Rust】Cargo介紹

一、Cargo簡介 Cargo 是Rust語言的包管理工具&#xff0c;它幫助我們管理我們項目的依賴。做js開發的同學應該了解nodejs的包管理工具npm&#xff0c;Cargo和npm做的事情是一樣的。C和C的同學可能對這個就比較陌生了&#xff0c;C/C語言沒有統一的依賴管理工具&#xff0c;各個…

Spring中常見知識點及使用

Spring Framework 是 Java 生態系統中最流行的開源框架之一&#xff0c;它提供了一系列強大的功能&#xff0c;用于構建企業級應用。以下是一些常見的 Spring 知識點及其使用方法&#xff1a; 1. 依賴注入&#xff08;Dependency Injection&#xff09; 依賴注入是 Spring 的…

【SpringCloud應用框架】Nacos集群架構說明

第六章 Spring Cloud Alibaba Nacos之集群架構說明 文章目錄 前言一、Nacos支持三種部署模式二、集群部署說明三、預備環境 前言 到目前為止&#xff0c;已經完成了對Nacos的一些基本使用和配置&#xff0c;接下來還需要了解一個非常重要的點&#xff0c;就是Nacos的集群相關的…

【芯片制造】【問題整理】明場檢測和暗場檢測

背景&#xff1a; 什么是明場檢測和暗場檢測 主要功能&#xff1a; 1、在明場檢測中&#xff0c;光源直接照射到樣品表面&#xff0c;透射光或反射光被收集并成像。樣品上的顆粒、劃痕、凹坑會改變光的反射和透射&#xff0c;形成對比&#xff0c;能夠快速掃描大面積樣品。 2、…

SAP - 初識

人過三十不學藝&#xff1b;活到老學到老。。。。。。 怎么說都有理&#xff0c;說不如做 低頭做事&#xff0c;抬頭看天 先做&#xff0c;至少了解下是個什么&#xff1f; 1. SAP是什么 https://www.sap.cn/ -- 思愛普中國 https://www.sap.cn/about/wha…

金斗云 HKMP智慧商業軟件 任意用戶創建漏洞復現

0x01 產品簡介 金斗云智慧商業軟件是一款功能強大、易于使用的智慧管理系統,通過智能化的管理工具,幫助企業實現高效經營、優化流程、降低成本,并提升客戶體驗。無論是珠寶門店、4S店還是其他零售、服務行業,金斗云都能提供量身定制的解決方案,助力企業實現數字化轉型和智…

無人機遙控器指令加密方法

遙控信息的安全問題是無人機遙控系統設計和任務實施過程中最重要的問題之一。然而日益發展的電子偵察和電子對抗技術&#xff0c;使第三方可以截獲已方所發送的遙控指令&#xff0c;分析和竊取遙控信息的內容&#xff0c;從而偽造遙控信息&#xff0c;對己方無人機構成嚴重威脅…

12.x86游戲實戰-匯編指令and or not

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 上一個內容&#xff1a;11.x86游戲實戰-匯編指令add sub inc dec and指令是與的意思 or指令是或的意思 …

MUX VLAN實現二層流量的彈性管控

一、模擬場景&#xff0c;企業有一臺服務器&#xff0c;部門A&#xff0c;部門B&#xff0c;訪客 二、要求&#xff1a;三者都可以訪問服務器&#xff0c;部門A和B可以進行部門內部通信&#xff0c;A和B不可以通信&#xff0c;訪客只能訪問服務器 三、拓撲如下圖 四、配置流程…

計算機網絡編程和并發的知識

OSI七層協議 OSI&#xff08;Open Systems Interconnection&#xff09;模型是一個七層的網絡通信模型&#xff0c;用于標準化不同層級的網絡通信。從下到上分別是&#xff1a; 物理層&#xff08;Physical Layer&#xff09;&#xff1a;負責在物理媒介上傳輸原始的比特流。…

springcloud 面試經常被問問題

Spring Cloud 是一個基于 Spring Boot 的微服務架構解決方案&#xff0c;包含了許多用于構建和管理微服務的工具和框架。在面試中&#xff0c;與 Spring Cloud 相關的問題通常會涉及其核心概念、組件、常用模式和解決方案。以下是一些在 Spring Cloud 面試中經常被問到的問題及…

Linux系統(Centos)下MySQL數據庫中文亂碼問題解決

問題描述&#xff1a;在進行數據庫使用過程中&#xff0c;數據庫里的數據中文都顯示亂碼。操作數據庫的時候&#xff0c;會出現中文亂碼問題。 解決方法如下&#xff1a; 第一步&#xff1a;打開虛擬機進入系統&#xff0c;啟動MySQL。 第二步&#xff1a;連接登錄MySQL輸入…

Java面試題系列 - 第4天

題目&#xff1a;深入理解Java泛型與類型擦除 背景說明&#xff1a;Java泛型是Java SE 5引入的一種新特性&#xff0c;它允許在編譯時檢查類型安全&#xff0c;并且所有的強制轉換都是自動和隱式的&#xff0c;提高了代碼的重用率。然而&#xff0c;Java泛型的實現背后有一個重…

執行力不足是因為選擇模糊

選擇模糊&#xff1a;執行力不足的根源 選擇模糊是指在面對多個選項時&#xff0c;缺乏明確的目標和方向。這種模糊感會導致猶豫不決&#xff0c;進而影響我們的執行力。 選擇模糊的表現&#xff1a; 目標不明確&#xff0c;不知道應該做什么。優先級混亂&#xff0c;不清楚…