1.MySQL數據庫的基本操作

數據庫操作過程:

1.用戶在客戶端輸入 SQL
2.客戶端會把 SQL 通過網絡發送給服務器
3.服務器執行這個 SQL,把結果返回給客戶端
4.客戶端收到結果,顯示到界面上

數據庫的操作

這里的數據庫不是代表一個軟件,而是代表一個數據集合。

顯示當前的數據庫

show databases;

創建數據庫

語法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name
  • 大寫的表示關鍵字
  • [] 是可選項
  • CHARACTER SET: 指定數據庫采用的字符集
  • COLLATE: 指定數據庫字符集的校驗規則

create database 數據庫名
CREATE DATABASE 數據庫名
注意:
1.create,database … 相當于"關鍵字
2.SQL 的關鍵字 不區分大小寫的
3.創建的數據庫的名字,可以隨便起,但是不能重復!!
4.單詞之間至少有一個空格.也可以是多個空格,不能沒有!!
5.在 命令行 中輸入的 sql 必須以;作為結尾!!

創建名稱為my_database的數據庫

create database my_database;
-- 數據庫已經存在,再創建就會報錯
-- 如果一條一條執行 SQL,不報錯影響不大。如果是批量執行 SQL(把很多 SQL 寫到一個 文件 中)如果中間某個 SQL 報錯, 就會執行停止。
-- 使用了 IF NOT EXISTS 就不會報錯了!!
create database if not exists my_database;
-- 創建數據庫同時指定數據庫的 字符集utf8
create database my_database character set utf8;-- 一般形式
create database my_database charset utf8;-- 簡寫形式

英文字母,是如何在計算機中表示的?
ascii :使用 數字 表示字符。
ascii 中,只能表示 英文字母 和 標點符號,以及阿拉伯數字。漢字要表示的內容特別多,y有幾萬個,很明顯ascii是不夠用的。
其他的字符集思路是一致的,可以搞一個更大的表,來表示漢字。演化出了很多套這樣的表示方式~~ (不像 ascii只有一套)。對于中文來說,當前最常見的表示方式,有兩種:

  • gbk:使用兩個字節,表示一個漢字的

  • utf8:使用三個字節,表示一個漢字的

在這兩個表上,同一個漢字,表示的數字不同。同一個數字,對應漢字也不同。VS 使用的編碼方式是跟隨系統windows 簡體中文版,系統編碼就是 gbk。目前更主流的還是 utf8,這個東西能表示的內容特別多除了漢字之外,各種其他國家的語言文字符號都能表示。java 的字符集是在編譯運行的時候,通過命令行參數顯式指定的.一般默認都是 utf8 。

mysql 默認字符集是拉丁文(沒法表示中文的)。手動設定一個字符集是非常關鍵的,后續如果要插入一些中文,如果不是 utf8 / gbk 之類的中文就會亂碼。
mysgl 的 utf8 是殘缺的.(殘缺了一些 emoji 表情),完整版utf8就是:utf8mb4,一般情況下兩種字符集是都可以設置的。

使用數據庫

使用my_database數據庫

use my_database;

1.4 刪除數據庫

DROP DATABASE [IF EXISTS] db_name;

drop database 數據庫名;

-- 刪除 刪除my_database數據庫:
drop database  my_database;
-- 如果存在 my_database數據庫,刪除my_database數據庫:
drop database if exists my_database;

刪庫操作時非常危險的,一旦刪掉數據庫,數據庫中的所有數據就沒了.很難恢復。

如何針對上述危險操作,防患于未然:

1.權限不同的用戶,能進行的操作是不一樣的(有效避免失誤)
2.備份 。一旦不小心誤刪除了數據, 通過之前的備份數據,恢復回來
3.重要操作的時候,拉上其他人幫忙一起檢查。

2. 常用數據類型

數字:

數據類型大小說明對應java類型
BIT[ (M) ]M指定位 數,默認 為1二進制數,M范圍從1到64, 存儲數值范圍從0到2^M-1常用Boolean對應BIT,此時 默認是1位,即只能存0和1
TINYINT1字節Byte
SMALLINT2字節Short
INT4字節Integer
BIGINT8字節Long
FLOAT(M, D)4字節單精度,M 是有效數字的長度,D是小數點后的位數。會發生精度丟失Float
DOUBLE(M, D)8字節Double
DECIMAL(M, D)M/D最大 值+2雙精度,M指定長度,D表示 小數點位數。精確數值BigDecimal
NUMERIC(M, D)M/D最大 值+2和DECIMAL一樣BigDecimal

DECIMAL 能夠精確表示小數float 和 double 是不能精確表示小數的!!
0.1 + 0.2 != 0.3

image-20230814084045732

因此,DECIMAL 這個類型就是為了解決上述問題的。雖然能精確存儲,精確計算了,但是存儲空間占用的更多計算速度也是更慢的。

字符串:

數據類型大小說明對應java類型
VARCHAR (SIZE)0-65,535字節可變長度字符串String
TEXT0-65,535字節長文本數據String
MEDIUMTEXT0-16 777 215字節中等長度文本數據String
BLOB0-65,535字節二進制形式的長文本數據byte[]

varchar(SIZE) 屬于可變長的字符串SIZE 表示最大長度.單位是 字符(不是字節!!)
varchar(10) => 最多十個字.哪怕是漢字,也是十個。

日期:

數據類型大 小說明對應java類型
DATETIME8 字 節范圍從1000到9999年,不會進行時區的 檢索及轉換。java.util.Date、 java.sql.Timestamp
TIMESTAMP4 字 節范圍從1970到2038年,自動檢索當前時 區并進行轉換。java.util.Date、 java.sql.Timestamp

TIMESTAMP 時間戳:計算機表示時間的一種經典方式以1970年1月1日0時0分0秒為基準,計算當前時刻和基準時刻的秒數/毫秒數 之差。范圍從1970到2038年,這個類型最大的問題是 4 個字節,表示的范圍太小了。

小結:
上述這么多類型,不必全都掌握,大概熟悉幾個常用的就可以了int, bigint, varchar, double, decimal, datetime。

數據表操作

關系型數據庫中,數據是以"表”的方式來進行組織的(類似于 excel)。每個數據庫中,里面就可以有很多個數據表,每個表可以有很多行,每一行又可以有很多個列(字段)。

所有的和表相關的操作,都是需要選中數據庫再進行: use my_database;

3.1 創建表

create table 表名(列名 類型, 列名 類型, 列名 類型......
);

創建表的時候,就需要先把表的類型確定好,后續插入的數據也要遵守當前的這個類型。

 -- 創建學生表,有id和name兩個字段create table student(id int, name varchar(20) comment '姓名');

comment 是注釋屬于是在創建表的時候的一種專屬注釋
SQL 中如果想用注釋,可以使用 # 或者 –

3.2 查看數據庫中的所有表

show tables;

3.3 查看指定表的表結構

desc 表名;

desc => describe(描述)

-- 查看student表的結構
desc student;

image-20230814085629174

int(11): 表示的是該列在打印的時候,顯示的時候,最多占11 個字符這么寬和存儲范圍是無關的。

查看的表結構中的含義:

Field:字段.表一行里有幾列.
Type:每一列的類型
Null:該列是否允許為空yes 就是允許為空(不填)
Key: 索引類型
Default:默認值.
Extra:額外補充信息

3.4 刪除表

語法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
-- 刪除 student 表
drop table student;
-- 如果存在 stu_test 表,則刪除 stu_test 表
drop table if exists student;

上述操作是數據庫和數據表的最基礎的操作

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

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

相關文章

Python中的MetaPathFinder

MetaPathFinder 是 Python 導入系統中的一個關鍵組件,它與 sys.meta_path 列表緊密相關。sys.meta_path 是一個包含 MetaPathFinder 實例的列表,這些實例用于自定義模塊的查找和加載邏輯。當使用 import 語句嘗試導入一個模塊時,Python 會遍歷…

Golang通過alibabaCanal訂閱MySQLbinlog

最近在做redis和MySQL的緩存一致性,一個方式是訂閱MySQL的BinLog文件,我們使用阿里巴巴的Canal的中間件來做。 Canal是服務端和客戶端兩部分構成,我們需要先啟動Canal的服務端,然后在Go程序里面連接Canal服務端,即可監…

Maven - 統一構建規范:Maven 插件管理最佳實踐

文章目錄 Available Plugins開源項目中的使用插件介紹maven-jar-pluginmaven-assembly-pluginmaven-shade-pluginShade 插件 - 標簽artifactSetrelocationsfilters 完整配置 Available Plugins https://maven.apache.org/plugins/index.html Maven 是一個開源的軟件構建工具&…

零食量販店熱潮:小縣城的新零售革命

零食量販店熱潮:小縣城的新零售革命 目錄 引言零食量販店的快速崛起零食量販店的運營模式量販零食店在小縣城的影響技術在零食量販店的應用未來展望結論 1. 引言 近年來,零食量販店在我國小縣城迅速發展,成為一種新型的零售模式。在一條街…

flutter 二進制轉字符串

通常接口返回的數據都是二進制數據 二進制轉字符串:utf8二進制轉字符串 onRoomMsg.body是二進制編碼 utf8.decode(onRoomMsg.body)然后字符串轉對象 json.decode(utf8.decode(onRoomMsg.body))然后再用fromJson解析 PrankActivityModel prankActivityModel Prank…

新疆大學841軟件工程考研

1.軟件生產的發展經歷了三個階段,分別是____、程序系統時代和軟件工程時代時代。 2.可行性研究從以下三個方面研究每種解決方法的可行性:經濟可行性、社會可行性和_____。 3.HIPO圖的H圖用于描述軟件的層次關系&…

Android 12.0 系統systemui下拉通知欄的通知布局相關源碼分析

1.前言 在android12.0的系統rom開發中,在進行systemui中的下拉通知欄的布局自定義的時候,對于原生systemui的 系統的下拉通知欄的通知布局的了解也是非常重要的,接下來就來分析下相關的下拉通知欄的通知布局的相關 源碼流程,了解這些才方便對通知欄的布局做修改 2.系統sy…

創建maven的Springboot項目出現錯誤:Cannot access alimaven

創建maven的Springboot項目出現錯誤:Cannot access alimaven 1)問題2) 分析問題3)解決問題 1)問題 創建maven的Springboot項目出現錯誤: Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…

“深入探索JVM內部機制:解密Java虛擬機的工作原理“

標題:深入探索JVM內部機制:解密Java虛擬機的工作原理 摘要:本文將深入探索Java虛擬機(JVM)的內部機制,解密其工作原理。我們將介紹JVM的基本組成部分、類加載過程、內存管理和垃圾回收、即時編譯器等關鍵概…

Linux C++ 網絡編程基礎(2) : TCP多線程一個server對應多個client

目錄 一、linux posix線程相關函數介紹二、tcp server基礎版本三、tpc服務端多線程版本四、tpc客戶端代碼tcp編程時, 一個server可以對應多個client, server端用多線程可以實現. linux下多線程可以使用POSIX的線程函數, 下面給出服務端和客戶端的代碼. 一、linux posix線程相關…

RocketMQ 單機源碼部署 自定義配置文件和端口以及acl權限配置解析

思路 1、我們首先配置完 namesrv和broker和acl認證的配置文件,然后直接使用-c指定配置文件來啟動程序,就會非常明了,用戶名密碼要大于6,第一個用戶我測試著不知道為什么始終有最高權限,大家盡量不要吧第一個用戶給別人…

Redis輔助功能

一、Redis隊列 1.1、訂閱 subscribe ch1 ch2 1.2 publish:發布消息 publish channel message 1.3 unsubscribe: 退訂 channel 1.4 模式匹配 psubscribe ch* 模糊發布&#xff0c;訂閱&#xff0c;退訂&#xff0c; p* <channelName> 1.5 發布訂閱原理 訂閱某個頻道或…

05-基礎入門-系統及數據庫等

基礎入門-系統及數據庫等 一、操作系統層面1、識別操作系統常見方法2、簡要兩者區別及識別意義3、操作系統層面漏洞類型對應意義4、簡要操作系統層面漏洞影響范圍 二、數據庫層面1、識別數據庫類型常見方法2、數據庫類型區別及識別意義3、數據庫常見漏洞類型及攻擊4、簡要數據庫…

word在頁眉頁腳添加第幾頁

如果直接在頁腳添加數字&#xff0c;整個文檔的頁腳會是統一的。 這里我們需要的是每一頁按照頁碼排布的文檔&#xff0c;所以首先打開頁腳設置&#xff1a; 在插入內選擇頁腳 在彈出的下拉窗口中選擇空白即可 在菜單欄會多出“頁眉和頁腳”的選項卡&#xff0c;選擇其中的頁…

【CTFshow】——PWN簽到題

文章目錄 一【題目環境】二【題目類別】三【題目編號】四【題目描述】五【解題思路】六【解題過程】七【提交結果】 一【題目環境】 名稱版本Ubuntu系統22.04.1 LTSLinux內核5.15.0-43-generic 二【題目類別】 此題無特殊類別&#xff0c;為入門題 三【題目編號】 PWN簽到…

數字孿生:Three.js(WebGL)和虛擬引擎

一、先說總結 總的來說&#xff0c;選擇Three.js和WebGL還是虛擬引擎&#xff0c;主要取決于你的項目需求和優先級。 如果你的數字孿生項目主要是為了Web展示&#xff0c;需要快速加載&#xff0c;且對3D效果和物理模擬的需求不高&#xff0c;那么Three.js是一個非常好的選擇。…

gstreamer rtsp server 在ubuntu系統上的安裝

gstreamer rtsp server 在ubuntu系統上的安裝 本篇博客介紹gstreamer rtsp server在ubuntu系統上的安裝 python python直接使用pip安裝 sudo apt install gir1.2-gst-rtsp-server-1.0C 安裝 下載源碼 git clone https://github.com/GStreamer/gst-rtsp-server.git進入倉…

supOS APP開發者課程練習冊創建服務(命名:getPropertiesHistory)

創建服務&#xff08;命名&#xff1a;getPropertiesHistory&#xff09;,調用getPropertiesHistory()服務&#xff0c;獲取“催化裂化一車間”對象的“重質餾分油_進”最近5分鐘內的歷史值&#xff0c;每一分鐘取一個值&#xff0c;開始時間和結束時間需要調用時間格式化功能集…

【2022吳恩達機器學習課程視頻翻譯筆記】3.3代價函數公式

忙了一陣子&#xff0c;回來繼續更新 3.3 代價函數公式 In order to implement linear regression. The first key step is first to define something called a cost function. This is something we’ll build in this video, and the cost function will tell us how well…

Redis專題-隊列

Redis專題-隊列 首先&#xff0c;想一想 Redis 適合做消息隊列嗎&#xff1f; 1、消息隊列的消息存取需求是什么&#xff1f;redis中的解決方案是什么&#xff1f; 無非就是下面這幾點&#xff1a; 0、數據可以順序讀取 1、支持阻塞等待拉取消息 2、支持發布/訂閱模式 3、重…