99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

mysql查詢怎么取反 mysql 取反

mysql中運算符有幾種

mysql中有4類運算符,它們是:

成都創新互聯是一家專業提供鶴崗企業網站建設,專注與網站制作、成都做網站H5頁面制作、小程序制作等業務。10年已為鶴崗眾多企業、政府機構等服務。創新互聯專業網站設計公司優惠進行中。

算術運算符

比較運算符

邏輯運算符

位操作運算符

算術操作符

算術操作符是SQL中最基本的操作運算符,主要有一下幾種運算符:

+(加)、 -(減)、 *(乘)、 /(除)、 %(求余或者模)

比較運算符

一個比較運算符的結果總是1,0或者是NULL。MySQL中的比較運算符有:

=、=、 (!=)、=、=、、IS NULL、IS NOT NULL、LEAST、GREATEST、BETWEEN . . . AND. . . 、ISNULL、IN、NOT IN、LIKE、REGEXP

邏輯運算符

邏輯運算符的求值所得結果均為TRUE、FALSE或NULL。

邏輯運算符有:

NOT 或者 !

AND 或者

OR 或者 ||

XOR(異或)

位運算符

位運算符是用來對二進制字節中的位進行測試、移位或者測試處理。位運算符有:

位或(|)

位與()

位異或(^ )

位左移()

位右移()

位取反(~)

mysql怎么讓查詢的對象反序排列

首先你得告訴我,你的正序條件是什么!比如說你的正序條件是name這個字段,也就是說,name字段進行正序排列,如果name字段存儲的數據分別為aaa,bbb,ccc。那么按照name字段正序排列的話sql語句就是這樣的:select * from xxx order by name asc

如果按照name反向排列的話就是這樣的:select * from xxx order by name desc

2019-05-05

在MySQL中 select 表示查詢,select可以單獨成句,是MySQL的方言

比如查詢系統時間: select now();

now() 表示當前系統時間 MySQL特有的一個方法

在Oracle中系統時間: select sysdate from dual; 是Oracle的方言

dual表時Oracle特有的一張表,主要目的就是為了補充SQL語句中的from**

在Oracle的語法中,select之后必須要有from

MySQL中有DUAL關鍵字,所以SELECT NOW()也可以寫作SELECT NOW() FROM DUAL;

但MySQL中的DUAL不是表 執行SELECT * FROM DUAL;會報錯,而Oracle中DUAL是一張實際存在的表,執行SELECT * FROM DUAL;會查詢一個叫做DUMMY的結果

標準語法:select...from...

語法格式:

開發中建議以查詢特定列的方式進行查詢,前者的執行效率更快

示例1:查詢員工編號,員工姓名,年薪 (sal表示的是月薪)

注意年薪的表頭顯示的是“sal*12”

可以使用as或者空格,為查詢結果的列起別名

當數據運算中出現null值時,結果一定是null

MySQL解決問題是用ifnull()函數

Oracle解決問題是用nvl()函數

ifnull(expr1,expr2)

nvl(expr1,expr2)

當expr1的結果是null時,使用expr2的結果

當expr1的結果不是null時,使用expr1的結果

示例2: 查詢員工姓名和員工的月收入(月薪+獎金)

此時原始數據中如果comm中有null值,查詢結果不正確

使用distinct去掉查詢結果中的重復記錄

基礎語法

查詢列1,列2直至列n的數據,并去掉其中重復的組合

select ... from...where 查詢條件

示例3:查詢所有在部門編號是1工作的員工記錄

的查詢結果是一樣的,數據中Tom,tom,TOM,tOm...等都會被查詢出

如果需要嚴格控制大小寫字母敏感,查詢語句需要在列前加 binary

這樣只能查詢出TOM

X AND Y 必須同時滿足條件X和條件Y

示例4: 查詢在1號部門工作,且月薪不低于2500的員工信息

示例5: 查詢在1號部門工作,且月薪不低于2500的保潔信息

X OR Y 滿足條件X或條件Y其一即可

示例6:查詢在1號部門或2號部門工作的員工信息

NOT(X) 不是條件X

主要使用在特殊的比較運算符中

AND語句的優先級高于OR

如果使用括號控制優先級

SQL注入問題:利用了AND和OR優先級破壞系統中的SQL語句邏輯

正常訪問邏輯,用戶輸入admin和123 正確賬號和密碼可以登錄

SQL注入通過輸入正確的賬號,和一個帶有or邏輯的SQL片段將原來邏輯破壞掉,進行非法登錄

輸入的是 賬號:admin 密碼:' OR 1=1 AND lname='admin

這個SQL語句就變成了

lname = 'admin' AND lpass = '' -- X 假 查不出結果

1=1 AND lname='admin' -- Y 真 查出admin的數據

X OR Y -- 真 驗證通過 訪問了admin的賬號

X between A and B 表示X在[A,B]之間

相當于 X = A and X = B

一般情況下: B應該大于等于A

如果B小于A語法也沒錯誤,邏輯上沖突,不會由查詢結果

示例1:查詢月薪在[2000,2500]區間的員工信息

示例2:查詢在20號部門入職日期在1994年的員工信息

用于查詢數據時進行模糊匹配(模糊查詢),只適用于文本查詢

語法規則

-ename中含有字符% 使用\做為轉義字符

將'%'看做一個%字符

MySQL中

Oracle中

相當于or

語法規則

相當于

示例3:查詢在10號部門或20部門工作,且職位是CLERK的員工信息

示例4:查詢員工SMITH和AMY的員工信息

示例5:查詢在'1992-01-15'或'1994-12-22'或'1994-07-05'入職的員工信息

如果in中的數據有null值,null值不會被查詢出

專門針對null值進行篩選

示例6: 查詢所有獎金是null的員工信息

不能使用comm = null查詢,這樣查詢沒有結果

not表示特殊比較運算符邏輯取反

示例7:查詢月薪 不 在[2000,2500]區間的員工信息

示例8:查詢員工名字中 不 包含字母A的員工信息

示例9:查詢 不 在10號或20號部門工作的,職位是CLERK的員工信息

示例10:查詢獎金 不 是null的員工信息

排序是對 查詢結果 進行排序顯示

排序規則

select...from...where... order by...

示例11:查詢所有的員工信息,按照月薪升序排序。

asc表示升序,排序默認就是升序,asc可以省略。

示例12:查詢所有的員工信息,按照月薪降序排序。

desc表示降序

在列1的排序基礎上,進行列2排序,.... 在之前所有排序基礎上進行列n的排序

示例13 : 查詢所有員工信息,按照部門編號升序排序,按照月薪降序排序

先按照deptno進行升序排序,在deptno排序的基礎上,再進行sal的降序排序

示例14:查詢20號部門員工姓名,月薪,獎金,月收入,按照月收入的降序排序

可以使用列別名

按照查詢結果的第3列進行升序排序,在排序基礎上以第2列進行降序排序

實際:deptno升序后,sal降序

編寫順序: select...from...where...order by...

執行順序: from...where...select...order by...

mysql快速查詢數據庫中有多少條數據

今天主要復習了MySQL的一些簡單語句,可總結:

mysql 統計 表的數量:SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的數據庫';

有時候需要查詢MySQL數據庫中各個表大小,該如何操作呢?

MySQL中有一個名為 information_schema 的數據庫,在該庫中有一個 TABLES 表,這個表主要字段分別是:

TABLE_SCHEMA : 數據庫名

TABLE_NAME:表名

ENGINE:所使用的存儲引擎

TABLES_ROWS:記錄數

DATA_LENGTH:數據大小

INDEX_LENGTH:索引大小

use information_schema;

SELECT

TABLE_NAME,

(DATA_LENGTH/1024/1024) as DataM ,

(INDEX_LENGTH/1024/1024) as IndexM,

((DATA_LENGTH+INDEX_LENGTH)/1024/1024) as AllM,

TABLE_ROWS

FROM

TABLES

WHERE

TABLE_SCHEMA = '你的數據庫';

MySQL的一些基礎語句:

行是記錄 列是字段

創建庫

CREATE DATABASE [IF NOT EXISTS] 數據庫名 [參數[ 參數] [ 參數]...];

參數:

CHARACTER SET 碼表名

COLLATE 校對規則名, 詳見文檔10.10.1

顯示庫

SHOW DATABASES;

顯示數據庫創建語句

SHOW CREATE DATABASE 數據庫名;

修改庫

ALTER DATABASE 數據庫名[ 參數[ 參數][ 參數]...];

注意: 不能改數據庫的名字

刪除庫

DROP DATABASE [IF EXISTS] 數據庫名;

操作表之前使用需要先確定使用哪個數據庫

USE 數據庫名

創建表

CREATE TABLE 表名(列名 類型[,列名 類型][,列名 類型]...);

查看所有表

SHOW TABLES;

查看表的創建語句

SHOW CREATE TABLE 表名;

顯示表結構

DESC 表名;

修改表名

RENAME TABLE 原表名 TO 新表名;

修改字符集

ALTER TABLE 表名 CHARACTER SET 字符集名;

刪除表

DROP TABLE 表名;

追加列

ALTER TABLE 表名 ADD 列名 類型[,列名 類型][,列名 類型]...;

修改列類型

ALTER TABLE 表名 MODIFY 列名 類型[,列名 類型][,列名 類型]...;

修改列

ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 類型;

刪除列

ALTER TABLE 表名 DROP 列名;

插入語法:

INSERT INTO 表名[(列名[,列名]...)] VALUES(值[,值]...);

注意事項:

插入值類型必須與對應列的數據類型一致

數據不能超出長度

插入值得為之必須與列名順序一致

字符和日期數據要放在單引號中

插入空值使用null

如果不指定插入哪一列, 就是插入所有列

中文數據

由于默認碼表是utf8, 而cmd.exe的碼表是gbk, 在插入中文數據的時候會報錯, 所以我們需要修改客戶端碼表

先查看系統變量: SHOW VARIABLES LIKE 'character%';

修改客戶端碼表: SET character_set_client=gbk;

修改輸出數據的碼表: SET character_set_results=gbk;

修改語法

UPDATE 表名 SET 列名=值[,列名=值]...[WHERE 條件語句];

注意事項

WHERE子句選擇滿足條件的行進行更新, 如果不寫, 則更新所有行

刪除語法

DELETE FROM 表名 [where 條件語句]

注意事項

如果不加where子句, 將刪除表中所有記錄

delete只能用作刪除行, 不能刪除某一列的值, 需要用update

在delete和update的時候需要注意表與表之間的關聯關系

刪除表中所有數據可以使用: TRANCATE 表名, 這種方式會刪除舊表重新創建, 在數據較多的時候使用

備份數據庫

輸入quit退出mysql, 在cmd.exe中輸入:

mysqldump –u用戶名 –p密碼 數據庫名 文件名

恢復數據庫

進入mysql.exe之后, 使用數據庫之后

source 文件名

操作數據(查詢)

DISTINCT語法

SELECT [DISTINCT] 列名[, 列名]... FROM 表名

注意事項

*可以替代列名, 表示所有列, 但是通常我們為了提高代碼的可讀性, 不使用*

DISTINCT為過濾重復記錄

如果DISTINCT后面跟多列, 是過濾掉多列合并之后的重復

列名表達式——語法

SELECT 列名|表達式[,列名|表達式]... FROM 表名

注意事項

表達式只是顯示時起作用, 不會改變數據庫中的值

AS——

SELECT 列名 AS 別名 FROM 表名

注意事項

起別名時AS可以省略

不會改變數據庫中的值

WHERE——

語法

SELECT 列名 FROM 表名 [WHERE 條件語句]

WHERE子句中的運算符

比較運算符

, , =, =, =,

注意不等于和Java中不同, 是

BETWEEN ... AND ...

某一區間內的值, 從 ... 到 ...

IN(列表)

在列表之中, 例: in(1,2,3) 代表1或2或3

LIKE(表達式)

模糊查詢, %代表多個字符, _代表單個字符

IS NULL

判斷是否為NULL

邏輯運算符

AND

與, 兩邊都為TRUE結果為TRUE

OR ||

或, 一邊為TRUE結果就為TRUE

NOT !

非, 將表達式結果取反

ORDER BY——

語法

SELECT 列名 FROM 表名 ORDER BY 列名 ASC|DESC;

注意事項

ORDER BY 指定排序的列名可以是表中的列名, 也可以是SELECT語句后面起的別名

ASC為升序, DESC為降序

ORDER BY應在查詢語句的結尾

COUNT函數——

語法

SELECT COUNT(*)|COUNT(列名) from 表名 [WHERE 條件語句]

注意事項

COUNT(列名)的方式是統計指定列中有多少條記錄, 不包括值為NULL的

COUNT(*)則是統計表中有多少條數據

COUNT(DISTINCT 列名) 統計不重復的記錄數

如果加上WHERE子句, 則是統計滿足條件的記錄

MySQL必知必會 第7-9章

在第六章介紹的所有 WHERE 子句在過濾時,使用的都是單一的條件。為了進行更強的過濾控制,MySQL允許給出多個WHERE子句,并通過 AND 或 OR 操作符的方式組合使用。

AND 操作符可以使用對多列的條件進行累加過濾。

OR操作符可以使用對多列的條件進行累加過濾。

WHERE 子句可包含任意數目的 AND 和 OR 操作符。但是 AND 的優先級比 OR 高,應使用適當的圓括號分組操作符。

注意: 任何時候都不應該過分依賴默認計算次序,使用圓括號可以增加可讀性,消除歧義。

IN 操作符用來指定條件范圍,范圍中每個條件都可以進行匹配。 IN 的合法值由逗號分隔,并全部括在圓括號中。

使用 IN 的優點為:

WHERE子句中的NOT操作符有且只有一個功能,就是否定它之后的任何條件。

注意: MySQL支持使用NOT對IN、BETWEEN和EXISTS子句取反,這與其他大多數DBMS允許使用NOT對各種條件取反有很大區別。

之前介紹的都是針對已知值的過濾。而對進行未知內容的匹配,可以使用通配符創建比較數據的搜索模式來完成。通配符的匹配,需要通過LIKE操作符指示MySQL完成。

% 表示任何字符出現任意次。例如,為了找到所有以 jet 起頭的產品,可使用以下 SELECT 語句

注意:

下劃線( _ )通配符只匹配單個字符而不是多個字符。

通配符使用技巧:

正則表達式是用來匹配文本的特殊串(字符集合),所有種類的程序設計語言、文本編輯器、操作系統等都支持正則表達式。

MySQL中的正則表達式僅是正則表達式的一個子集。

為搜索兩個串之一,使用( | )。

如果想匹配特定的單一字符,可以使用[]將一組指定的內容括起來。

注意:

集合可用來定義要匹配一個或多個字符,此時可以使用 - 來定義一個范圍,例如 [0-9] 表示數字0到9, [a-z] 表示字母a到z。

正則表達式語句由具有特定含義的特殊字符構成。例如 | 或 - 等。如果要表示一些特殊的字母,如含 . 的值,則應該使用 \\\ 為前導。 \\\- 表示查找 - , \\\. 表示查找 . 。

注意:

為方便常見字符集的查找,可以使用預定義的字符集。稱為字符類。如下圖所示:

目前為止使用的所有正則表達式都試圖匹配單詞出現。但有時需要對匹配的數目進行更強的控制,此時可以使用下列正則表達式重復元字符來完成。

注意: 使用正則表達式時,編寫某個特定的表達式幾乎總是有多種方法。

目前為止,所有例子都是匹配一個串中任意位置的文本,為了匹配特定位置的文本,需要使用定位符。

注意:

網站名稱:mysql查詢怎么取反 mysql 取反
當前地址:http://www.yijiale78.com/article8/doddgop.html

成都網站建設公司_創新互聯,為您提供建站公司網站建設網站制作外貿網站建設企業建站靜態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化