數據庫(3)--針對列的CRUD操作

1.Create 新增

語法:

insert into 表名 (列名)values (列)...

創建一個學生表用于演示:

create table if not exists student(
id bigint comment '編號',
name varchar(20) comment '姓名'
);

1.1直接增加

insert into student values (1,'張三');

不在into 與 表名間聲明列名

1.2聲明增加單列

insert into (id,name) values (1,'張三');

?1.3聲明增加多列

?

insert into (id,name) values (1,'張三'),(2,'李四');

2.Retrieve 檢索

語法:

SELECT
[ DISTINCT ]
select_expr [, select_expr ] ...
[ FROM table_references ]
[ WHERE where_condition ]
[ GROUP BY { col_name | expr }, ...]
[ HAVING where_condition ]
[ ORDER BY { col_name | expr } [ ASC | DESC ], ... ]
[LIMIT {[ offset ,] row_count | row_count OFFSET offset }]

?功能較多,我們一個一個介紹

2.1select

先介紹普通查詢

2.1.1全列查詢

?

select * from 表名;

能打印出表中存儲信息

注意desc tables;是打印表的屬性?

2.2.2指定列查詢?

select id from 表名;

?

在指定列查詢時,可以對打印的數據進行微調,具體是:

對數據進行運算(即表達式)

對屬性起別名

?2.2.2.1對數據進行運算
select id+1 from student;

也可以把類型相同的屬性相加?:

select id+id from student;

2.2.2.2 對屬性起別名
select id+id as 表達式 from student;

?加上as 后跟別名(as也可以省略)

?

2.2.3結果去重查詢?

語法:

select distinct 列名/* from 表名;

有 重復:

?使用去重查詢后:

注意:只有全部屬性都相同才會去重?

2.2 where條件查詢

?語法:

select * from 表名 where 判斷條件;

2.2.1比較運算符

運算符說明
>,? ? >=,? ? <,? ? <=
使用與其他語言無異
=

既可以賦值又可以判斷是否相等

但是不可以判斷null是否等于null

<=>專門用于null=null? 返回值為1/0
!=, <>
不相等
value BETWEEN a0 AND a1
[a0, a1]? 如果在這個范圍中就返回1
NOT BETWEEN則取反
value IN (option, ...)
如果value 在optoin列表中,則返回TRUE(1),NOT IN則取反
IS NULL
是null返回1
IS NOT NULL
不是null返回1
LIKE
模糊匹配,% 表?任意多個(包括0個)字符;
_ 表?任意?個字符
NOT LIKE則取反

2.2.2邏輯運算符

運算符說明
AND
多個條件必須都為 TRUE(1),結果才是 TRUE(1)
OR
任意?個條件為 TRUE(1), 結果為 TRUE(1)
NOT
條件為 TRUE(1),結果為 FALSE(0)

?2.3order by排序

語法:

SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC | 
DESC], ... ;

-- ASC 為升序(從?到?)
-- DESC 為降序(從?到?)
-- 默認為 ASC

?

注意:

MYSQL中會自動排序,如果沒有order by返回的順序僅參考,不可信。

如果比較對象中有null,默認null是最小的值(比所有數都小,包括負數)

order by 中可以使用別名

如:

這是因為order by 是對select后的對象排序,在select中起的別名可以在order by 中識別

但是where不可以,因為where是先判斷再select?

2.4 分頁查詢

語法:

-- 起始下標為 0
-- 從 0 開始,篩選 num 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 從 start 開始,篩選 num 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start, num;
-- 從 start 開始,篩選 num 條結果,?第?種?法更明確,建議使?
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;

作用:可以搭配order by排序成對取出前幾個

3.Update修改

語法:

UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment [, assignment] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count]

例如:?

注意:

不加where條件時,會導致全表數據被列新,謹慎操作?

4.Detele刪除?

語法:

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]?

比如:

注意:

執?Delete時不加條件會刪除整張表的數據,謹慎操作?

?5.截斷表

語法:

TRUNCATE [TABLE] 表名;

可以快速將整個表清空?

說明:

只能對整表操作,不能像 DELETE ?樣針對部分數據
不對數據操作所以?DELETE更快,TRUNCATE在刪除數據的時候,不經過真正的事物,所以?法回滾
會重置AUTO_INCREMENT 項

6. 插入查詢結果

語法:

INSERT INTO table_name [(column [, column ...])] SELECT ...;

例如: 將? 去重后? 的表的原表互換 并保留原表

create table student_new like student;
insert into student_new (name,id,math,english)select distinct name,id,math,english from student;rename table student to student_new, student_new to student;

?7.聚合函數

函數說明
COUNT([DISTINCT] expr)
返回查詢到的數據的 數量
SUM([DISTINCT] expr)
返回查詢到的數據的 總和,不是數字沒有意義
AVG([DISTINCT] expr)
返回查詢到的數據的 平均值,不是數字沒有意義
MAX([DISTINCT] expr)
返回查詢到的數據的 最?值,不是數字沒有意義
MIN([DISTINCT] expr)
返回查詢到的數據的 最?值,不是數字沒有意義

例子:

select count(*) from student;
select count(math) from student where math >50;
select sum(math) from student;
select avg(math) from student;
select min(math) from student where math>70;
select min(math),max(math) from student;

8.Group by 分組查詢

將有相同屬性的對象分組,便于集中統計計算與分析

語法:

SELECT {col_name | expr} ,... ,aggregate_function (aggregate_expr)FROM table_referencesGROUP BY {col_name | expr}, ... [HAVING where_condition]

?例如:

select role,ROUND(avg(salary),1) from cmp group by role;
select role,count(salary) from cmp where salary>1000.00 group by role;
-- 3                        1       2                        4         

上面的數字是執行順序? ?group by也可以使用別名

但是正因為where比group by先執行,所以無法對分組后的數據進行判斷

MYSQL中引入了having關鍵字專門用于解決此問題

8.1having子句

例如:

select role,ROUND(avg(salary)) from cmp group by role having ROUND(avg(salary))>1000.00;
Having 與Where 的區別
? Having ?于對分組結果的條件過濾
? Where ?于對表中真實數據的條件過濾

9.內置函數?

9.1日期函數

函數說明
CURDATE()
返回當前?期,同義詞 CURRENT_DATE CURRENT_DATE()
CURTIME()
返回當前時間,同義詞 CURRENT_TIME CURRENT_TIME([fsp])
NOW()
返回當前?期和時間,同義語 CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
DATE(data)
提取date或datetime表達式的?期部分
ADDDATE(date,INTERVAL exprunit)
向?期值添加時間值(間隔),同義詞 DATE_ADD()
SUBDATE(date,INTERVAL exprunit)
向?期值減去時間值(間隔),同義詞 DATE_SUB()
DATEDIFF(expr1,expr2)
兩個?期的差,以天為單位,expr1 - expr2
select curdate();
select curtime();
select now();
select date(now());
select adddate(curdate(),interval 31 day);
select subdate(curdate(),interval 1 month);
select datediff(curdate(),subdate(curdate(),interval 1 month));

9.2字符串處理函數

select name,char_length(name),length(name) from cmp;

select concat(name,'的工資為:',salary) as 工資 from cmp;

?

select concat_ws(',',name,ROUND(salary)) as 工資 from cmp;

?拼接后的字符串?逗號隔開

?

select lcase('ABC');

?

select ucase('abc');

9.3數學函數?

函數
ABS(X)
返回X的絕對值
CEIL(X)
返回不?于X的最?整數值,同義詞是 CEILING(X)
FLOOR(X)
返回不?于X的最?整數值
CONV(N,from_base,to_base)
不同進制之間的轉換
FORMAT(X,D)
將數字X格式化為“#,###,###”的格式。##',四舍五?到?數點后D位,并以字符串形式返回
RAND([N])
返回?個隨機浮點值,取值范圍 [0.0, 1.0)
ROUND(X), ROUND(X,D)
將參數X舍?到?數點后D位
CRC32(expr)
計算指定字符串的循環冗余校驗值并返回?個32位?符號整數

例如:

select ROUND(RAND(),6);

?

select CRC32('MYSQL');

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

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

相關文章

【設計模式-1】軟件設計模式概述

1. 軟件設計模式的產生背景 “設計模式”這個術語最初并不是出現在軟件設計中&#xff0c;而是被用于建筑領域的設計中。 1977 年&#xff0c;美國著名建筑大師、加利福尼亞大學伯克利分校環境結構中心主任克里斯托夫亞歷山大&#xff08;Christopher Alexander&#xff09;在…

Python爬蟲基礎——認識網頁結構(各種標簽的使用)

1、添加<div>標簽的代碼定義了兩個區塊的寬度和高度均為100px&#xff0c;邊框的格式也相同&#xff0c;只是區塊中顯示的內容不同&#xff1b; 2、添加<ul>和<ol>標簽分別用于定義無序列表和有序列表。<il>標簽位于<ul>標簽或<ol>標簽之…

Spring boot接入xxl-job

Spring boot接入xxl-job 導入maven包加入配置增加配置類創建執行器類&#xff08;寫job的業務邏輯&#xff09;去控制臺中配置job 導入maven包 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…

[Git] git pull --rebase / git rebase origin/master

1. git pull --rebase 這個命令是用來更新當前分支的&#xff0c;它會從遠程倉庫拉取更新&#xff0c;然后將你的本地提交重新應用到更新后的基礎之上。它相當于先執行 git fetch&#xff0c;然后在當前分支上執行 git rebase origin/。使用 --rebase 而不是默認的 merge 可以…

去掉el-table中自帶的邊框線

1.問題:el-table中自帶的邊框線 2.解決后的效果: 3.分析:明明在el-table中沒有添加border,但是會出現邊框線. 可能的原因: 由 Element UI 的默認樣式或者表格的某些內置樣式引起的。比如,<el-table> 會通過 border-collapse 或 border-spacing 等屬性影響邊框的顯示。 4…

空間不足導致Oracle集群內存使用率暴增

一、現象 操作系統內存使用率告警&#xff0c;已達到98%,&#xff0c;告警內容如下&#xff1a; 【全景監控&#xff1a;Oracle主機內存使用監控】 【主機名】&#xff1a;XXXXX11 【主機IP】主機IP&#xff1a;*.126.15 【告警內容】當前內存使用率為98.9%&#xff0c;超警…

spark匯總

目錄 描述運行模式1. Windows模式代碼示例 2. Local模式3. Standalone模式 RDD描述特性RDD創建代碼示例&#xff08;并行化創建&#xff09;代碼示例&#xff08;讀取外部數據&#xff09;代碼示例&#xff08;讀取目錄下的所有文件&#xff09; 算子DAGSparkSQLSparkStreaming…

矩母函數(MGF)

矩母函數&#xff08;MGF&#xff09;簡介 矩母函數&#xff08;Moment Generating Function&#xff0c;MGF&#xff09;是概率統計中描述隨機變量分布特征的重要工具。MGF的主要用途是通過導數來計算隨機變量的矩&#xff08;比如均值、方差等&#xff09;&#xff0c;同時它…

React中的合成事件

合成事件與原生事件 區別&#xff1a; 1. 命名不一樣&#xff0c;原生用純小寫方式&#xff0c;react用小駝峰的方式 原生&#xff1a;onclick React的&#xff1a;onClick 2. 事件處理函數的寫法不一樣 原生的是傳入一個字符串&#xff0c;react寫法傳入一個回調函數 3.…

ajax與json

目錄 1、ajax1.1、什么是ajax1.2、ajax核心AJAX 工作原理示例代碼重要屬性和方法兼容性 1.3、jQuery ajax什么是jQuery ajaxjQuery AJAX 核心概念基本用法1. **使用 $.ajax() 方法**2. **使用簡化方法****使用 $.get() 方法****使用 $.post() 方法** 常用配置選項示例&#xff…

CSS——26. 偽元素2(“::before ,::after”)

::before偽類 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>偽元素</title><style type"text/css">div::before{content: "我最棒";}}</style></head><body><!--…

Openssl1.1.1s rpm包構建與升級

rpmbuild入門知識 openssh/ssl二進制升級 文章目錄 前言一、資源準備1.下載openssh、openssl二進制包2.安裝rpmbuild工具3.拷貝源碼包到SOURCES目錄下4.系統開啟telnet&#xff0c;防止意外導致shh無法連接5.編譯工具安裝6.補充說明 二、制作 OpenSSL RPM 包1.編寫 SPEC 文件2.…

patchwork++地面分割學習筆記

參考資料&#xff1a;古月居 - ROS機器人知識分享社區 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分內容&#xff1a;提出了以下四個部分&#xff1a;RNR、RVPF、A-GLE 和 TGR。 1&#xff09;基于 3D LiDAR 反射模型的反射噪聲消除 (RNR)&#xff…

基于Spring Boot的海濱體育館管理系統的設計與實現

風定落花生&#xff0c;歌聲逐流水&#xff0c;大家好我是風歌&#xff0c;混跡在java圈的辛苦碼農。今天要和大家聊的是一款基于springboot的海濱體育館管理系統的設計與實現。項目源碼以及部署相關請聯系風歌&#xff0c;文末附上聯系信息 。 項目簡介&#xff1a; 寵物醫院…

通過Android Studio修改第三方jar包并重新生成jar包

最近接手了來自公司其他同事的一個Unity項目,里面有一個封裝的jar包要改動一下,無奈關于這個jar包的原工程文件丟失了,于是自己動手來修改下jar包,并做下記錄。 一、導入第三方jar包 1、新建項目EditJarDemo(項目名隨便取) 2、新建libs文件夾,把你要修改的third.jar 復制…

淺嘗Selenium自動化框架

淺嘗Selenium自動化框架 Selenium基本介紹Selenium原理Selenium學習要點寫個Selenium Demo結束 Selenium基本介紹 Selenium 是一個開源的自動化測試工具&#xff0c;只用于測試 Web 應用程序。它支持多種編程語言&#xff08;如 Java、Python、C# 等&#xff09;來編寫測試腳本…

計算機網絡之---物理層設備

什么是物理層設備 物理層設備是指負責數據在物理媒介上傳輸的硬件設備&#xff0c;它們主要處理數據的轉換、信號的傳輸與接收&#xff0c;而不涉及數據的內容或意義。常見的物理層設備包括網卡、集線器、光纖收發器、調制解調器等。 物理層設備有哪些 1、網卡&#xff08;N…

SQL中的數據庫對象

視圖&#xff1a;VIEW 概念 ① 虛擬表&#xff0c;本身不存儲數據&#xff0c;可以看做是存儲起來的SELECT語句 ② 視圖中SELECT語句中涉及到的表&#xff0c;稱為基表 ③ 針對視圖做DML操作&#xff0c;對影響到基表中的數據&#xff0c;反之亦然 ④ 創建、刪除視圖本身&#…

flink的EventTime和Watermark

時間機制 Flink中的時間機制主要用在判斷是否觸發時間窗口window的計算。 在Flink中有三種時間概念&#xff1a;ProcessTime、IngestionTime、EventTime。 ProcessTime&#xff1a;是在數據抵達算子產生的時間&#xff08;Flink默認使用ProcessTime&#xff09; IngestionT…

web服務器架構,websocket

1. 非前后端分離架構 1. 前端html后端servlet 被tomcat服務器打包&#xff0c;統一指定根目錄入口。通過原生表單發送到后端&#xff0c;后端根據請求數據進行重定向或請求轉發&#xff0c;這樣就不能進行動態渲染&#xff0c;也就必須存在很多靜態html對應每一個請求。 這里…