MYSQL-數據庫-DDL-DML-DQL-DCL-基礎學習

MySql概念:

? ? ? ? 建立在關系模型基礎上,有多張相互連接的二維表組成的數據庫

SQL通用語法:

? ? ? ? 1.SQL語句可以單行或多行書寫,以分號結尾

? ? ? ? 2.SQL語句可以使用空格/縮進來增強語句的可讀性

? ? ? ? 3.MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大寫

? ? ? ? 4.注釋

????????單行注釋:-- 注釋內容,或#注釋內容(mysql特有)

? ? ? ? 多行注釋:/*注釋內容*/

mysql定義字符集

設置表字符集
alter table 表名 default character set utf8;修改需要插入中文字段的屬性
alter table 表名 change 列名 列名 varchar(255) character set utf8;修改數據庫字符集
編輯配置文件my.cnf
client下
default-character-set=utf8
mysqld下
character-set-server=utf8
重啟mysql
show variables like '%character%'

SQL分類

DDL數據庫定義語言,用來定義數據庫對象(數據庫,表,字段)DML數據庫操作語言,用來定義對數據庫表中的數據進行增刪改DQL數據庫查詢語言,用來查詢數據庫中表的記錄DCL數據庫控制語言,用來創建數據庫用戶,控制數據庫的訪問權限

DDL-數據庫操作

? ? ? ?查詢所有數據庫
SHOW DATABASES;
查詢當前數據庫
SELECT DATABASE();
創建數據庫
CREATE DATABASE [IF NOT EXISTS]數據庫名 [DEFAULT CHARSET字符集] [COLLATE排序規則];IF NOT EXISTS:數據庫不存在的情況下
DEFAULT CHARSET:字符集,可以省略,默認是UTF-8
COLLATE:排序規則
方括號中的東西都是可選的
CREATE DATABASE 表名 CHARACTER SET utf8;
刪除數據庫
DROP DATABASE 數據庫名
使用
USE [if exists]數據庫名
方括號表示如果存在,則刪除

DDL-表操作-查詢

查詢當前數據庫所有表
SHOW TABLES;
查詢表結構
DESC 表名;
查詢指定表的建表語句
SHOW CREATE TABLE 表名;

DDL-表操作-創建

創建表
mysql> create table test(-> id int comment '編號',-> name varchar(50) comment '姓名',-> age  int comment '年齡',-> xingbie varchar(1) comment '性別'-> ) comment 'user表';
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+---------------+
| Tables_in_zhu |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)mysql>
這里的test是表名,id,name,age,xingbie是列數,int和varchar是類型,varchar(1)是長度,comment是注釋
圓括號外的comment是注釋,說明是一個表

DDL表操作-數據類型

數值類型
類型            大小        有符號SIGNED范圍        無符號UNSIGNED范圍        描述
TINYINT        1byte        -128,127                0,255                小數數值
SMALLINT       2byte        -32768,32767           0,65536               大整數值
MEDIUMINT      3byte        -8388608,8388607       0,16777215            大整數值
INT或INTEGER   4byte        -2147483648,2147483647 0,4294967295          大整數值
BIGINT         8byte        -2^63,2^63-1            0,2^64-1              極大整數1
FLOAT          4byte                                                       單精度浮點值
DOUBLE         8byte                                                         雙精度浮點值
DECTMAL                                                                   小數值
字符串類型
類型                大小                    描述
CHAR                0-255bytes            定長字符串
VARCHAR             0-65535bytes          變長字符串
TINYBLOB            0-255bytes            不超過255個字符的二進制數據
TINYTEXT            0-255bytes            短文本字符串
BLOB                0-65 535bytes         長文本數據
MEDIUMBLOB          0-16 777 215 bytes    二進制形式中等長度文本數據
MEDIUMTEXT          0-16 777 215 bytes    中等長度文本數據
LONGBLOB            0-4 294 967 295bytes  二進制形式的極大文本數據
LONGTEXT            0-4 294 967 295bytes  極大文本數據  
日期類型
類型        大小       范圍                                    格式            描述
DATE        3        1000-01-01--9999-12-31                YYYY-MM-DD        日期值
TIME        3        -838:59:59--838:59:59                 HH:MM:SS          時間值持續時間
YEAR        1        1901--2155                            YYYY              年份值
DATETIME    8        1000-01-01 00:00:00--9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期時間
TIMESTAMP   4         1970-01-01 00:00:01--2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和時間值,時間戳   

DDL-表操作-修改

1.添加字段
ALTTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋] [約束];
2.修改數據類型
ALTER TABLE 表名 MODIFY 字段名 新數據類型(長度);修改字段名和字段類型
ALTER TABLE 表名 CHANGE 舊的字段名  新字段名 新類型(長度) [COMMENT 注釋][約束];
3.刪除字段
ALTER TABLE 表名 DROP 字段名
4.修改表名
ALTER TABLE 表名 RENAME TO 新表名;

5.刪除表

DROP TABLE [if exists]表名;  如果存在
TRUNCATE TABLE 表名;    //刪除指定表,并且重新創建

DML介紹:

? ? ? ? DML用來對數據庫中表的記錄進行增刪改操作,是數據庫的操作語言

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

DML-添加數據

1.給指定字段添加數據
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,...),(值1,值2,...);

注意:

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

DML-修改數據

UPDATE 表名 SET 字段名1=值1,字段名2=值2,....[WHERE 條件];注意:修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有數據

例子:

修改id為1的name值為'你好'
update newtable set name='你好' where id=1;

DML-刪除數據

DELETE FROM 表名 [WHERE 條件];

例子:

刪除newxingbie為女的所有數據

刪除所有數據
DELETE from newtable;

DQL-介紹

DQL數據庫查詢語言,用來查詢數據庫中表的記錄

查詢語句:SELET

DQL-語法:

SELECT字段列表
FROM表名列表
WHERE條件列表
GROUP BY分組字段列表
HAVING分組后條件列表
ORDER BY排序字段列表
LIMIT分頁參數
查詢分類
基本查詢條件查詢(WHERE)聚合函數(count,max,avg,sum)分組查詢(GROUP BY)排序查詢(ORDER BY)分頁查詢(LIMIT)

DQL-基本查詢

1.查詢多個字段
SELECT 字段1,字段2,字段3... FROM 表名;
SELECT * FROM 表名;
2.設置別名
SELECT 字段1 [AS 別名],[AS 別名2],....FROM 表名;

例如起字段名為 工作地址

具有一次性,單一性,第二次查詢不用as則為原來的樣子

如下,沒有as也是同樣效果,所以as可以省略

3.去除重復記錄? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
SELECT DISTINCT 字段列表 FROM 表名;

例如

DML-條件查詢

1.語法:

SELECT 字段列表 FROM 表名 WHERE 條件列表;

2.條件

比較運算符                功能
>                        大于
>=                       大于等于
<                        小于           
<=                       小于等于
=                        等于
<>或!=                   不等于
BETWEEN...AND...         在某個范圍之內(含量小,最大值)
IN(...)                  在in之后的列表中的值,多選一
LIKE 占位符               模糊匹配(...匹配單個字符,%匹配任意個字符)
IS NULL                  是NULL########################################################################
邏輯運算符                    功能
AND或&&                      并且(多個條件同時成立)
OR或||                       或者(多個條件任意一個成立)
NOT或!                      非,不是
is null的使用
查詢有身份證號的員工信息
select * from yg where idcard id is not null;查詢沒有身份證號的員工信息
select * from yg where idcard id is null

例子

年齡不等于88的員工

年齡在15歲(包含)到20歲(包含)之間的員工信息

還有一個是between...and在某個范圍之內的來匹配

性別為女,年齡小于25

or語句使用-查詢年齡的等于18或20或40的員工信息

in是滿足括號中一個條件即可

篩選名字為兩個字的員工like使用
select * from yg where name like '__';

查身份證號最后一位是5的員工like語句

select * from yg where idcard like '%5';
%5代表最后一個字符是5
或者
select * from yg where idcard like '_________________5';
和上一個一樣

DQL-聚合函數

1.常見聚合函數
函數        功能
count       統計數量
max         最大值
min         最小值
avg         平均值
sum         求和

語法:

SELECT 聚合函數(字段列表) FROM 表名;

注意:null值不參與聚合運算

1.統計該企業員工數量

2.統計該企業員工的平均年齡

3.統計企業員工最大年齡和最小年齡

4.統計西安地區員工的年齡之和

DQL-分組查詢

1.語法
SELECT 字段列表 FROM 表名 [WHERE 條件] GROUP BY 分組字段名 [HAVING 分組后過濾條件]

2.where和having區別

執行時機不同:where是分組之前進行過濾,不滿足where條件,而having是分組之后對結果進行過濾
判斷條件不同:where不能對聚合函數進行判斷,而having可以
3.根據性別分組,統計男員工和女員工的數量

4.根據性別分組,統計男員工和女員工的平均年齡

5.查詢年齡小于45的員工,并根據工作地址分組,獲取員工數量大于2的工作地址

起別名查詢

DQL-排序查詢

1.語法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式2;
2.排序方式
ASC:升序(默認值)
DESC:降序
3.根據年齡對公司的員工進行升序排序
SELECT * FROM yg ORDER BY age asc;

4.根據入職時間,對員工進行降序排序
SELECT * FROM yg ORDER BY ENDRYDATE DESC;

5.根據年齡對公司的員工盡心升序排序,年齡相同,則按照入職時間降序排序

DQL-分頁查詢

1.語法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查詢記錄數;
起始索引從0開始,起始索引=(查詢頁碼-1)*每頁顯示記錄數
分頁查詢是數據庫的方言,不同的數據庫有不同的實現,mysql中是LIMIT
如果查詢的是第一頁數據,起始索引可以省略,直接簡寫為limit 10
2.查詢第一頁數據,顯示10條記錄

起始為:(1-1)*10

或者

2.查詢第2頁員工數據,每頁顯示10條記錄

查看第1行數據

DQL-案例練習

1.查詢年齡為20,21,22,23歲的女性員工信息

2.查詢性別為男,并且年齡在20到40歲以內的姓名為三個字的員工

3.查詢員工表中,年齡小于60的,男性員工和女性員工的人數

4.查詢所有年齡小于等于35歲員工的姓名和年齡,并對查詢結果按年齡升序排序,如果年齡相同按入職時間降序排序

5.查詢性別為男,且年齡在20-40歲以內的前5個員工信息,對查詢的結果俺年齡升序排序,年齡相同按入職時間排序

DQL-執行順序

from     表名列表
where    條件列表
group by 分組字段列表
having   分組后條件列表
select   字段列表
order by 排序字段列表
limit    分頁參數

DCL數據庫控制語言,用來管理數據庫用戶,控制數據庫的訪問權限

DCL管理用戶

1.查詢用戶

use  mysql;
select * from user;

2.創建用戶

create user '用戶名'@'主機名' identifled by '密碼';

3.修改用戶密碼

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

4.刪除用戶

drop user'用戶名'@'主機名';
DCL-權限控制

mysql中定義了很多種權限,但是常用的就以下幾種

權限                                    說明
ALL,ALL PRIVLEGES                      所有權限
SELECT                                 查詢數據
INSERT                                 插入數據
UPDATE                                 修改數據
DELETE                                 刪除數據
ALTER                                  修改表
DROP                                   刪除數據庫/表/視圖
CREATE                                 創建數據庫/表

?1.查詢權限

SHOW GRANTS FOR '用戶名'@'主機名';

例子

賦給root@%所有的數據庫和表的權限之后如下

2.授予權限

GRANT 權限列表 ON 數據庫名.表名 TO '用戶名'@'主機名';

授予me用戶對于sjk這個數據庫的所有權限

授予root@%所有權限對于所有數據庫和表

3.撤銷權限

REVOKE 權限列表 ON 數據庫名.表名 FROM '用戶名'@'主機名';

撤銷root@%的所有權限

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

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

相關文章

SpringBoot核心框架之AOP詳解

SpringBoot核心框架之AOP詳解 一、AOP基礎 1.1 AOP概述 AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面編程&#xff0c;面向方面編程&#xff09;&#xff0c;其實就是面向特定方法編程。 場景&#xff1a;項目部分功能運行較慢&#xff0c;定位執行耗時…

【RK3588嵌入式圖形編程】-SDL2-構建模塊化UI

構建模塊化UI 文章目錄 構建模塊化UI1、概述2、創建UI管理器3、嵌套組件4、繼承5、多態子組件6、總結在本文中,將介紹如何使用C++和SDL創建一個靈活且可擴展的UI系統,重點關注組件層次結構和多態性。 1、概述 在前面的文章中,我們介紹了應用程序循環和事件循環,這為我們的…

第四屆圖像、信號處理與模式識別國際學術會議(ISPP 2025)

重要信息 會議官網&#xff1a;www.icispp.com 會議時間&#xff1a;2025年3月28-30日 會議地點&#xff1a;南京 簡介 由河海大學和江蘇大學聯合主辦的第四屆圖像、信號處理與模式識別國際學術會議&#xff08;ISPP 2025) 將于2025年3月28日-30日在中國南京舉行。會議主…

低代碼與開發框架的一些整合[2]

1.分析的項目資源說明 經過近期的的不斷分析與運行對比&#xff0c;最終把注意力集中在了以下幾個框架&#xff1a; 01.dibootdiboot.diboot: 寫的更少, 性能更好 -> 為開發人員打造的低代碼開發平臺。Mybatis-plus關聯查詢&#xff0c;關聯無SQL&#xff0c;性能高10倍&a…

Spring Boot 中事務的用法詳解

引言 在 Spring Boot 中&#xff0c;事務管理是一個非常重要的功能&#xff0c;尤其是在涉及數據庫操作的業務場景中。Spring 提供了強大的事務管理支持&#xff0c;能夠幫助我們簡化事務的管理和控制。本文將詳細介紹 Spring Boot 中事務的用法&#xff0c;包括事務的基本概…

Java面試——Tomcat

優質博文&#xff1a;IT_BLOG_CN 一、Tomcat 頂層架構 Tomcat中最頂層的容器是Server&#xff0c;代表著整個服務器&#xff0c;從上圖中可以看出&#xff0c;一個Server可以包含至少一個Service&#xff0c;用于具體提供服務。Service主要包含兩個部分&#xff1a;Connector和…

第4章 信息系統架構(三)

4.3 應用架構 應用架構的主要內容是規劃出目標應用分層分域架構&#xff0c;根據業務架構規劃目標應用域、應用組和目標應用組件&#xff0c;形成目標應用架構邏輯視圖和系統視圖。從功能視角出發&#xff0c;闡述應用組件各自及應用架構整體上&#xff0c;如何實現組織的高階…

python小項目編程-中級(1、圖像處理)

目錄 圖像處理 實現 測試 unittest pytest 圖像處理 實現界面化操作&#xff0c;使用PIL庫實現簡單的圖像處理功能&#xff0c;如縮放&#xff08;設置縮放比例&#xff09;、旋轉和濾鏡、對比度調整、亮度調整、灰度圖、二值化圖&#xff08;二值圖如果使用的是彩色圖片需…

【Leetcode 每日一題】2209. 用地毯覆蓋后的最少白色磚塊

問題背景 給你一個下標從 0 0 0 開始的 二進制 字符串 f l o o r floor floor&#xff0c;它表示地板上磚塊的顏色。 f l o o r [ i ] floor[i] floor[i] 為 ‘0’ 表示地板上第 i i i 塊磚塊的顏色是 黑色 。 f l o o r [ i ] floor[i] floor[i] 為’1’ 表示地板上第 i …

Docker 性能優化指南

Docker 提供了強大的容器化功能&#xff0c;能夠幫助開發者在不同的環境中構建、測試和部署應用。然而&#xff0c;隨著容器化應用的不斷增長&#xff0c;Docker 容器可能會面臨一些性能瓶頸&#xff0c;影響其運行效率、資源占用和擴展能力。為了確保容器在生產環境中的高效運…

2025 WE DAY品牌日| 天璇II WE X7 Pro充電樁震撼發布,能效電氣開啟充電革命

隨著新能源產業的迅猛發展,充電樁作為電動汽車能量補給的重要基礎設施,正在成為市場關注的焦點。能效電氣作為充電樁領域的佼佼者,專注于研發高效、智能的充電解決方案,為電動汽車的普及與可持續發展鋪設了堅實的基礎。 2025年2月21日,能效電氣在深圳盛大舉辦了以“以創新 引未…

< OS 有關 > Ubuntu 24 SSH 服務器更換端口 in jp/us VPSs

原因&#xff1a; 兩臺 VPS 的 ssh 端口一直被密碼重試&#xff0c; us 這臺已經封了 632, jp 這臺兩周前清過一次 sqlite3 數據&#xff0c;現在贊到 1008 Fail2Ban 是使用 sqlite3 來記錄&#xff0c;數據量大后&#xff0c;硬盤的 I/O 會飆升&#xff0c;我有寫過一個 app…

MATLAB學習之旅:數據插值與曲線擬合

在MATLAB的奇妙世界里,我們已經走過了一段又一段的學習旅程。從基礎的語法和數據處理,到如今,我們即將踏入數據插值與曲線擬合這片充滿魅力的領域。這個領域就像是魔法中的藝術創作,能夠讓我們根據現有的數據點,構建出更加豐富的曲線和曲面,從而更好地理解和描述數據背后…

若依-@Excel新增注解numberFormat

Excel注解中原本的scale會四舍五入小數&#xff0c;導致進度丟失 想要的效果 顯示的時候保留兩個小數真正的數值是保留之前的數值 還原過程 若以中有一個專門的工具類&#xff0c;用來處理excel的 找到EXCEL導出方法exportExcel()找到writeSheet,寫表格的方法找到填充數據的方法…

LeetCode 熱題 100_搜索二維矩陣(64_74_中等_C++)(二分查找)(暴力破解法;Z字形查找;一次二分查找)

LeetCode 熱題 100_搜索二維矩陣&#xff08;64_74&#xff09; 題目描述&#xff1a;輸入輸出樣例&#xff1a;題解&#xff1a;解題思路&#xff1a;思路一&#xff08;暴力破解法&#xff09;&#xff1a;思路二&#xff08;Z字形查找&#xff09;&#xff1a;思路三&#x…

從CNN到Transformer:遙感影像目標檢測的技術演進(礦產勘探、精準農業、城市規劃、林業測量、軍事目標識別和災害評估等)

在遙感影像分析領域&#xff0c;目標檢測一直是研究熱點之一。隨著高分辨率對地觀測系統的不斷發展&#xff0c;遙感影像的分辨率和數據量呈爆發式增長&#xff0c;如何高效、準確地從海量數據中提取有用信息&#xff0c;成為了一個亟待解決的問題。近年來&#xff0c;深度學習…

【rt-thread】rt-thread 控制 led 的兩種方式

1. pin設備 #define LED_PIN 3int led(void) {rt_uint8_t count;rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for(count 0 ; count < 10 ;count){ rt_pin_write(LED_PIN, PIN_HIGH);rt_kprintf("led on, count : %d %d\r\n", count, rt_pin_read(LED_PIN));…

Excell 代碼處理

文章目錄 Excell 代碼處理cvc格式xlsl格式小結 Excell 代碼處理 有時候要對excell進行分析&#xff0c;或者數據的導入導出&#xff0c;這個時候如果可以用代碼讀寫分析操作那么會方便很多 cvc格式 CSV&#xff08;Comma-Separated Values&#xff0c;逗號分隔值&#xff09;是…

新手小白如何挖掘cnvd通用漏洞之存儲xss漏洞(利用xss釣魚)

視頻教程和更多福利在我主頁簡介或專欄里 &#xff08;不懂都可以來問我 專欄找我哦&#xff09; 如果對你有幫助你可以來專欄找我&#xff0c;我可以無償分享給你對你更有幫助的一些經驗和資料哦 目錄&#xff1a; 一、XSS的三種類型&#xff1a; 二、XSS攻擊的危害&#x…

代碼隨想錄算法【Day52】

Day51 101. 孤島的總面積 思路 從周邊找到陸地然后 通過 dfs或者bfs 將周邊靠陸地且相鄰的陸地都變成海洋&#xff0c;然后再去重新遍歷地圖 統計此時還剩下的陸地 代碼 #include <iostream> #include <vector> using namespace std; int dir[4][2] {-1, 0, …