學習MySQL的第八天

海到無邊天作岸? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ?山登絕頂我為峰

一、數據庫的創建、修改與刪除

1.1 引言

? ? ? ? 在經過前面七天對于MySQL基本知識的學習之后,現在我們從基本的語句命令開始進入綜合性的語句的編寫來實現特定的需求,從這里開始需要我們有一個宏觀的思想,來俯瞰SQL命令

數據存儲過程?????
1.2 創建數據庫

? ? ? ? 創建數據庫是所有命令開始,而創建數據庫我們有三種方法

方式1:
CREATE DATABASE The_First
方式2:
# 指定一個特定的字符集,你可以使用 CREATE DATABASE 語句,并使用 CHARACTER SET 選項來指定字符集。
CREATE DATABASE The_First_2 CHARACTER SET utf8mb4
方式3:
#創建一個數據庫,如果它存在,則創建失敗,但是不報錯
CREATE DATABASE IF NOT EXISTS The_First CHARACTER SET 'gbk'


1.3 管理數據庫

? ? ? ? 通過?SHOW DATABASES 來實現對全部數據庫和指定數據庫的查詢和顯示

查看所有數據庫信息
SHOW DATABASES
查看指定數據庫信息
SHOW CREATE DATABASE The_first
全部數據庫
指定數據庫

? ? ? ? 通過 USE 來實現數據庫的切換,并使用?SHOW TABLES?查看當前數據庫中保存的數據表,以及通過 SELECT DATABASE() 語句來查看當下使用的數據庫是哪一個

# 切換數據庫
USE mysql
# 查看當前數據庫中保存的數據表
SHOW TABLES
# 查看當前使用的數據庫
SELECT DATABASE()
FROM DUAL;# 查看指定數據庫下保存的數據表
SHOW TABLES FROM mysql
切換數據庫?????
查看當前數據庫中保存的數據表
查看當前使用的數據庫
查看指定數據庫下保存的數據表
1.4 修改數據庫

? ? ? ? 當數據庫建立好之后,我們可能會需要對其中的信息進行修改,比如:更改數據庫字符集

SHOW CREATE DATABASE the_first
ALTER DATABASE the_first CHARACTER SET 'gbk'
修改前

修改后

? ? ? ? 小發現: 在我的電腦上可以,不知道在你的上面是否可行,但是不要輕易嘗試;reset master 清楚日志緩存,然后重新建立剛剛被刪除的表,已保存的數據就恢復,這是在我的電腦上可以實現的;具體原理我現在還無法理解

二、表的創建、修改、查詢

2.1?如何創建表

? ? ? ? 當你想要創建一個表時,一定要指明是在哪個數據庫創建的表

? ? ? ? 注意:

? ? ? ? (1)如果創建表時沒有明確指明使用的字符集,則默認最近使用的字符集

????????(2)使用VARCHAR來定義字符串,必須在使用VARCHAR時指明其長度

? ? ? ? (3)用戶需要具備管理員權限

? ? ? ? 方式1:?

CREATE TABLE IF NOT EXISTS departments( 
id INT,
name VARCHAR (255),
hire_data DATE
);# 查看表結構
DESC departments

? ? ? ? 方式2:基于現有的表創建新的表

CREATE TABLE the_first_3
AS 
SELECT id,name
FROM departments;SELECT *
FROM the_first_3



? ? ? ? 補充:查詢字段中的別名可以作為新創建的表的字段的名稱

CREATE TABLE the_first_4
AS
SELECT e.id '工號',e.name '姓名',t.position '職位'
FROM departments e JOIN department_position t
ON e.id = t.idSELECT *
FROM the_first_4DESC the_first_4




? ? ? ? 練習:

創建一個表emp1,實現對 departments表的復制,但不包含表數據
CREATE TABLE emp1
SELECT *
FROM departments
LIMIT 0;

2.2?修改表

? ? ? ? 通過?ALTER TABLE 來實現對表的修改,以及通過DESC 來實現表的顯示

DESC the_first_4;

? ? ? ? 2.2.1?添加一個字段

? ? ? ? 如果不加以說明,那么默認添加到最后一個字段

# 添加一個字段
ALTER TABLE the_first_4
ADD salary DOUBLE (10,2)# 指定添加位置
ALTER TABLE the_first_4
ADD phone_number VARCHAR(12) FIRST

? ? ? ? 2.2.2 添加字段到指定位置

? ? ? ? 補充:列名不能用單引號進行引用

ALTER TABLE the_first_4
ADD email VARCHAR(45) AFTER 姓名;

2.3?修改一個字段: 數據類型、長度

????????一般不會對數據類型進行修改,因為大概率會導致出錯,不過我們通常會對長度進行修改

# 修改長度
ALTER TABLE the_first_4
MODIFY `姓名` VARCHAR(300);
DESC the_first_4;

? ? ? ? 修改默認值:如果沒有輸入值,那么就默認為 NO,對于在修改前插入的沒有影響

ALTER TABLE the_first_4
MODIFY salary VARCHAR(100) DEFAULT 'NO';
DESC the_first_4;
SELECT *
FROM the_first_4

2.4?重命名和刪除

? ? ? ? 重命名和刪除既可以用于字段也可以用于表等

# 重命名一個字段
ALTER TABLE the_first_4
CHANGE salary month_salary DOUBLE(10,2);
SELECT *
FROM the_first_4;# 刪除一個字段
ALTER TABLE the_first_4
DROP phone_number
# 或 DROP COLUMN phone_number
SELECT *
FROM the_first_4;

? ? ? ? 對于重命名表和重命名字段的區別基本相同,而刪除表會將表的結構和數據全部都刪除掉,清空表是清空表中的所有數據,但是表結構保留,代碼在下面,大家可以自行嘗試

# 重命名表
# 方式1:
RENAME TABLE the_first_4
TO the_first_one
# 方式2:
ALTER TABLE the_first_one
RENAME TO the_first_4# 刪除表
# 將表的結構和數據全部都刪除掉
DROP TABLE the_first_3# 清空表
# 清空表中的所有數據,但是表結構保留
CREATE TABLE the_first_3
AS
SELECT id,`name`
FROM departmentsTRUNCATE TABLE the_first_3
SELECT * FROM the_first_3

三、DCL中的 COMMIT 和 ROLLBACK

? ? ? ? 3.1 注意:

? ? ? ? (1) COMMIT: 提交數據,一旦執行之后,數據就被永久的保存到數據庫之中,并且數據不能被回滾(撤銷)
? ? ? ? (2) ROLLBACK:執行回滾操作,執行之后可以實現數據的回滾,回滾到最近的 COMMIT操作

? ? ? ? 3.2 補充:對比 TRUNCATE TABLE 和?DELETE FROM
? ? ? ? (1) 相同點:都可以實現對表中所有數據的刪除,同時保留表結構。
? ? ? ? (2) 不同點:TRUNCATE TABLE:一旦執行此操作,表數據全部清除。同時,數據是不可以回滾的。
? ? ? ? (3) DELETE FROM: 一旦執行此操作,表數據可以全部清除(不帶WHERE)。同時,數據是可以實現回滾
? ? ? ? 3.3?DDL 和 DML 的說明

????????(1)?DDL的操作一旦執行,就不可回滾。指令SET autocommit=FALSE對DDL操作失效。因為在執行完DDL之后,一定會進行一次COMMIT,所以無法回滾
? ? ? ? (2)?DML的操作默認情況,一旦執行,也是不可回滾的。但是,如果在執行DML之前,執行了 SET autocommit = FALSE ,則執行的DML操作就可以實現回滾。

# 演示:
CREATE TABLE the_first_2
AS
SELECT *
FROM the_first_4
1.
COMMIT;
2.
SELECT *
FROM the_first_2
3.
SET autocommit = FALSE;
4.
DELETE FROM the_first_2
5.
SELECT *
FROM the_first_2
6.
ROLLBACK;
7.
SELECT *
FROM the_first_2# TRUNCATE
CREATE TABLE the_first_1
AS
SELECT *
FROM the_first_4
1.
COMMIT; # 保存
2.
SELECT *
FROM the_first_1
3.
SET autocommit = FALSE;
4.
TRUNCATE TABLE the_first_1
5.
SELECT *
FROM the_first_1
6.
ROLLBACK;
7.
SELECT *
FROM the_first_1
# TRUNCATE 無法恢復之前的數據
? ? ? ? 3.4?DDL 原子化
CREATE DATABASE the
USE the
CREATE TABLE book(
id INT,
`name` VARCHAR(255)
);
SHOW TABLES

????????3.5 小結

????????因為book1 不存在,所以無法執行,這個語句可以看作是一個事務,如果不能貫徹完成,那么就撤銷語句中對已經完成的操作,例:

DROP TABLE book,book1;
SHOW TABLES

四、拓展補充

五、結語

????????若你渴望一首春日的詩,不妨聽聽《春暖花開》的旋律:「生命如水有時平靜,也有時澎湃,穿越陰霾,陽光灑滿你窗臺」?

須知少日拏云志,曾許人間第一流。我們還年輕,我們還有無限可能!

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

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

相關文章

Linux-內核驅動-中斷-key

DEV_NAME:設備名稱。 wg:等待隊列頭,用于同步。 condition:條件變量,用于等待和喚醒。 中斷處理函數 irq_handler:處理中斷請求,設置條件變量并喚醒等待隊列中的進程。 文件操作函數 open…

asm匯編源代碼之按鍵處理相關函數

提供5個子程序: 1. 發送按鍵 sendkey 2. 檢測是否有按鍵 testkey 3. 讀取按鍵 getkey 4. 判斷鍵盤緩沖區是否為空 bufempty 5. 判斷鍵盤緩沖區是否已滿 buffull 具體功能及參數描述如下 sendkey proc  far ; axcharcode testkey proc  far ; out: ;   zf1 buff empt…

Java Collections 類中常用方法使用

一、Collections類 java.util.Collections 類是 Java 集合框架中的一個工具類,提供了一系列靜態方法來操作和處理各種類型的集合。這些方法簡化了對集合進行排序、查找、同步控制、創建只讀集合等常見操作的過程。 二、常用方法 方法類別??方法簽名??功能??需…

Linux網絡編程——數據鏈路層詳解,以太網、MAC地址、MTU、ARP、DNS、NAT、代理服務器......

目錄 一、前言 二、以太網 二、以太網幀格式 三、 MAC地址 四、MTU 1、數據鏈路層的數據分片 2、MTU對UDP協議的影響 3、MTU對TCP協議的影響 五、ARP協議 1、什么是ARP 2、ARP的作用 3、ARP協議的工作流程 4、ARP緩存表 5、ARP請求報文 6、中間人 六、DNS&…

輕量級開源文件共享系統PicoShare本地部署并實現公網環境文件共享

## 前言 本篇文章介紹,如何在 Linux 系統本地部署輕量級文件共享系統 PicoShare,并結合 Cpolar 內網穿透實現公網環境遠程傳輸文件至本地局域網內文件共享系統。 PicoShare 是一個由 Go 開發的輕量級開源共享文件系統,它沒有文…

基于查表法的 CRC8 / CRC16 / CRC32校驗解析

在嵌入式開發中,CRC(Cyclic Redundancy Check)循環冗余校驗算法廣泛應用于通信數據校驗、Flash 數據完整性檢測、Bootloader 升級驗證等場景。本文將深入剖析一套完整的 CRC8、CRC16 和 CRC32 實現,并通過查表法(Table…

二戰藍橋杯所感

🌴 前言 今天是2025年4月12日,第十六屆藍橋杯結束,作為二戰的老手,心中還是頗有不甘的。一方面,今年的題目比去年簡單很多,另一方面我感覺并沒有把能拿的分都拿到手,這是我覺得最遺憾的地方。不…

基于ueditor編輯器的功能開發之給編輯器圖片增加水印功能

用戶需求,雙擊編輯器中的圖片的時候,出現彈框,用戶可以選擇水印縮放倍數、距離以及水印所放置的方位(當然有很多水印插件,位置大小透明度用戶都能夠自定義,但是用戶需求如此,就自己寫了&#xf…

算法題(123):回文日期

審題: 本題需要我們判斷以八位數確定的日期范圍中是否存在回文數 思路: 方法一:枚舉法 1.確定枚舉對象: 對象1:八位數日期,所需枚舉次數:10^8 對象2:年,所需枚舉次數&…

數據庫表的操作

一、數據庫的搭建 如上篇文章 二、基礎了解 show命令支持模糊匹配 show databases、show tables、 show databases like “” “%”、“_”通配符字符串 三、MySQL數據庫表的操作 關系型數據庫都是遵循SQL語法進行數據查詢和管理的 3.1 SQL介紹 3.1.1 SQL的功能 結構化查詢語…

在 Lua 中實現 JSON 與 Table 的相互轉換的詳細使用方法

在 Lua 中實現 JSON 與 Table 的相互轉換是常見的數據序列化需求。以下是詳細的實現方案、性能優化技巧及進階用法: 在 Lua 中實現 JSON 與 Table 的相互轉換的詳細使用方法-目錄 一、常用 JSON 庫對比二、基礎轉換實現1. 使用 lua-cjson(高性能 C 庫&am…

dbVisitor 規則怎么用?

在數據庫操作中,dbVisitor 是一個功能強大的工具,其規則的使用大大簡化了 SQL 語句的編寫過程。下面將詳細介紹 dbVisitor 規則的使用方法并附上具體例子。 一、規則的基本調用 在 dbVisitor 中,SQL 語句可以通過 {...} 的形式來調用規則&a…

Kingbase 常用運維命令總結

一、數據庫連接與基礎操作 連接指定服務器數據庫 ksql -h 主機IP -p 端口號 -U 用戶名 -d 數據庫名 -W # 示例:連接 IP 為 192.168.1.100 的數據庫 ksql -h 192.168.1.100 -p 54321 -U system -d test -W 斷開數據庫連接 \q 或 exit 查看數據庫列表及詳細信息…

【數據結構與算法】LRU Cache 算法實現

文章目錄 Ⅰ. 什么是 LRU CacheⅡ. LRU Cache 的實現[146. LRU 緩存](https://leetcode.cn/problems/lru-cache/) Ⅰ. 什么是 LRU Cache ? LRU( Least Recently Used) 是一種淘汰策略的縮寫,意思是 最近最少使用,它是一種 Cache…

網頁布局匯總

1. 盒模型 容器大小 內容大小 內邊距(padding) 邊框大小 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…

打造海外流量矩陣,TikTok云控工具讓獲客更簡單!

跨境獲客&#xff0c;始終是無數企業主心中的一道難題。今天&#xff0c;給大家帶來一款強大實用的工具——TikTok矩陣云控系統&#xff0c;幫你輕松突破流量瓶頸&#xff0c;實現高效跨境獲客&#xff01; 跨國遠程操控——蘋果手機矩陣云控系統 在正式開始之前&#xff0c;…

MyBatis-plus 快速入門

提示&#xff1a;MyBatis-Plus&#xff08;MP&#xff09;是一個 MyBatis的增強版 文章目錄 前言使用MybatisPlus的基本步驟1、引入MybatisPlus依賴代替Mybatis依賴2、定義Mapper接口并繼承BaseMapper他是怎么知道哪張表&#xff0c;哪些字段呢 3、實體類注解4、根據需要添加配…

找搭子系統 搭子經濟新風口 基于精準匹配的社交新生態探索

一、市場前景&#xff1a;為什么現在需要"找搭子"&#xff1f; 孤獨經濟爆發 超60%年輕人存在"精準陪伴"需求&#xff08;2024社交報告&#xff09; 傳統社交App無法滿足"非婚戀、非熟人"的中間態需求 線下活動復蘇 劇本殺/飛盤等興趣活動年增…

深入探析C#設計模式:訪問者模式(Visitor Pattern)的原理與應用

引言 在軟件開發中&#xff0c;設計模式為我們提供了高效、可維護的解決方案。而在眾多設計模式中&#xff0c;訪問者模式&#xff08;Visitor Pattern&#xff09;以其獨特的結構和應用場景&#xff0c;在復雜系統中發揮著重要作用。本文將深入講解訪問者模式的定義、原理、優…

Redis核心功能實現

前言 學習是個輸入的過程&#xff0c;在進行輸入之后再進行一些輸出&#xff0c;比如寫寫文章&#xff0c;筆記&#xff0c;或者做一些技術串講&#xff0c;雖然需要花費不少時間&#xff0c;但是好處很多&#xff0c;首先是能通過輸出給自己的輸入帶來一些動力&#xff0c;然…