網絡安全快速入門(九)MySQL進階操作

????????上一章我們了解了對表及庫的基本增刪查改操作,本章我們針對增刪查改內容進行與一些拓展,

9.1字段修飾及數據類型

????????我們之前在創建表時用到的格式為:

create table 表名 (
字段名1 字段數據類型(數據類型長度),
字段名2 字段數據類型(數據類型長度),
字段名3 字段數據類型(數據類型長度),
字段名4 字段數據類型(數據類型長度),
)

????????其實這個格式較為簡單,僅僅定義了數據類型,但是大部分情況下無法只能通過數據類型來定義字段。因此我們可以拓展一下,在數據類型之后加上字段修飾,字段修飾有以下幾個主要內容:

  • unsigned:表示的數字是無符號數字(只能是正數)
  • null:這個字段可以為空
  • not null:這個字段不可以為空
  • primary key:主鍵,用來唯一標識表中的一條記錄(主鍵的內容不能重復)
  • auto_increment:設置主鍵自增
  • default:設置字段的默認值

我們來一個個講解上述的字段修飾:

unsigned:

????????表示該字段為無符號數字,顧名思義,也就是非負數。該字段只能緊跟在數據類型之后,否則會報錯。

null:

該字段修飾可以讓字段值為空,默認為null

not null:

????????該字段不能讓字段值為空,如果非空字段無值的情況下,會顯示下圖結果

primary key:

????????主鍵,用來唯一標識表中的一條記錄,該字段不能重復,通常用來作為序號,id等字段名稱,

auto_increment:

????????該修飾主要是用來做主鍵自增時使用,相關主鍵的數據類型盡量為數值型。

注意:在設置自增后主鍵輕易不要修改,因為主鍵自增后一般按照最大數值之后開始自增。貿然修改主鍵數值可能會導致之后的主鍵會從修改數值字段的最大值開始自增!!!

default:

設置字段默認值,在未改動該字段的情況下會默認為該字段修飾之后的字符

格式

字段名 數據類型 default “字符”

拓展創建表

?在了解字段修飾之后,我們就可以拓展一下之前我們所學習的創建表

?拓展格式如下

create table 表名 (
字段名1 字段數據類型(數據類型長度) 字段修飾,
字段名2 字段數據類型(數據類型長度)字段修飾,
字段名3 字段數據類型(數據類型長度)字段修飾,
字段名4 字段數據類型(數據類型長度)字段修飾,
)

話不多說,我們直接來舉例

例:

在數據庫db1下創建表格tb001表,要求:

name 為可變長度字符,50長度,

age為整型,三字符長度,且不能為空,

id為int長度,不能為空,且擁有主鍵并自加主鍵,

genger為可變長的字符,30長度,默認值為hebei,

nmum為枚舉類型,枚舉值為m和n

use db1;
create table tb001(
name varchar(50),
age int(3) not null,
id int not null primary key auto_increment,
genger varchar(30) default"hebei")

我們來查看一下上列命令的表結構

通過查看表結構我們可以發現我們上面所使用的字段名稱,數據類型以及字段修飾,在上一篇文章我們已經講解了各個字段的名稱及含義,這里我們不再贅述。

補充:數據類型長度

不同數據類型長度所代表的含義不同,如果我們在char,或者varchar后加數據類型長度之后,該類型則可以最多輸出數據類型長度的字符,如果是數值長度的話,輸入少于字符長度的數據前面會自動用0去補全,如果超出長度則會原樣顯示出來,這里直接放截圖

age int(3)時輸入3顯示的數據

age int(3)時輸入333333顯示的數據

而char或varchar輸入超過該數據長度則會報錯,char默認長度是1,這里請大家注意。

9.2對表中的數據進行操作

我們之前已經學習了對表的操作,接下來我們開始對表中的數據進行操作

在表中插入數據

????????在表中插入數據有兩種方法

  • 方法一
insert into 表名 values(值1,值2,值3)

????????注意:該方法是依次給字段賦值,因此需要將字段逐個賦值

  • 方法二
insert into 表名(字段,字段,字段) values(值1,值2,值3)

????????該方法可以指定字段進行賦值,因此方法二較為常用

這里我們舉個例子

案例:

????????在tb001中插入數據,name為ch225,age為66,genger為f

insert into tb001(name,age,genger)values("ch225",66,"f")

我們來看一下結果

注意:

  • 在賦值時候去注意字符類型,字母及文字需要用英文雙引號引用,否則報錯
  • 這里僅僅是向部分字段寫入值
  • 沒有指定字段,會寫如空
  • 字段的順序要和值的順序保持一致

?刪除表中的數據及截斷表

刪除表中的數據有兩個格式,如下:

  • 格式一:
delete from 表名

該命令可以直接刪除表中的全部數據

  • 格式二:
delete from 表名 where 條件

該命令可以刪除表中的指定數據

直接舉例子

現在有以下表student(如下圖)

例子1.

刪除student表中的sage為18的數據

delete from student where sage=18

看結果

刪除三行,我們現在進表里看

例子二:

????????刪除表中所有數據

delete from student

老規矩,看結果

我們來看表

沒數據了,說明命令執行成功下一個

但我們重新插入數據時會發現,主鍵不也是從0開始自增,而是在刪除數據之前最高的主鍵開始增加

截斷表

截斷表,類似于我們超市開的小票,打出來一大堆東西,一撕,啪!全都沒了,然后重新打印下一張小票繼續從o開始。簡單點來說,就是刪除表中全部的數據,而且會截斷表(id會重新開始自增)

格式
truncate 表名

老規矩,我們舉例子來驗證

上圖為表sc的數據,主鍵為sid,我們來截斷該表

TRuncate sc

ok,命令執行成功,接下來我們添加數據來看看

insert into sc (cid,score)values(1,20)

看結果

主鍵sid開始從零自增,完成!!

修改表中數據

也是有兩種格式,

格式1:

update 表名 set 字段=值

該格式為批量修改,只要是該字段內的數據都會被修改

格式2:

update 表名 set 字段=值 where 記錄=值

該字段用where進行條件篩選

話不多說直接舉例:

現有表teacher,表內容如下圖

例1:將阿斯頓修改為圖靈

update teacher set tname="圖靈" where tid=1

我們來查看表

阿斯頓已成功更改·下一個例子

例子二:

表中的tname修改為喬布斯

update teacher set tname="喬布斯"

查看表

修改表中數據就這些,完成!

9.3 對表中的字段進行操作

增加字段

在已經創建的字段之前或之后添加新的字段

格式一:在字段名之后添加新字段

alter table 表名 add column 新字段名 字段屬性 after 字段名

格式二:在字段名之前添加新字段

alter table 表名 add column 新字段名 字段屬性 first 字段名

直接舉例:

teacher表如上圖,在tname后添加新字段age,數據類型為int,默認為30

alter table teacher add column age int default"30" after tname 

我們查看表結構

ok,完成,我們開始下一個環節

刪除字段:

顧名思義,刪除字段,不做解釋

格式:

alter table 表名 drop column 字段名

我們還是以上述表舉例

例子

刪除tname字段

alter table teacher drop column tname 

我們看下表

ok,刪除表成功

注意:貿然刪除字段可能會導致一些未知錯誤,因此:

建議不要刪除!

建議不要刪除!!

建議不要刪除!!!

建議不要刪除!!!!

建議不要刪除!!!!!

建議不要刪除!!!!!!

修改字段名

????????修改字段名,見名知義,

格式:

alter table 表名 change column 字段名 新字段子 屬性約束

?還是舉例來看一下吧

還是那個teacher

例:

將字段名age修改為gae

alter table teacher change column age gae int(30)

我們來看結果

ok了,

該命令不僅可以修改字段名,也可以去修改數據類型和字段修飾。這里就不一一演示了。還請各位讀者見諒。

修改字段順序

這玩意跟之前添加字段還有些類似,還別不信,直接看格式
格式一:

alter table 表名 modify column 字段名 屬性 after 位置

格式二:

alter table 表名 modify column 字段名 屬性 first 位置

?這里我們還是舉例表示:

還是teacher表,將表中的age字段移動至tid之前

alter table teacher modify column tid int(30) after gae

我們來看一下表

改過去了,說明ok,沒問題對表中的字段進行操作就了解這么多,接下來進入下一個板塊

9.4查詢表中的內容

9.4.1 簡單查詢

就是可以查看表中的內容,這里我們先看格式,再去了解

格式

select 查詢的內容 from 表名 where 條件

表示查詢內容的方法有很多我們來看幾個較為常用的

表示查詢內容的方法:
  • *:表示所有的內容
  • 一個或者多個字段的名字:表示僅僅查詢一個或者多個字段(查詢多個字段的時候,多個字段之間,用逗號分割)

注意:查詢內容只能通過字段查詢相關記錄,不能通過記錄去查詢,如果想要控制顯示記錄,則需要通過where之后加條件去執行。

where后條件寫法

  • > 大于
  • >= 大于等于
  • < 小于
  • <= 小于等
  • <> 不等于
  • != 不等于
  • between ... and ... 判斷范圍
  • is null 是空
  • is not null 不是空
  • like 模糊查詢

? ? ? ? (like后可能要跟通配符“%”,%? 表示任意個任意字符,具體使用方法如下面例子)

  • in 判斷某個字段是否在給定的集合中

好了,一條簡單些的select語句大概就由這么些內容組成,之后的內容我們通過例題進行補充

例:

假設有一表name,如下

查詢name中age大于20的字段

select *from name where age > 20

查詢name中age大于等于20的字段

select *from name where age >= 20

查詢name中age小于20的字段

select *from name where age < 20

查詢name中age為空的字段

select *from name where age is null

查詢name中age不為空的字段

select *from name where age is not null

查詢name中age為3,5,7的字段

select *from name where age in(3,5,7)

?

查詢name中 age大于等于8 且小于等于50
select *from name where age>3 and age < 50

注意:接下來就要用到簡單查詢了!!!!

簡單查詢如下

查詢name中name包含a的記錄

select name from name where name like "%a%"

查詢name中namey以a為結尾的記錄

select name from name where name like "%a"

(因為框中只有一個a,所以a即使開頭也是結尾)

我們就先簡單舉上述這些例子,接下來我們對簡單進行略微的擴展

? ?9.4.2查詢排序

????????就是對上述的結果進行了簡單的排序,話不多說,我們先來看格式

格式:

select 查詢內容 from 表名 where 條件 order by 字段名

排序分為兩種字段名,

  • 升序(默認為升序)

? ? ? ? asc

  • 降序

????????desc

看上去好像怪簡單的,我們直接進行實操

還是以上面name為例

查詢name中age不為空的字段并且對age由高到低進行排序

select *from name where age is not null order by age desc

查詢name中age不為空的字段并且對name由低到高進行排序

select *from name where age is not null order by name asc

這里我們可以看到,當排序對象為數字時,是從0開始進行排序;當排序對象是字母時,則是依照字母順序表從a到z進行排序。因此在排序時請注意這幾點。

9.4.3 指定輸出行

指定輸出行,顧名思義就是指定輸出前幾行,其余記錄不進行顯示,老規矩,還是先看格式

格式:

select 查詢內容 from 表名 where 條件 order by 字段名 limit 數字

當不使用limit字段時,默認輸出所有符合條件的記錄,而當使用該字段時,輸入數字是幾則顯示幾條記錄。我們還是舉例說明

例:

查詢name中age不為空的字段并且對name由低到高進行排序顯示前三條記錄

select *from name where age is not null order by name asc limit 3

看結果

ok,下一個

9.4.4 聚合函數:

?可以簡單理解為四則運算,但一般常用的聚合函數很少用到乘除法則,因此這里只講常用的聚合函數,講解不到位還請讀者諒解0..0

常用的聚合函數:

  • sum() 求和
  • avg() 求平均值
  • max() 求最大值
  • min() 求最小值
  • count() 統計記錄條數

格式:

select 聚合函數(字段名) from 表名

還是以上述name表為例,

簡單舉個例子:

計算所有學生年齡的和

select sum(agde) from name

計算所有學生年齡的平均值

select avg(age) from name

統計一共有多少條記錄

select count(age) from name

統計最小的年齡

select min(age) from name

ok了,下一個

9.4.5 查詢記錄去重

顧名思義,就是去除重復字段,我們直接看格式

格式

select distinct 字段名 from 表名

例:

查詢name中age不為空的字段并且對name由低到高進行排序并去除重復字段

select distinct age from name where age is not null

下一個

9.4.6 分組及分組后加條件

分組

對記錄進行區分,通常用于統計過個字段人數使用

group by

格式:

select 字段 from 格式 group by 分組字段

直接舉例,還是上個name表

對age進行分組,并顯示名稱

select name from name GROUP BY age

分組后加條件
having,使用格式如下
select 字段 from 表名 group by 字段 having 條件

因為該命令不常用,因此這里只做了解,還請各位讀者諒解,還是通過例題來簡單了解一下分組后加條件,例題如下

有一表students,內容如下

例題:通過gender進行分組分別查詢查詢students表中stuid大于二十的男生人數

select count(stuid),gender from students where stuid>20 group by gender  having gender="m"

我們來看結果

注:(分組后加條件是在分組后顯示的結果進行進一步的條件篩選,若分組時結果沒有條件,則會顯示查詢不到對應的字段或其他報錯,因此在分組后查詢過程中,建議先運行不分組后不加條件的代碼,針對分組后不加條件的代碼進行進一步的條件篩選!!!)

以上就是本期內容了,很多東西筆者因為篇幅原因還沒講到,還請各位見諒。如有錯誤,還請諒解.感謝各位觀看!

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

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

相關文章

Pytorch學習-調整torchvision.models中模型輸出類別數

假設你的類別只有10個&#xff0c;而torchvision.models中Vgg16的輸出類別為1000&#xff0c;這時應該如何調整呢&#xff1f; 方法一&#xff0c;直接修改模型中類別的輸出。 from torch.nn import Linear import torchvision import torchVgg16torchvision.models.vgg16(pre…

華為認證大數據是什么?華為認證大數據有用嗎?

華為大數據是用來搜集整理大數據&#xff0c;提供解決方案的數據中心。華為大數據解決方案是華為公司推出的一種綜合性云解決方案&#xff0c;主要針對廣告營銷、電商、車聯網等大數據應用場景的云計算大數據方案&#xff0c;幫助企業用戶構建大數據平臺&#xff0c;解決企業的…

GRE over IPsec VPN實驗

一、拓撲圖 二、組網需求 某企業總部、分支1、分支2分別通過 R1&#xff0c;R3&#xff0c;R4 接入互聯網&#xff0c;配置默認路由連通公網按照圖示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 分別配置 Loopback0 口匹配感興趣流&#xff0c;Loopback1 口模擬業…

GPIO輸出速度(ARM-GD32)

單片機輸出速度對GPIO硬件的影響 如果T為100ns 那么2/3*100ns 67ns 那么tr tf 38 ns &#xff08;也就是不能超過32ns&#xff09; tr 和tf和什么東西有關如何去控制 CL 是一個電容&#xff0c;電容會改變和影響電壓變化的速率&#xff0c;輸出高低電平也就是對電容進行充電…

【噪聲學習】SELFIE:更新不干凈樣本的魯棒性深度學習

SELFIE: Refurbishing Unclean Samples for Robust Deep Learning 摘要: 由于深度神經網絡具有極高的表達能力,其副作用是即使在標簽噪聲極高的情況下也能完全記住訓練數據。為了克服對噪聲標簽的過度擬合,我們提出了一種名為 SELFIE 的新型魯棒訓練方法。我們的主要想法是…

俄羅斯方塊【python,小游戲】

俄羅斯方塊&#xff08;Tetris&#xff09;是一款經典的俄羅斯益智游戲&#xff0c;游戲的核心玩法是通過移動、旋轉和放置不同形狀的方塊&#xff0c;使它們在游戲界面的底部形成完整的水平線。一旦水平線填滿&#xff0c;就會被清除&#xff0c;為新的方塊騰出空間。 在 Pyt…

Python GUI開發- PyQt5 開發小工具環境入門

前言 常見的python開發gui的庫有 Tkinter&#xff0c; PyQt5&#xff0c; wxPython等。本教程是選擇PyQt5 開發桌面小工具。 環境準備 只需pip安裝即可快速準備好開發環境 pip install pyqt5快速開始 創建一個空的window窗口 Qapplication()&#xff1a;每個GUI都必須包含…

【Linux】:文本編輯與輸出命令 輕松上手nano、echo和cat

&#x1f3a5; 嶼小夏 &#xff1a; 個人主頁 &#x1f525;個人專欄 &#xff1a; Linux深造日志 &#x1f304; 莫道桑榆晚&#xff0c;為霞尚滿天&#xff01; 文章目錄 &#x1f4d1;前言一、nano1.1 打開文件&#xff1a;1.2 常用快捷鍵&#xff1a;1.3 其他功能&#xff…

讀人工智能時代與人類未來筆記03_演變

1. 演變 1.1. 每個社會都找到了屬于自己的一套適應世界的方法 1.1.1. 適應的核心&#xff0c;是有關人類心智與現實之間關系的概念 1.1.2. 人類認識周圍環境的能力 1.1.2.1. 這種能力通過知識獲得&#xff0c;同時也受到知識…

【渲染數學-01】如何模擬靜態流(上)

文章目錄 一、說明二、摘要三、簡介四、穩定的納維-斯托克斯4.1 基本方程4.2 解決方法 一、說明 關于流體物質的仿真和模擬&#xff0c;需要流體理論方面的一般知識。我們這里從基本流體方程入手&#xff0c;詳細解釋如何實現流體仿真的每一個具體步驟。 二、摘要 構建類似流體…

C# 實現郵件推送功能

&#x1f3c6;作者&#xff1a;科技、互聯網行業優質創作者 &#x1f3c6;專注領域&#xff1a;.Net技術、軟件架構、人工智能、數字化轉型、DeveloperSharp、微服務、工業互聯網、智能制造 &#x1f3c6;歡迎關注我&#xff08;Net數字智慧化基地&#xff09;&#xff0c;里面…

詳解pytorch中循環神經網絡(RNN、LSTM、GRU)的維度

詳解pytorch中循環神經網絡&#xff08;RNN、LSTM、GRU&#xff09;的維度 RNNtorch.nn.rnn詳解RNN輸入輸出維度 LSTMtorch.nn.LSTM詳解LSTM輸入輸出維度 GRUtorch.nn.GRU詳解GRU輸入輸出維度 三種RNN的示例 首先如果你對RNN、LSTM、GRU不太熟悉&#xff0c;可點擊查看。 RNN …

python數據可視化:層次聚類熱圖clustermap()

【小白從小學Python、C、Java】 【考研初試復試畢業設計】 【Python基礎AI數據分析】 python數據可視化&#xff1a; 層次聚類熱圖 clustermap() [太陽]選擇題 請問關于以下代碼表述錯誤的選項是&#xff1f; import seaborn as sns import matplotlib.pyplot as plt import n…

代碼隨想錄—— 填充每個節點的下一個右側節點指針(Leetcode116)

題目鏈接 層序遍歷 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _…

開源的全自動生成視頻文案、視頻素材、視頻字幕、視頻背景音樂的AI項目

網址 https://github.com/harry0703/MoneyPrinterTurbo 只需提供一個視頻 主題 或 關鍵詞 &#xff0c;就可以全自動生成視頻文案、視頻素材、視頻字幕、視頻背景音樂&#xff0c;然后合成一個高清的短視頻。 如果用來做視頻&#xff0c;可以先收藏一下&#xff0c;值得本地…

51 單片機[2-1]:點亮一個LED

一、在 Keil5 中新建項目 打開 Keil5 &#xff0c;點擊 Project —— new μVision Project 新建文件夾 KeilProject &#xff0c;以后的項目都在這個文件夾下&#xff0c;再建一個文件夾 2-1 點亮一個LED。在該文件夾下創建名為 Project 的文件&#xff0c;并保存。推薦起這…

Python快速入門3:面向對象OOP(需要有編程基礎)

面向對象是什么&#xff1a; 面向對象編程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一種編程范式&#xff0c;它以對象為基礎&#xff0c;將數據和操作封裝在一起以創建可重用的代碼模塊。在面向對象編程中&#xff0c;對象是程序的基本單元&…

mysql實戰題目練習

1、創建和管理數據庫 創建一個名為school的數據庫。 列出所有的數據庫&#xff0c;并確認school數據庫已經創建。 如果school數據庫已經存在&#xff0c;刪除它并重新創建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…

Spring Boot:異常處理

Spring Boot 前言使用自定義錯誤頁面處理異常使用 ExceptionHandler 注解處理異常使用 ControllerAdvice 注解處理異常使用配置類處理異常使用自定義類處理異常 前言 在 Spring Boot 中&#xff0c;異常處理是一個重要的部分&#xff0c;可以允許開發者優雅地處理應用程序中可…

復利效應(應用于成長)

應用 每個人在智力、知識、經驗上&#xff0c;復利效應都一樣&#xff0c;只要能積累的東西&#xff0c;基本上最終都會產生復利效應。 再來看一下復利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用時&#xff0c;一定要注意4個限定條件&a…