【MySQL基礎篇】概述及SQL指令:DDL及DML

數據庫是一個按照數據結構來組織、存儲和管理數據的倉庫。以下是對數據庫概念的詳細解釋:
定義與基本概念:
數據庫是長期存儲在計算機內的、有組織的、可共享的、統一管理的大量數據的集合。
數據庫不僅僅是數據的簡單堆積,而是遵循一定的規則和模式進行組織和管理的。
數據庫中的數據可以包括文本、數字、圖像、音頻等各種類型的信息。
數據庫的作用:
數據庫作為計算機系統中最重要的組件之一,被廣泛用于各種應用程序和業務領域。
數據庫能夠高效地管理和處理大量數據,提供數據的存儲、查詢、更新和刪除等功能。

名稱全稱簡稱
數據庫存儲數據的倉庫,數據是有組織地進行存儲DB
數據庫管理系統操縱和管理數據庫的大型軟件DBMS
SQL操作關系型數據庫的編程語言,定義了一套操作掛機呢習性數據庫統一標準SQL

數據模型:

?關系型數據庫(RDBMS)

概念:建立在關系模型上,由多張相互連接的二維表組成的數據庫。

特點:

1、使用表存儲數據,格式統一便于維護

2、使用SQL語言操作,便于統一,使用方便

1、SQL通用語法

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

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

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

4、注釋:

·? ? ? ? 單行注釋:--注釋內容 或 # 注釋內容(MySQL獨有)

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

2、SQL分類

分類全稱說明
DDLDate Definition Language數據定義語句,用來定義數據庫對象(數據庫、表、字段)
DMLDate Manipulation Language數據操作語言,用于對數據庫表中的數據進行增刪改
DQLDate Query Language數據查詢語言,用于查詢數據庫中表的記錄
DCLDate Control Language數據控制語言,用于創建數據庫用戶、控制數據庫的訪問權限

3、DDL

·? DDL - 數據庫操作

查詢:

查詢所有數據庫:

show databases;

查詢當前數據庫

select database();

創建

create database [if not exists] 數據庫名 [default charset 字符集] [collate 排序規則];

刪除

drop database [if exists] 數據庫名;

使用

use 數據庫名;

show databases;

我們可以看到一共有四個數據庫,這四個數據庫是安裝MySQL成功后自帶的數據庫?

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> create database if not exists test;/*字符集內容是可以省略的因為MySQL有一套自己的字符集,排序順序也可以省略*/
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)mysql> drop database if exists test;
Query OK, 0 rows affected (0.01 sec)mysql> /*假如我們想要使用某一個數據庫所需要的指令為*/
mysql> use mysql
Database changed
mysql> /*假如數據庫創建太多,我們想要知道我們目前正在使用的數據庫所需要的指令*/
mysql> select database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

·? DDL - 表操作 - 查詢

?查詢當前數據庫所有表

show tables;?

mysql> create database if not exists test;
Query OK, 1 row affected (0.01 sec)mysql> use test;
Database changed
mysql> show tables;
Empty set (0.00 sec)/*剛創建出的數據庫沒有表結構*/
mysql> use mysql;
Database changed
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql                                      |
+------------------------------------------------------+
| columns_priv                                         |
| component                                            |
| db                                                   |
| default_roles                                        |
| engine_cost                                          |
| func                                                 |
| general_log                                          |
| global_grants                                        |
| gtid_executed                                        |
| help_category                                        |
| help_keyword                                         |
| help_relation                                        |
| help_topic                                           |
| innodb_index_stats                                   |
| innodb_table_stats                                   |
| ndb_binlog_index                                     |
| password_history                                     |
| plugin                                               |
| procs_priv                                           |
| proxies_priv                                         |
| replication_asynchronous_connection_failover         |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version              |
| replication_group_member_actions                     |
| role_edges                                           |
| server_cost                                          |
| servers                                              |
| slave_master_info                                    |
| slave_relay_log_info                                 |
| slave_worker_info                                    |
| slow_log                                             |
| tables_priv                                          |
| time_zone                                            |
| time_zone_leap_second                                |
| time_zone_name                                       |
| time_zone_transition                                 |
| time_zone_transition_type                            |
| user                                                 |
+------------------------------------------------------+
38 rows in set (0.00 sec)

查詢表結構?

?desc 表名

mysql> desc tr_user-> ;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int         | YES  |     | NULL    |       |
| sex   | varchar(1)  | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

?查詢指定表的建表語句

show create table 表名;

mysql> show create table tr_user;
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table|
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tr_user | CREATE TABLE `tr_user` (`id` int DEFAULT NULL COMMENT '編號',`name` varchar(50) DEFAULT NULL COMMENT '姓名',`age` int DEFAULT NULL COMMENT '年齡',`sex` varchar(1) DEFAULT NULL COMMENT '性別'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用戶表' |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

·? DDL - 表操作 - 創建?

create table 表名(

? ? ? ? 字段1 字段1類型[comment 字段1注釋],

?????????字段2?字段2類型[comment 字段2注釋],

? ? ? ? ......

????????字段n?字段n類型[comment 字段n注釋]

)[comment 表注釋];

mysql> use test;
Database changed
mysql> create table tr_user(-> id int comment '編號',-> name varchar(50) comment '姓名',-> age int comment '年齡',-> sex varchar(1) comment '性別'-> )comment '用戶表';
Query OK, 0 rows affected (0.03 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tr_user        |
+----------------+
1 row in set (0.00 sec)

?·? DDL - 表操作 - 數據類型

分類類型大小有符號范圍無符號范圍描述
數值類型TINYINT1byte(-128,127)(0,255)小整數值
SMALLINT3byte(-32768,32767)(0,65535)大整數值
MEDIUMINT3byte(-8388608,8388607)(0,16777215)大整數值
INT或INTEGER4byte(-2147483648,-2147483647)(0,4294967259)大整數值
BIGINT8byte(-2^63,2^63-1)(0,2^64-1)極大整數值
FLOAT4byte(-3.402823466 E+308,402823466351 E+308)0和(1.175494351 E-38,402823466 E+38)單精度浮點數
DOUBLE8byte(-1.7976931348623157 E+308,1.7976931348623157 E+308)0和(2.2250738585072014 E-308,1.7976931348623157 E+308)雙精度浮點數
DECIMAL依賴于M(精度)和D(標度)的值依賴于M(精度)和D(標度)的值小數值
分類類型大小描述
字符串類型CHAR0-255 byte定長字符串
VARCHAR0-65535 byte變長字符串
TINYBLOB0-255?byte不超過255個字符的二進制數據
TINYTEXT0-255 byte短文本字符串
BLOB0-65535 byte二進制形式的長文本數據
TEXT0-65535?byte長文本數據
MEDIUMBLOB0-16777215 byte二進制形式的中等長度文本數據
MEDIUMTEXT0-16777215?byte中等長度文本數據
LONGBLOB0-4294967259 byte二進制形式的極大文本形式
LONGTEXT0-4294967259 byte極大文本數據

注意:char(10)代表當前字符串能夠存儲的最大長度即10個字符,一旦超出就會報錯與varchar(10)的區別是char(10)是不管我們存儲多大字節的數據,都占用10個字節(其他位置用空格代替);而varchar(10)會根據數據的大小確定,但最大不能超過10個字節,大大節省了空間占用。?但char的性能更好,varchar的性能較差這是因為varchar需要內容來計算所占空間的大小。

分類類型大小范圍格式描述
日期類型DATE31000- 01- 01至9999- 12- 31YYYY-MM-DD日期值
TIME3-838:59:59至839:59:59HH:MM:SS時間值或持續時間
YEAR11901至2155YYYY年份值
DATATIME81000- 01- 01 00:00:00至9999- 12- 31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和時間值
TIMESTAMP41970- 01- 01 00:00:01至2038- 01- 19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和時間值、時間戳

?·? DDL - 表操作 - 修改

添加字段

ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋]?[約束];

比如:為tr_user表添加一個新的字段’昵稱‘為nickname,類型為varchar(20)

mysql> alter table tr_user add nickname varchar(20) comment'昵稱';
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc tr_user;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(50) | YES  |     | NULL    |       |
| age      | int         | YES  |     | NULL    |       |
| sex      | varchar(1)  | YES  |     | NULL    |       |
| nickname | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

?修改數據類型

ALTER TABLE 表名 MODIFY 字段名 新數據類型(長度);

修改字段名和字段類型

ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [comment 注釋] [約束];?

比如:將tr_user表中的nickname修改為username,類型為varchar(30)

alter table tr_user change nickname username varchar(30) comment'昵稱';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc tr_user;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(50) | YES  |     | NULL    |       |
| age      | int         | YES  |     | NULL    |       |
| sex      | varchar(1)  | YES  |     | NULL    |       |
| username | varchar(30) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

刪除字段?

?ALTER TABLE 表名 DROP 字段名;

比如:將tr_user表的username刪除

alter table tr_user drop username;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

?修改表名

ALTER TABLE 表名 RENAME TO 新表名;

比如:將表名tr_user修改為新表名user_tr?

 alter table tr_user rename to user_tr;
Query OK, 0 rows affected (0.01 sec)

??·? DDL - 表操作 - 刪除

刪除表

DROP TABLE [IF EXISTS] 表名;?

刪除指定表,并重新創建該表

TRUNCATE TABLE 表名;?

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tr_user        |
| user           |
+----------------+
2 rows in set (0.00 sec)

?比如:我們想要刪除user這個表名

 drop table if exists user;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tr_user        |
+----------------+
1 row in set (0.00 sec)
 truncate table tr_user;
Query OK, 0 rows affected (0.02 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tr_user        |
+----------------+
1 row in set (0.00 sec)
/*truncate的這種形式刪除指定表,表名還在,但表的內容已經不存在了,僅僅留下了空表*/

4、MySQL圖形化界面(DataGrip)

下載安裝:

DataGrip下載安裝及使用教程(詳細版)-CSDN博客?

激活:DataGtip如何跳過試用設置永久使用?(Windows2021-2023版本通用)_datagrip無限試用-CSDN博客

5、DML

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

· DML - 添加數據

1、給指定字段添加數據

INSERT INTO 表名 (字段1,字段2,...) VALUES(值1,值2,...);?

2、給全部字段添加數據

INSERT INTO 表名 VALUES(值1,值2,...);?

3、批量添加數據

INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

?INSERT INTO 表名?VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

注意:

插入數據時,指定字段數據需要與值的順序是一一對應的;

字符串和日期型數據應該包含在引號中;

插入數據的大小,應該在字段的規定范圍內

/*為指定字段添加數據*/
insert into tr_user(id, name, age, sex) values(1,'李三',68,'男');
#給全部字段添加數據
insert into tr_user values(2,'狗蛋',20,'男');
#批量添加數據
insert into tr_user value(3,'二狗',18,'男'),(4,'林黛玉',25,'女');
select * from tr_user;

· DML - 修改數據

UPDATE 表名 SET 字段名1=值1,字段名2=值2,...[WHERE?條件];

注意:修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有數據。?

update tr_user set name='張無忌' where id=1;
#修改id為1的數據,將name修改為小昭,sex改為女
update tr_user set name='小昭',sex='女' where id=1;
#修改表中的sex,全部改為男
update tr_user set sex='男' where id;
select * from tr_user;

?· DML - 刪除數據

DELETE FROM 表名?[WHERE?條件]

注意:

DELETE語句的條件可以有,也可以沒有,如果沒有條件,則會刪除整張表的所有數據;

DELETE語句不能刪除某一個字段的值(可以使用UPDATE)?。

#刪除id=1的數據
delete from tr_user where id=1;
#刪除所有數據
delete from tr_user where id;

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

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

相關文章

JS 數組刪除指定元素以及數組排序

刪除 function cut(value) { return value.slice(0,value.length-1) } 排序 let arr [5,2,1,4,9,8] for(let i 0 ; i < arr.length ; i ) { for(let j 0 ; j < arr.length -1 ; j ) { if(arr[j] > arr[j1]){ let num arr[j] arr[j] arr[j1] arr[j1] num come…

C++之STL(十一)

1、迭代器適配器 2、插入迭代器 #include <iostream> #include <vector> #include <algorithm> #include <list> using namespace std;void showVec(const vector<int>& v) {for (vector<int>::const_iterator it v.begin(); it ! v.…

導出word模板開發記錄

exportWordDocx.js import JSZipUtils from “jszip-utils” import Docxtemplater from “docxtemplater” import {saveAs} from “file-saver” import PizZip from “pizzip” const exportWordDocx (demoUrl, docxData, fileName) > {// 讀取并獲得模板文件的二進制…

視頻壓縮怎么壓縮最小,怎么把視頻壓縮的很小

壓縮視頻怎么壓縮到很小&#xff1f;視頻是我們在生活中不可或缺的一部分&#xff0c;隨著制作視頻的小伙伴越來越多&#xff0c;大家都想把制作好的視頻上傳到一些平臺或傳給別人&#xff0c;有時候我們會遇到視頻內存過大的問題&#xff0c;今天我給大家介紹一個快速把視頻壓…

SQLite:一個極簡使用教程

SQLite是一個輕量級的、文件系統基礎的數據庫&#xff0c;它被設計為配置簡單、易于部署。SQLite數據庫存儲在一個單一的磁盤文件中&#xff0c;這意味著數據庫的創建和維護都非常簡單。 1. SQLite特點 輕量級&#xff1a;SQLite不需要一個獨立的服務器進程。它是一個嵌入式SQ…

萬物皆可爬——亮數據代理IP+Python爬蟲批量下載百度圖片助力AI訓練

&#x1f482; 個人網站:【 摸魚游戲】【神級代碼資源網站】【導航大全】&#x1f91f; 一站式輕松構建小程序、Web網站、移動應用&#xff1a;&#x1f449;注冊地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;輕量化工具創作平臺&#x1f485; 想尋找共同學習交…

注意!!2024下《網絡規劃設計師》易混淆知識點來了,趕緊碼住

寶子們&#xff0c;在復習軟考網絡規劃設計師中&#xff0c;是不是覺得有很多知識點含義比較相近&#xff0c;很多友友剛看的時候&#xff0c;估計會像我一樣把它們弄混&#xff0c;作為一個軟考老鳥&#xff0c;在這里給大家整理了網規學習過程中易混淆的知識點&#xff0c;大…

新版彩虹云商城卡密商城/自動發卡可分站多套模板可選

完整免授權彩虹源碼(多模板+小儲云商城模板)版本 6.7.5,部分代碼加密,使用起來一點問題都沒有,加密部分是授權那一塊,可以二開更改一下,就完事 無差錯,免授權,功能齊全,模板齊全。 后臺可設置的模板有 20 套,喜歡的就購買研究學習 支持多個接口,支持到賬到個人錢…

Detailed Steps for Troubleshooting ORA-00600 [kdsgrp1] (文檔 ID 1492150.1)

Detailed Steps for Troubleshooting ORA-00600 [kdsgrp1] (文檔 ID 1492150.1)?編輯轉到底部 In this Document Purpose Troubleshooting Steps References APPLIES TO: Oracle Database - Enterprise Edition Oracle Database Cloud Schema Service - Version N/A and lat…

Android 生成 AAR 包

當我們需要在 Android 項目中引用第三方庫或模塊時&#xff0c;常常會使用 AAR&#xff08;Android Archive&#xff09;包。AAR 包是一種包含了編譯后代碼、資源文件和清單文件等的二進制文件。 步驟 1&#xff1a;創建一個 Android Library 項目 在 Android Studio 中&#…

Ngnix內存池——高并發實現高效內存管理

目錄 一、高并發下傳統方式的弊端 1、常用的內存操作函數 2、弊端一 3、弊端二 4、弊端三 5、弊端四 二、弊端解決之道 1、內存管理維度分析 2、內存管理組件選型 三、高并發內存管理最佳實踐 1、內存池技術 2、內存池如何解決弊端 3、高并發內存池如何實現 四、…

FC-Planner: 一個基于骨架引導的快速覆蓋復雜3D場景的規劃框架方案實現與難點講解

FC-Planner方案實現細節與難點講解 1. 骨架提取 骨架提取是FC-Planner的核心模塊之一,其目的是從輸入的點云數據中提取出場景的骨架結構。這一步的關鍵是如何準確高效地計算每個點的ROSA點。 1.1 ROSA點計算 ROSA點的計算涉及到兩個優化問題: ROSA點方向 v p v_p vp?的優化…

《數字圖像處理與機器視覺》案例二(基于邊緣檢測和數學形態學焊縫圖像處理)

一、前言 焊縫是評價焊接質量的重要標志&#xff0c;人工檢測方法存在檢測標準不統一&#xff0c;檢測精度低&#xff0c;焊縫視覺檢測技術作為一種重要的質量檢測方法&#xff0c;正逐漸在各行各業中嶄露頭角。把焊縫準確的從焊接工件中準確分割出來是焊縫評價的關鍵一步&…

linux上git的使用

目錄 1.測試是否安裝有git 2.下載項目到本地 3.三板斧 1.將代碼放在創建的目錄中 2.提交改動到本地 3.提交代碼到遠端 4.注意點 以及補充內容 1.測試是否安裝有git 如果輸入git --help 會顯示下面一大串那么就是已經安裝&#xff0c;否則需要自行手動安裝 yum install g…

聚焦從業人員疏散逃生避險意識能力提升,推動生產經營單位每年至少組織開展(疏散逃生演練,讓全體從業人員熟知逃生通道、安全出口及應急處置要求,形成常態化機制。

聚焦從業人員疏散逃生避險意識能力提升&#xff0c;推動生產經營單位每年至少組織開展(疏散逃生演練&#xff0c;讓全體從業人員熟知逃生通道、安全出口及應急處置要求&#xff0c;形成常態化機制。完整試題答案查看 A.三次B.兩次C.一次 綜合運用“四不兩直”、明察暗訪、 ()、…

潔盟超聲波清洗機怎么樣?橫向測評希亦、潔盟、蘇泊爾超聲波清洗機誰是實力派

生活中大多數人戴眼鏡&#xff0c;但是很多人都不注意眼鏡的保養&#xff0c;導致鏡片越來越模糊&#xff0c;從而引發多邊的狀況發生&#xff0c;比如長久戴模糊不清的眼鏡&#xff0c;視力會受到影響隨之下降。甚至是眼鏡長期不清洗&#xff0c;上面的灰塵、細菌會影響眼部健…

彩虹PLM系統在航空航天業的應用與實踐

彩虹PLM系統在航空航天業的應用與實踐 彩虹PLM系統作為航空航天業的卓越解決方案&#xff0c;已經在眾多企業中得到了廣泛的應用和實踐。該系統通過其獨特的功能和優勢&#xff0c;為航空航天企業帶來了顯著的管理效益和市場競爭力提升。 彩虹PLM系統 在應用方面&#xff0c;彩…

這樣解釋 TCP_IP 真的很好理解

想象一下&#xff0c;你住在一個大城市里&#xff0c;這個城市就是你的計算機網絡世界。在這個城市中&#xff0c;有許多房子&#xff08;代表不同的計算機&#xff09;&#xff0c;這些房子之間由各種道路和交通設施連接起來&#xff08;代表網絡的物理連接&#xff09;。 現在…

1.2 離散LTI系統的時域分析

目錄 離散系統的定義 離散LTI系統的時域描述h[k] 離散系統的分類 線性與非線性系統 時變與非時變系統 因果與非因果系統 穩定與不穩定系統 滑動平均系統 LTI——Linear and Time-invariant System 線性時不變系統 離散系統的定義 離散LTI系統的時域描述h[k] 離…

【java12】java12新特性之File的mismatch方法

Java12引入了一個新的方法 mismatch&#xff0c;它屬于java.nio.file.Files類。此方法用于比較兩個文件的內容&#xff0c;并返回第一個不匹配字節的位置。如果兩個文件完全相同&#xff0c;則返回-1。 Files.mismatch 方法聲明 public static long mismatch(Path path1, Pat…