數據庫表的操作

一、數據庫的搭建

如上篇文章

二、基礎了解

show命令支持模糊匹配
show databases、show tables、
show databases like “····”
“%”、“_”通配符字符串

三、MySQL數據庫表的操作

關系型數據庫都是遵循SQL語法進行數據查詢和管理的

3.1 SQL介紹

3.1.1 SQL的功能
結構化查詢語言(Structured Query Lauguage),在關系型數據庫上執行數據庫操作、數據檢索以及數據維護的標準語言;使用SQL語句,程序員和數據庫管理員可以完成如下的任務:1.改變數據庫的結構2.更改系統的安全設置3.增加用戶對數據庫或表的許可權限4.在數據庫中檢索需要信息5.對數據庫的信息進行更新
3.1.2 SQL的分類
1.DDL(data definition language):數據定義語言,定義對數據庫對象(庫、表、列、索引的操作)create、drop、alter、rename、truecate
2.DML(data manipulation language):數據操作語言
3.DQL:數據查詢語言
4.DCL:數據控制語言,定義對數據庫】表、字段、用戶的訪問權限和安全級別。
3.1.3 SQL語句的規范
在數據庫系統中,SQL語句不區分大小寫(關鍵字建議用大寫) 。但字符串常量區分大小寫。
SQL語句可單行或多行書寫,以“;”結尾。關鍵詞不能跨多行或簡寫。用空格和縮進來提高語句的可讀性。子句通常位于獨立行,便于編輯,提高可讀性。SELECT * FROM tb_table
注釋:SQL標準:/**/。多行注釋“-- ” 單行注釋MySQL注釋:“#” 

3.2 MySQL的數據庫編碼

MySQL的默認編碼是Lain1的編碼,Lain1支持西歐字符、希臘字符等。
在早期MySQL為了兼容像中文這種符號,提供了utf-8編碼,第四個字節拿來存儲表情包,所以不太建議使用utf-8,建議使用真正的utf8mb4
?
MySQL自帶數據庫: Information_schema:主要存儲了系統中的一些數據庫對象信息:如用戶表信息、列信息、權限信息、字符集信息、分區信息等。(數據字典表); performance_schema:主要存儲數據庫服務器的性能參數; mysql:存儲了系統的用戶權限信息及幫助信息。sys :5.7新增,之前版本需要手工導入。這個庫是通過視圖的形式把information_schema 和performance_schema結合起來,查詢出更加令人容易理解的數據;test:系統自動創建的測試數據庫,任何用戶都可以使用。

3.3 數據庫操作

3.3.1 create創建
CREATE DATABASE 數據庫名稱
?
####創建數據庫同時指定編碼####
create database db_name default charset="utf8mb4";
create database schOOl DEFAULT CHARACTER SET utf8mb4;
create database schOOl DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
?
####查詢當前數據庫是哪個數據庫###
create database();
?
###查看創建的數據庫###
show create database 數據庫名稱;
3.3.2 drop刪除數據庫
drop database 數據庫名稱;
3.3.3 查看數據庫編碼情況
show variables like "char%";

3.4數據表的操作

數據表是一種二維表格,類似于excel,用來存儲真正的數據;
3.4.1 create創建表格
####語法結構####
create table  [if not exists] t_name(###定義表結構###字段名稱1 類型 [約束條件],字段名稱2 類型 [約束條件],······####最后一個不能加逗號###字段名稱N 類型 [約束條件]
)
/**創建一個用戶表用戶的姓名用戶的年齡用戶的性別用戶的地址用戶的電話
**/create table t_user(id int,name varchar(50),age int,gender char(5),address varchar(255),tel char(11))##查詢數據
select * from t_user;
?
###插入數據
insert into t_user values(1,'肖金鳳',18,'女','四川南充','322');
insert into t_user values('小辣椒',19,'女');

注意:查詢SQL時,如果結果較多,查看不方便,則可以反轉查詢的結果,在SQL后面加上‘\g’。

3.4.2 數據類型
數據庫在MySQL中,有三種主要的類型:文本、數字和日期/時間類型。
3.4.3 char和varchar的區別

charvarchar是數據庫中用于存儲字符串數據的兩種數據類型,它們之間的主要區別如下:

1.存儲長度
  • char:是一種固定長度的字符串類型。當你定義一個char類型字段時,你需要指定一個長度,例如char(10)。無論你存儲的字符串實際長度如何,數據庫都會為這個字段分配固定的存儲空間(在這個例子中是10個字符的空間)。如果實際存儲的字符串長度小于定義的長度,數據庫會在字符串的末尾填充空格來達到指定的長度。

  • varchar:是一種可變長度的字符串類型。定義varchar類型字段時,也需要指定一個最大長度,例如varchar(10)。但是,數據庫只為實際存儲的字符串長度分配空間,加上一個額外的字節(或兩個字節,取決于具體的數據庫實現和字符串長度)來記錄字符串的長度。如果存儲的字符串是空字符串,那么varchar字段幾乎不占用任何空間。

2.性能
  • char:由于char類型的長度是固定的,所以在某些情況下,數據庫可以更快地處理char類型的數據,因為存儲和檢索時不需要計算實際的長度。

  • varchar:雖然varchar在存儲空間上更為高效,但在處理時可能需要額外的計算來確定字符串的實際長度,這可能會稍微影響性能。

3.使用場景
  • char:適用于存儲長度固定或幾乎總是相同長度的字符串,例如郵政編碼、電話區號等。

  • varchar:適用于存儲長度可變的字符串,例如姓名、地址等。

4.空間利用率:
  • char:可能會浪費存儲空間,因為即使實際數據沒有達到定義的長度,也會占用全部的空間。

  • varchar:空間利用率較高,只占用實際數據長度加上長度記錄的空間。

5.字符串比較
  • char:在比較時,可能會考慮填充的空格,這可能會導致一些意外的結果。

  • varchar:比較時通常不考慮填充的空格,更符合直觀的字符串比較邏輯。

在選擇使用`char`還是`varchar`時,應根據實際的數據特性和應用需求來決定。如果字符串長度固定或對性能有特別要求,可以考慮使用`char`。如果字符串長度變化較大,且希望節省存儲空間,則應使用`varchar`。
\G:反轉九十度
3.4.4 數據庫的約束
創建數據庫的時候,可以有多個約束。
存在如下一些數據庫表的約束:默認值、主鍵、非空、外鍵、唯一檢查約束
1.主鍵約束
  • 主鍵功能上看相當于非空且唯一,一個表中只允許一個主鍵,主鍵是表中唯一確定一行數據的字段。

主鍵的值一般是沒有意義的;
并且一般會加auto_increment(只加在主鍵后!) ---- 自增
2.唯一約束
作用:是保證該字段的值是唯一的;
#唯一性約束條件確保所在的字段或者字段組合不出現重復值;
#唯一性約束條件的字段允許出現一個NULL
#同一張表內可建多個唯一約束
#唯一約束可由多列組合而成
#建唯一約束時MySQL會為之建立對應的索引---也就是唯一索引。
#如果不給唯一約束起名,該唯一約束默認與列名相同。
?
#####第一種####
mysql> create table tb_student(-> id int primary key auto_increment,-> name varchar(18) unique --- 唯一約束-> );#####第二種#####
create table t_user(id int auto_increment,name varchar(18),primary key(id),unique(name));
3.默認值約束
####comment也可以跟在后面,也就是描述信息###
mysql> create table t_user(-> id int primary key auto_increment,-> name varchar(50) unique,-> age int-> );
Query OK, 0 rows affected (0.00 sec)
?
mysql> show tables;
+-----------------+
| Tables_in_db_ck |
+-----------------+
| db_hero ? ? ? ? |
| t_user ? ? ? ?  |
+-----------------+
2 rows in set (0.00 sec)
?
mysql> insert into t_user values(1,"肖金鳳",18);
Query OK, 1 row affected (0.01 sec)
?
mysql> select * from t_user;
+----+-----------+------+
| id | name ? ?  | age  |
+----+-----------+------+
| ?1 | 肖金鳳 ?  | ? 18 |
+----+-----------+------+
1 row in set (0.00 sec)
?
?
#####加個默認值#####
mysql> create table t_user(-> id int primary key auto_increment,-> name varchar(50) unique,-> age int default 18 ?  ---- 默認值約束-> );
4.非空約束
不允許字段的值為空
create table t_user(id int primary key auto_increment,name varchar(50) unique not null,age int default 18,password varchar(255) not null ?--- 非空約束);
5.外鍵約束
  • 是一個獨立字段

外鍵指的是兩張或者多張表之間關聯關系的字段;
外鍵約束:是表的約束,是約束表在插入外鍵數據時能夠正確地插入。
?
#外鍵是構建于一個表的兩個字段或者兩個表的兩個字段之間的關系
#外鍵確保了相關的兩個字段的兩個關系:
子(從)表外鍵列的值必須在主表參照值的范圍內,或者為空(也可以加非空約束,強制不允許為空)。
當主表的記錄被子表參照時,主表記錄不允許被刪除。
外鍵參照的只能是主表主鍵或者唯一鍵,保證子表記錄可以準確定位到被參照的記錄。
###在創建表的同時,將外鍵約束添加上
###首先保證班級表創建成功
#插入正確的數據
create table grade(id int auto_increment,name varchar(50) unique,primary key(id))
insert into grade(name) value("english"),("python"),("biochemistry"),("network");   
1.外鍵如何設計?
表的關聯:1:1  ---->  外鍵可以設計在任意一方,不會產生數據冗余1:N  ---->  外鍵設計在多方N:N  ---->  創建第三張表,來專門描述兩張表的關聯關系
2.如何約束外鍵,保證不出錯
需要添加外鍵約束:foreign key1.在創建數據庫表的時候添加外鍵2.通過alter指令修改[CONSTRAINT] foreign key(字段) references 表(字段) [on delete RESTRICT | cacade | set null | xxx]
?
#內連接(只查存在關聯的數據)
如果兩張或多張關聯關系表查詢時,不指定他們的關聯關系,則會出現笛卡爾積現象
select * from t_stu,t_classes;
select * from t_stu cross join t_Classes;
?
select * from t_stus /(inner)/ join t_classes on(t_stus.class.id=t_classes.id)
?
#外連接:如果要將這些沒關聯關系的數據查詢出來,則需要使用外連接
select * from t_stus right outer join t_classes on(t_stus.class_id=t_classes.id)
?
#自連接:只能查詢出存在關聯關系的數據,如果不存在關聯關系,就不行
?
# 注意:mysql不支持全連接查詢  full  join
# 但是SQL存在聯合查詢  union 、union all
?
# 注意:聯合查詢,必須保證查詢的多條SQL返回的結果 結構必須一致,所以聯合查詢常見于查詢一張表
6.檢查約束

檢查約束在MySQL8之前是不生效的,也不報錯!!!

create table t_stu(id int primary key auto_increment,name varchar(50) not null unique,age int check(Age >= 18),#gender char(2) check(gender in ("男","女"))gender enum("男","女"));

3.4.5 修改表的結構
修改列的類型:alter table 表名 modify 列名 列類型;
?
增加列:alter table 表名 add 列名 列類型;
?
刪除列:alter table 表名 drop 列名;列改名:alter table 表名 change 舊列名 新列名 列類型;更改表名:① alter table 表名 rename 新表名;② rename table 表名 to 新表名;

在SQL中,提供了動態修改表結構的SQL功能。

創建表與之前的表相似

3.4.6復制表的結構
####第一種####
在create后面加一個like
#該種方式會講原表的主鍵復制過來!
?
####第二種 select后面的*也可以選擇為確定的列####
在create table后面跟一個select * from tableName
#該種方式不會將原表的主鍵這些復制過來!!

如果有主鍵限制,復制多行的數據會怎么樣?沒有主鍵限制的話,會直接都復制;

3.5 MySQL用戶授權

3.5.1 密碼策略
1.MySQL5.7為root用戶隨機生成了一個密碼,打印在error_log中,關于error_log的位置;如果安裝的是RPM包,
則默認是 /var/log/mysqld.log

開啟用戶的遠程登陸:

MySQL官方是禁止root組賬戶遠程登陸的!

3.5.2 遠程登陸解決方案:
首先開啟遠程登錄,必須保證你登陸的賬號是存在高級權限的,一般是root。
登錄MySQL之后訪問MySQL數據庫。
###案例###
use mysql
select host,user from user;
等價于
select host,user from mysql.user;
?
#修改
將localhost修改為%,或者改成需要的IP地址,再或者進行動態匹配。
update user set host="192.168.1.1%" where user="xjf";
update user set host="%" where user="xjf";
?
#此時修改成功,但是要讓權限生效就要重啟服務! --- 不建議!!!!
#如果不行重啟服務,可以刷新權限!
flush privileges;
3.5.3 用戶創建和授權
grant create alter select等都需要權限的。

MySQL8之前,MySQL的grant命令非常強大,是集授權、創建用戶、修改密碼、修改用戶、遠程登錄等等一些列功能與一體的命令。

grant all ON 表名.* TO 登錄人名字@'%' IDENTIFIED BY '123456';

1.創建用戶
create user 'zs'@'%' identified by 'zs';
%:是指允許遠程登錄
2.給創建的用戶授權
#查看是哪個用戶登錄?
select user()
?
grant all on db_chengke.* to zs@'%';
grant all on *.* to dba@localhost; --- 給予最高的權限!

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

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

相關文章

在 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;然…

RPA VS AI Agent

圖片來源網絡 RPA&#xff08;機器人流程自動化&#xff09;和AI Agent&#xff08;人工智能代理&#xff09;在自動化和智能化領域各自扮演著重要角色&#xff0c;但它們之間存在顯著的區別。以下是對兩者區別的詳細分析&#xff1a; 一、定義與核心功能 RPA&#xff08;機…

多模態大語言模型arxiv論文略讀(十五)

Jailbreaking GPT-4V via Self-Adversarial Attacks with System Prompts ?? 論文標題&#xff1a;Jailbreaking GPT-4V via Self-Adversarial Attacks with System Prompts ?? 論文作者&#xff1a;Yuanwei Wu, Xiang Li, Yixin Liu, Pan Zhou, Lichao Sun ?? 研究機構…

第1節:計算機視覺發展簡史

計算機視覺與圖像分類概述&#xff1a;計算機視覺發展簡史 計算機視覺&#xff08;Computer Vision&#xff09;作為人工智能領域的重要分支&#xff0c;是一門研究如何使機器"看"的科學&#xff0c;更具體地說&#xff0c;是指用攝影機和計算機代替人眼對目標進行識…

【工具】Fiddler抓包

本文主要講解如何使用Fiddler抓HTTP包&#xff0c;可通過所抓包內容分析HTTP請求/響應的細節 安裝與配置 1.下載與安裝 下載地址: https://www.telerik.com/fiddler/ 點擊了鏈接后&#xff0c;跳轉到以下頁面&#xff1a; 點擊Fiddler Classic(免費版)后&#xff0c;跳轉到以…

STM32F103復用JTAG/SWD引腳為GPIO

普中-精靈1開發板&#xff0c;主芯片為STM32F103C8T6&#xff0c;4個獨立按鍵K1~K4依次接PA15~PA12&#xff0c;按下為低電平&#xff0c;8個LED燈D1~D8&#xff0c;依次接PA0~PA7。查詢手冊得知&#xff1a;PA15主功能為JTDI&#xff0c;PA14為JTCK/SWCLK&#xff0c;PA13為JT…

難度偏低,25西電人工智能學院821、833、834考研錄取情況

1、人工智能學院各個方向 2、人工智能學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、智能院25年院線相對于24年院線 全部專業下降比較多&#xff0c;其中控制科學與工程下降20分&#xff0c;計算機科學與技術下降20分&#xff0c;計算機技術[專碩]下降…

達夢數據校驗系統(DMDVS):數據完整性保障的不二之選

產品概述 達夢數據校驗系統(DMDVS)是一款企業級數據一致性管理平臺,提供跨數據庫、跨平臺的數據比對與修復能力。系統采用模塊化架構設計,支持靜態校驗、動態校驗、單向校驗及分布式校驗四大核心模式,適用于數據遷移驗證、容災備份核查、實時同步監控等關鍵場景,??更多…

【3dSwap】3D-Aware Face Swapping

文章目錄 3D-Aware Face Swapping背景points貢獻方法從2D圖像推斷3D先驗通過潛在代碼操縱進行人臉交換聯合樞軸調整目標函數實驗與二維人臉交換方法比較進一步分析3D感知人臉交換消融實驗局限性3D-Aware Face Swapping 會議/期刊:CVPR 2023 作者: code:https://lyx0208.gi…

客戶案例 | 日事清×初心家居:多部門協作實現新品上架自動化

1、客戶背景 佛山市初心家居有限公司&#xff0c;主營家居類目&#xff0c;年營收額近億元。初心家居有自己的家居生產工廠&#xff08;可為第三方提供生產&#xff09;&#xff0c;店內產品均為自主研發設計&#xff0c;所以新品開發也是初心家居的核心。 2、客戶工作場景及需…

KWDB創作者計劃—KWDB多副本集群保姆級部署

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中國DBA聯盟(ACDU)成員&#xff0c;10余年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主&#xff0c;全網粉絲10萬 擅長主流Oracle、MySQL、PG、高斯…