MySQL數據庫(二)- SQL

目錄

?編輯

一?DDL

(一 數據庫操作

1 查詢-數據庫(所有/當前)

2 創建-數據庫

3 刪除-數據庫

4 使用-數據庫

(二 表操作

1 創建-表結構

2 查詢-所有表結構名稱

3 查詢-表結構內容

4 查詢-建表語句

5 添加-字段名+數據類型

6 修改-字段數據類型

7 修改-字段+字段數據類型

8 刪除-字段

9 修改-表名

10 刪除-表

11 刪除-表中數據

(三 Datagrip圖形化界面激活碼使用

二 DML-表-增刪改數據

(一 添加數據

1 給指定字段添加數據

2 給全部字段添加數據(逐個)

3 批量添加數據

(二 修改數據

1 修改表中的數據

2 刪除表中的數據

三 DQL-表-查數據

?查詢數據

(一 基礎查詢

(二 條件查詢 - where

(三 聚合查詢 - count/max/min/sum/avg

(四 分組查詢 - group by ... having

(五 排序查詢 - order by

(六 分頁查詢 - limit

(七 補充

四 DCL-權限控制

(一 查詢用戶

(二?創建用戶

(三 修改用戶密碼

(四?刪除用戶

(五 權限控制


一?DDL

(一 數據庫操作

1 查詢-數據庫(所有/當前)

1 所有數據庫:

show databases;

2 查詢當前數據庫:

select database();

2 創建-數據庫

可以定義數據庫的編碼方式

create database if not exists ax1;

create database ax2;

3 刪除-數據庫

drop database ax1;

4 使用-數據庫

use ax1;
select database();

切換當前數據庫位置并驗證是否為當前數據庫:

(二 表操作

1 創建-表結構

2 查詢-所有表結構名稱

show tables;

圖形化展示

3 查詢-表結構內容

desc?myfirst_tb;

圖形化展示:

4 查詢-建表語句

show create table first_tb;

圖形化展示:

5 添加-字段名+數據類型

alter table 表名 add 字段名 類型 注釋;

alter table emp add nickname varchar(10) comment '昵稱';

圖形化展示:

6 修改-字段數據類型

alter table 表名 modify 字段名 新數據類型;

alter table emp modify IDcard char(19);

圖形化展示

7 修改-字段+字段數據類型

alter table 表名 change 舊字段名 新字段名 類型 comment 注釋;

alter table emp change IDcard idcard char(18) comment '身份證';

圖形化展示:

8 刪除-字段

alter table 表名 drop 字段名;

alter table emp drop ax2;

圖形化展示:

9 修改-表名

alter table 表名 rename to 新表名;

alter table emp rename to newemp;

圖形化展示:

10 刪除-表

drop table if exists 表名;

drop table if exists 表名;

圖形化展示:

11 刪除-表中數據

表結構保留TRUNCATE TABLE 只會刪除表中的所有數據但不會刪除表本身或其結構定義。因此,使用 DESCSHOW COLUMNS FROM myfirst_tbl1; 時,您仍然可以看到表的字段定義。

truncate table 表名;

truncate table myfirst_tb1;

圖形化展示:

(三 Datagrip圖形化界面激活碼使用

網址:

2025 最新Jetbrains激活服務器 全部產品均適用 | ahhhhfs - A姐分享

二 DML-表-增刪改數據

1 概念:DML全稱Data Manipulation Language(數據操作語言),用來對數據庫中表的數據記錄進行增刪改。

  • 添加數據:(INSERT)
  • 修改數據:(UPDATE)
  • 刪除數據:(DELETE)

(一 添加數據

1 給指定字段添加數據

insert into 表名 (字段名1,字段名2...)values (值1,值2...);

2 給全部字段添加數據(逐個)

insert into 表名 values (值1,值2);

3 批量添加數據

insert into 表名(字段名1,字段名2...)values (值1,值2...),(值1,值2)...;

insert into 表名? values(值1,值2...);

# 逐個添加
insert into first_tb (id, name, age, gender) values (2,'超哥',100,'男');insert into first_tb values (3,'小明',100,'女');# 批量添加
insert into first_tb (id, name, age, gender) values (4,'張三',100,'男'),(5,'李四',100,'男'),(6,'劉六',21,'男');insert into first_tb values (7,'王五',32,'男'),(8,'he',12,'男'),(9,'ok',22,'女');# 查看table 數據
select * from first_tb;

注意事項:

  • 插入數據時,指定的字段順序需要與值的順序一一對應。
  • 字符串和日期類型應該包含在引號中。
  • 插入的數據大小,應該在字段的規定范圍內。

(二 修改數據

1 修改表中的數據

updata 表名 set 字段名1 = 值1 ,字段名2 = 值2 ,.......where 條件;

注意事項

  • 修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有數據。
# 將first_tb表當中的id為1的數據項的name修改為it
update first_tb set name = 'it' where id = 1;# 將first_tb表當中的name為it的數據項的id修改為0,name修改為it_er
update first_tb set id = 0,name='it_er' where name = 'it';

2 刪除表中的數據

delete from 表名 where 條件;

注意事項

  • 修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有數據。
  • 可以使用and or 進行范圍判定。
# 刪除id為0的數據項
delete from first_tb where id = 0;
# 刪除id為3并且姓名為小明的數據項
delete from first_tb where id = 3 and name='小明';# 刪除id為3或姓名為小明的數據項
delete from first_tb where id = 3 or name='小明';


三 DQL-表-查數據

1 概念:DQL全稱Data Query Language(數據查詢語言),數據查詢語言,用來查詢數據庫中表的記錄。

  • 查詢數據關鍵字:(SELECT)?

?查詢數據

(一 基礎查詢

1 查詢多個字段

select 字段1,字段2...from 表名;

# 返回first_tb表中字段name和id字段列表
select name,id from first_tb;

2 查詢所有字段

select? * from 表名;

# 返回first_tb表中的所有字段列表
select * from first_tb;

3 設置別名并查詢

select 字段1 as 別名1 ,字段2 as 別名2 ...from 表名;

# 設置別名(as可省略)作用是將表中的字段顯示給我們時更加容易區分
select id as ID , name as NAME from first_tb;

4 去除重復項

select distinct 字段列表 from 表名;

# 刪除id重復項
select distinct id from first_tb;

5 代碼實現

insert into user_pro (id, worker, gender, age, idcard, workaddress, entrydate, name)
values (1, '1000000101', '男', 18, '123456789123456781', '安徽合肥', '2000-01-01', '超哥'),(2, '1000000102', '男', 28, '123456789123456782', '安徽阜陽', '2000-11-01', '張三'),(3, '1000000103', '男', 38, '123456789123456783', '安徽六安', '2000-02-01', '李四'),(4, '1000000104', '女', 48, '123456789123456784', '安徽淮北', '2000-03-01', '王五'),(5, '1000000105', '女', 58, '123456789123456785', '安徽亳州', '2000-04-01', '劉六'),(6, '1000000106', '女', 68, '123456789123456786', '安徽馬鞍山', '2000-05-01', '周七'),(7, '1000000107', '女', 78, '123456789123456787', '安徽黃山', '2000-01-11', '安八'),(8, '1000000108', '女', 88, '123456789123456788', '安徽滁州', '2000-01-31', '老八'),(9, '1000000109', '男', 98, '123456789123456789', '安徽安慶', '2000-01-21', '李白'),(10, '1000000110', '男', 18, '12345678912345678X', '安徽蕪湖', '2000-01-21', '杜甫'),(11, '1000000111', '男', 28, '123456789123456711', '安徽宿州', '2000-01-11', '駱賓王'),(12, '1000000112', '女', 38, '123456789123456722', '安徽蚌埠', '2000-03-01', '齊白石'),(13, '1000000113', '女', 48, '123456789123456733', '安徽宣稱', '2000-06-01', '薛之謙'),(14, '1000000114', '女', 58, '123456789123456744', '安徽池州', '2000-08-01', '小白'),(15, '1000000115', '男', 68, '123456789123456755', '安徽銅陵', '2000-05-01', '小黑'),(16, '1000000116', '男', 78, '123456789123456766', '安徽合肥', '2000-03-01', '小藍'),(17, '1000000117', '男', 88, '123456789123456777', '安徽合肥', '2000-07-01', '小一'),(18, '1000000118', '男', 98, '123456789123456788', '安徽合肥', '2000-08-01', '小兒'),(19, '1000000119', '男', 18, '123456789123456799', '安徽合肥', '2000-09-01', '小三'),(20, '1000000120', '男', 28, '12345678912345679X', '安徽合肥', '2000-10-01', '小四'),(21, '1000000121', '男', 38, '12345678912345677X', '安徽合肥', '2000-01-01', '小五');
update user_pro set workaddress='安徽淮南' where id=16;# 1 查詢name age worker字段列表
select name,age,worker from user_pro;
# 2 查詢所有字段
select name,id,worker,workaddress,gender,idcard,entrydate,age from user_pro;
select * from user_pro;
# 3 查詢所有員工的工作地址(將列表名顯示為工作地址 as 可省略)
select workaddress as '工作地址' from user_pro;
# 4 查詢員工的工作地址(去重)
select distinct workaddress from user_pro;

(二 條件查詢 - where

1 語法

select 字段列表 from 表名 where 條件列表;

2 條件符號

3 代碼實現:

# 1 查詢年齡等于88的員工信息
select * from users where age = 88;# 2 查詢年齡小于30的員工信息
select * from users where age <= 30;# 3 查詢沒有身份證的員工信息
select * from users where idcard is null ;# 4 查詢有身份證的員工信息
select * from users where idcard is not null;# 5 查詢年齡不等于88和78的員工信息
select * from users where age != 88 and age != 78;
select * from users where age <> 88 and age <> 78;# 6 查詢在28至58之間的員工信息(左右都包括)
select * from users where age between 28 and 58;
select * from users where age >= 28 && age <= 58;# 7 查詢性別為女且年齡小于58的員工信息
select * from users where gender = '女' and age < 58;# 8 查詢姓名為三個字的員工信息 <--> _ 單個字符  % 任意數個
select * from users where name like '___';# 9 查詢年齡為18 28 38 的員工信息
select * from users where age = 18 or age = 28 or age = 38;
select * from users where age in (18,28,38);# 10查詢身份證號最后一位是X的員工信息
select * from users where idcard like '%X';
select * from users where idcard like '_________________X'

(三 聚合查詢 - count/max/min/sum/avg

1? 語法

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

2 聚合函數:將一列數據作為一個整體,進行縱向計算。

  • count:? 統計數量
  • max? :最大值
  • min : 最小值
  • avg : 平均值
  • sum : 求和

3 注意事項

  • null不參與計算

4 代碼實現:

# 求員工最大年齡
select max(age) from users;# 統計員工數量
select count(name) from users;# 求平均年齡
select sum(age)/count(name) from users;
select avg(age) from users;# 求最小年齡
select min(age) from users;# 統計安徽合肥地區員工的年齡之和
select * from users where workaddress = '安徽合肥';
select sum(age) from users where workaddress = '安徽合肥';

(四 分組查詢 - group by ... having

1 語法

select? 字段列表 from 表名 where 條件 group by 字段分組名 having 分組后過濾條件 ;

2 where 與 having 的區別

  1. 執行時機不同:where 是分組之前進行過濾,不滿足where ,不參與分組;二having 是分組之后對結果進行過濾。
  2. 判斷條件不同:where 不能對聚合函數進行判斷,而having 可以。

3 注意事項:

  1. where先判斷,在進行聚合函數的處理,再進行having 的判斷處理。
  2. 分組之后,查詢的字段一般為聚合函數和分組字段,查詢其他字段無意義。

4 代碼實現:

# 1 根據性別分組,統計男性員工 和 女性員工的數量
select gender,count(*) from users group by gender;# 2 根據性別分組,統計男性員工和女性員工的平均年齡
select gender,avg(age) from users group by gender;# 3 查詢年齡小于等于58的員工,根據共組地址分組獲取員工數量大于等于2的地址
select workaddress,count(*) from users where age <= 58 group by workaddress having count(*)>=2;

(五 排序查詢 - order by

1 語法

select 字段列表 from 表名 order by 字段1? 排序方式1 ,字段2? 排序方式2;

2 排序方式

  • ASC:升序(默認值)
  • DESC:降序

3 注意事項:

  • 如果是多段字段排序,當地一個字段值相同時,會按第二個字段排序規則。

4 代碼實現:

# 1 根據年齡對公司的員工進行升序排序
select * from users order by age ASC ;# 2 根據入職時間對公司員工進行降序排序
select * from users order by entrydate DESC ;# 3 根據年齡對公司員工進行升序排序,年齡相同在按照入職時間進行降序排序
select * from users order by age ASC , entrydate DESC;

(六 分頁查詢 - limit

1 語法

select 字段列表 from 表名 limit 起始索引,查詢次數;

2 注意事項:

  1. 起始索引從0開始,其實索引 = (查詢頁碼 - 1)* 每頁顯示記錄數。
  2. 分頁查詢時數據庫的方言,不同數據庫有不同的實現,MySQL是limit。
  3. 如果查詢的是第一頁的數據,其實索引可以省略,之間簡寫為limit 10;

3 代碼實現:

# 1 從第1個開始展示,展示10個
select * from users limit 0,10;# 2 從第5個開始展示,展示5個
select * from users limit 4,5;

(七 補充

練習:

# 1 查詢年齡為28,18,38的員工信息
select * from users where age in (28,18,38);# 2 查詢姓名兩個字性別為男并且年齡為38至68之間的員工信息
select * from users where age between 38 and 68 && name like '__';# 3 統計員工表中奈年齡小于等于68,男性和女性分別的人數(age統計的是非空,如果想包含null則最好使用*)
select gender,count(age) from users where age <= 68 group by gender;# 4 查詢所有年齡小于68歲的員工的姓名和年齡,并對查詢結果按照年齡升序排序,如果年齡相同按入職時間降序排序
select name,age from users where age <= 68 order by age ASC ,entrydate DESC ;# 5 查詢性別為男,并且年齡在28-68之間的前五個員工信息,對查詢結果按年齡升序排序,年齡相同的按入職時間升序排序
select * from users where age between 28 and 68 and gender='男' order by age ASC , entrydate DESC limit 0,5;

編寫順序與執行順序

四 DCL-權限控制

1 概念:全稱Data Control Language(數據控制語言),用來管理數據庫用戶,控制數據庫的訪問權限。

注意事項:

  • 主機名可以使用%通配(任意)
  • 這類SQL開發成員操作的較少,主要是DBA(Data Administrator?數據庫管理員) 使用。

2 圖形化展示

(一 查詢用戶

1 語法?

  • use mysql;
  • select * from user;

2 代碼實現

# 查詢數據庫
use mysql;
select * from user;

(二?創建用戶

1 語法

create user '用戶名'@’主機名‘ identified by 密碼;

2 代碼實現

# 創建一個用戶anxian1 只能在當前主機localhost訪問,密碼123456
create user 'anxian1'@'localhost' identified by '123456';# 創建用戶anxian2 可以在任意主機訪問數據庫,密碼654321
create user 'anxian2'@'%' identified by '654321';

(三 修改用戶密碼

1 語法

alter user '用戶名'@’主機名‘ identified with mysql_native_password by '新密碼';

2 代碼實現

# 修改用戶anxian2 訪問密碼改為123456
alter user 'anxian2'@'%' identified with mysql_native_password by '123456';

(四?刪除用戶

1 語法

drop user '用戶名'@’主機名‘;

2 代碼實現

# 刪除anxian1@localhost用戶
drop user 'anxian1'@'localhost' ;

(五 權限控制

MySQL中定義了很多權限,常見的就以下幾種

1 查詢權限

show grants for? '用戶名'@‘主機名’;

# 查詢權限
show grants for 'anxian2'@'%';

2 授予權限

grant 權限列表 on 數據庫名.表名 to '用戶名'@‘主機名’;

# 授予權限
grant all on itheima.* to 'anxian2'@'%';

3 撤銷權限

revoke 權限列表 on 數據庫名.表名 from ‘用戶名’@‘主機名’;

# 撤銷權限
revoke all on itheima.* from 'anxian2'@'%';

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

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

相關文章

ARM嵌入式學習--第十天(UART)

--UART介紹 UART(Universal Asynchonous Receiver and Transmitter)通用異步接收器&#xff0c;是一種通用串行數據總線&#xff0c;用于異步通信。該總線雙向通信&#xff0c;可以實現全雙工傳輸和接收。在嵌入式設計中&#xff0c;UART用來與PC進行通信&#xff0c;包括與監控…

面試題-消失的數字-異或

消失的數字 數組nums包含從0到n的所有整數&#xff0c;但其中缺了一個。請編寫代碼找出那個缺失的整數。你有辦法在 O(n) 時間內完成嗎&#xff1f; 示例&#xff1a; 輸入&#xff1a;[3,0,1] 輸出&#xff1a;2 int missingNumber(int* nums, int numsSize) {}分析 本題對…

數據結構與算法之棧: LeetCode 1685. 有序數組中差絕對值之和 (Ts版)

有序數組中差絕對值之和 https://leetcode.cn/problems/sum-of-absolute-differences-in-a-sorted-array/description/ 描述 給你一個 非遞減 有序整數數組 nums 請你建立并返回一個整數數組 result&#xff0c;它跟 nums 長度相同&#xff0c;且result[i] 等于 nums[i] 與數…

筆試-排列組合

應用 一個長度為[1, 50]、元素都是字符串的非空數組&#xff0c;每個字符串的長度為[1, 30]&#xff0c;代表非負整數&#xff0c;元素可以以“0”開頭。例如&#xff1a;[“13”, “045”&#xff0c;“09”&#xff0c;“56”]。 將所有字符串排列組合&#xff0c;拼起來組成…

Python3 OS模塊中的文件/目錄方法說明十七

一. 簡介 前面文章簡單學習了 Python3 中 OS模塊中的文件/目錄的部分函數。 本文繼續來學習 OS 模塊中文件、目錄的操作方法&#xff1a;os.walk() 方法、os.write()方法 二. Python3 OS模塊中的文件/目錄方法 1. os.walk() 方法 os.walk() 方法用于生成目錄樹中的文件名&a…

[Java]抽象類

1. 什么是抽象類&#xff1f; 1.1 定義&#xff1a; 抽象類是一個不能實例化的類&#xff0c;它是用來作為其他類的基類的。抽象類可以包含抽象方法和非抽象方法。抽象方法沒有方法體&#xff0c;子類必須重寫這些方法并提供具體的實現。抽象類可以有構造方法、成員變量、靜態…

css三角圖標

案例三角&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

跨越通信障礙:深入了解ZeroMQ的魅力

在復雜的分布式系統開發中&#xff0c;進程間通信就像一座橋梁&#xff0c;連接著各個獨立運行的進程&#xff0c;讓它們能夠協同工作。然而&#xff0c;傳統的通信方式往往伴隨著復雜的設置、高昂的性能開銷以及有限的靈活性&#xff0c;成為了開發者們前進道路上的 “絆腳石”…

深入解析 COUNT(DISTINCT) OVER(ORDER BY):原理、問題與高效替代方案

目錄 一、累計去重需求場景 二、COUNT(DISTINCT) OVER(ORDER BY) 語法解析 2.1 基礎語法 2.2 執行原理 三、三大核心問題分析

線性數據結構:單向鏈表

放棄眼高手低&#xff0c;你真正投入學習&#xff0c;會因為找到一個新方法產生成就感&#xff0c;學習不僅是片面的記單詞、學高數......只要是提升自己的過程&#xff0c;探索到了未知&#xff0c;就是學習。 目錄 一.鏈表的理解 二.鏈表的分類&#xff08;重點理解&#xf…

基于PyQt5打造的實用工具——PDF文件加圖片水印,可調大小位置,可批量處理!

01 項目簡介 &#xff08;1&#xff09;項目背景 隨著PDF文件在信息交流中的廣泛應用&#xff0c;用戶對圖片水印的添加提出了更高要求&#xff0c;既要美觀&#xff0c;又需高效處理批量文件。現有工具難以實現精確調整和快速批量操作&#xff0c;操作繁瑣且效果不理想。本項…

MCU內部ADC模塊誤差如何校準

本文章是筆者整理的備忘筆記。希望在幫助自己溫習避免遺忘的同時&#xff0c;也能幫助其他需要參考的朋友。如有謬誤&#xff0c;歡迎大家進行指正。 一、ADC誤差校準引言 MCU 片內 ADC 模塊的誤差總包括了 5 個靜態參數 (靜態失調&#xff0c;增益誤差&#xff0c;微分非線性…

嵌入式硬件篇---CPUGPUTPU

文章目錄 第一部分&#xff1a;處理器CPU&#xff08;中央處理器&#xff09;1.通用性2.核心數3.緩存4.指令集5.功耗和發熱 GPU&#xff08;圖形處理器&#xff09;1.并行處理2.核心數量3.內存帶寬4.專門的應用 TPU&#xff08;張量處理單元&#xff09;1.為深度學習定制2.低精…

03-機器學習-數據獲取

一、流行機器學習數據集 主流機器學習數據集匯總 數據集名稱描述來源MNIST手寫數字圖像數據集&#xff0c;由美國人口普查局員工書寫。MNIST官網ImageNet包含數百萬張圖像&#xff0c;用于圖像分類和目標檢測。ImageNet官網AudioSet包含YouTube音頻片段&#xff0c;用于聲音分…

doris:STRUCT

STRUCT<field_name:field_type [COMMENT comment_string], ... > 表示由多個 Field 組成的結構體&#xff0c;也可被理解為多個列的集合。 不能作為 Key 使用&#xff0c;目前 STRUCT 僅支持在 Duplicate 模型的表中使用。一個 Struct 中的 Field 的名字和數量固定&…

一次端口監聽正常,tcpdump無法監聽到指定端口報文問題分析

tcpdump命令&#xff1a; sudo tcpdump -i ens2f0 port 6471 -XXnnvvv 下面是各個部分的詳細解釋&#xff1a; 1.tcpdump: 這是用于捕獲和分析網絡數據包的命令行工具。 2.-i ens2f0: 指定監聽的網絡接口。ens2f0 表示本地網卡&#xff09;&#xff0c;即計算機該指定網絡接口捕…

“新月智能武器系統”CIWS,開啟智能武器的新紀元

新月人物傳記&#xff1a;人物傳記之新月篇-CSDN博客 相關文章鏈接&#xff1a;星際戰爭模擬系統&#xff1a;新月的編程之道-CSDN博客 新月智能護甲系統CMIA--未來戰場的守護者-CSDN博客 “新月之智”智能戰術頭盔系統&#xff08;CITHS&#xff09;-CSDN博客 目錄 智能武…

實驗六 項目二 簡易信號發生器的設計與實現 (HEU)

聲明&#xff1a;代碼部分使用了AI工具 實驗六 綜合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 實驗項目 要求利用硬件描述語言Verilog&#xff08;或VHDL&#xff09;、圖形描述方式、IP核&#xff0c;結合數字系統設計方法&#xff0c;在Quartus開發環境下&#xff…

SCRM系統如何提升客戶管理及業務協同的效率與價值

內容概要 在當今商業環境中&#xff0c;SCRM系統&#xff08;社交客戶關系管理系統&#xff09;正逐漸受到越來越多企業的關注和重視。隨著科技的發展&#xff0c;傳統的客戶管理方式已經無法滿足快速變化的市場需求&#xff0c;SCRM系統通過整合客戶數據和社交網絡信息&#…

[免費]微信小程序智能商城系統(uniapp+Springboot后端+vue管理端)【論文+源碼+SQL腳本】

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;看到一個不錯的微信小程序智能商城系統(uniappSpringboot后端vue管理端)&#xff0c;分享下哈。 項目視頻演示 【免費】微信小程序智能商城系統(uniappSpringboot后端vue管理端) Java畢業設計_嗶哩嗶哩_bilibili 項目介紹…