數據庫的操作,以及sql之DML

首先,創建表以及插入數據

create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不詳");
insert into t_text (id, name, gender, deed) VALUES
(1, '賈寶玉', '男', '榮國府的公子,與林黛玉的愛情故事令人唏噓。'),
(2, '林黛玉', '女', '才情出眾,多愁善感,最終因病早逝。'),
(3, '薛寶釵', '女', '賢淑端莊,最終與賈寶玉成婚。'),
(4, '孫悟空', '男', '齊天大圣,保護唐僧西天取經,神通廣大。'),
(5, '唐僧', '男', '取經團隊的核心人物,慈悲為懷。'),
(6, '豬八戒', '男', '貪吃懶惰,但也有勇有謀,是孫悟空的得力助手。'),
(7, '沙僧', '男', '忠誠老實,負責挑擔和保護唐僧。'),
(8, '劉備', '男', '蜀漢開國皇帝,仁德之君。'),
(9, '關羽', '男', '忠義之士,武藝高強,被尊為武圣。'),
(10, '張飛', '男', '勇猛善戰,性格豪爽。'),
(11, '諸葛亮', '男', '蜀漢丞相,智慧過人,被譽為臥龍先生。'),
(12, '宋江', '男', '梁山泊首領,人稱及時雨。'),
(13, '林沖', '男', '八十萬禁軍教頭,武藝高強。'),
(14, '武松', '男', '打虎英雄,性格剛烈。'),
(15, '魯智深', '男', '花和尚,力大無窮,行俠仗義。');

1.數據庫約束

1.1主鍵約束

primary:主鍵約束

auto_increment:自增屬性

一個表中只能有一個主鍵,主鍵字段非空且唯一,主鍵是一個表中唯一確定一行數據的字段。???

當建立主鍵約束時,MySQL為主鍵創建對應的索引——主鍵索引,主鍵約束名總為PRIMARY。 ????

主鍵約束還有一種寫法:

create table t_text(id int auto_increment,name varchar(20),primary key(id));

插入數據測試:

insert into t_text values(1,"曹操","男","寧可我負天下人,不可天下人負我");
insert into t_text values(16,"曹操","男","寧可我負天下人,不可天下人負我");
delete from t_text where id = 16;-- 刪除id為16的語句# 因為有auto_increment自增屬性,可以寫null
insert into t_text values(null,"曹操","男","寧可我負天下人,不可天下人負我");# 因為存在自增,所以可以這樣寫
insert into t_text(name,gender,deed) values("華佗","男","在世神醫");

測試結果:

代碼報錯:主鍵非空且唯一,id為1已經存在,所以報錯。

1.2唯一約束

唯一約束的作用,是保證該字段的值是唯一的,值不允許重復。

unique:唯一約束

唯一約束條件確保所在字段或者字段組合不出現重復值

唯一性約束條件的字段允許出現一個NULL
同一張表內可建多個唯一約束
唯一約束可由多列組合而成
建唯一約束時MySQL會為之建立對應的索引——唯一索引。
如果不給唯一約束起名,該唯一約束默認與列名相同。

唯一約束的另一種寫法:

create table t_text(id int auto_increment,name varchar(20),primary key(id),unique(name));

插入數據測試:

insert into t_text values(null,"曹操","男","寧可我負天下人,不可天下人負我");
insert into t_text values(null,"項羽","男","虞姬的真愛");

測試結果:(在測試主鍵約束的時候我們已經插入了一條name為"曹操"的數據)

代碼報錯:已經存在name="曹操"的數據,而name為unique,該值是唯一的,所以該條插入語句報錯。

1.3默認值約束

給給定的字段設置默認值

?默認值約束的寫法:

create table t_text(id int primary key auto_increment,name varchar(20) unique,deed varchar(255) default "事例不詳");

插入數據測試:

# 存在自增,id可以寫default
insert into t_text values(default,"劉禪","男","扶不起的阿斗");# 存在默認值約束,deed可以寫成default
insert into t_text values(default,"孫尚香","女",default);# 可以不寫id、deed,id默認自增,deed為默認值
insert into t_text(name, gender) values("孫臏","男");

測試結果:?

1.4非空約束

不允許字段的值為空

create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null,deed varchar(255) not null default "事例不詳");

插入數據測試:

# id、deed,都有默認值
insert into t_text(name, gender) values("趙云","男");# gender存在非空約束,又沒有默認值約束,這里沒有gender會報錯
insert into t_text(name,deed) values("馬超","西涼猛將,曾與張飛大戰不分勝負,后歸順劉備。");# gender存在非空約束,又沒有默認值約束,這里沒有gender會報錯
insert into t_text(gender) values("黃忠");

測試結果:

1.5檢查約束

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

create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不詳");

插入數據測試:

# gender的值只能為"男"或者"女"
insert into t_text values(null,"貂蟬","美女","以連環計離間董卓與呂布,促成董卓覆滅。");insert into t_text values(null,"貂蟬","女","以連環計離間董卓與呂布,促成董卓覆滅。");

測試結果:

2.修改表的結構---ALTER

修改列類型
?? ?ALTER TABLE 表名 MODIFY 列名 列類型; ? -- 注意存在值的情況,類型不一定能成功
增加列
?? ?ALTER TABLE 表名 ADD 列名 列類型;
刪除列
?? ?ALTER TABLE 表名 DROP 列名;
列改名
?? ?ALTER TABLE 表名 CHANGE 舊列名 新列名 列類型;
更改表名
?? ?ALTER TABLE 表名 RENAME 新表名;
?? ?RENAME TABLE 表名 TO 新表名;

2.1修改列類型

案例:?ALTER TABLE 表名 MODIFY 列名 列類型;

alter table t_text modify gender varchar(5) not null;

?類型修改前:

類型修改后:

注意:修改列類型時,需注意值情況,例如:

首先先添加一列:alter table t_text add number int default 0;

然后試著將gender的類型修改為int類型,將number的類型修改為char類型

alter table t_text modify gender int;-- "男"無法修改為int類型

alter table t_text modify number char(2);

alter table t_text modify number int;

所以,修改時需注意列的值是否可以轉換為該類型

alter table t_text add number int default 0;
desc t_text;alter table t_text modify gender int;alter table t_text modify number char(2);
alter table t_text modify number int;
desc t_text;alter table t_text drop number;-- 刪除列

?剛添加完列:

?修改后:

?2.2增加列

案例:ALTER TABLE 表名 ADD 列名 列類型;

alter table t_text add number int default 0;

?增加列前:

增加列后:



2.3刪除列

案例:ALTER TABLE 表名 DROP 列名;

alter table t_text drop number;

刪除列后:

2.4更改列名

案例:ALTER TABLE 表名 CHANGE 舊列名 新列名 列類型;

alter table t_text change name hero_name varchar(20);

?更改過后:

2.5更改表名

案例:ALTER TABLE 表名 RENAME 新表名;
???????????RENAME TABLE 表名 TO 新表名;

alter table t_text rename t_test;
raname table t_test to t_text;

將 t_text更改為t_test

?將 t_test更改為t_text

3.sql之DML

3.1增加語句

增加語句:給某張表進行數據插入

語法:

insert INTO table_name[(field1 [, field2 ……]) values(value1 [, vaule2 ……]) ?[,()]];

# 插入多條數據
insert into t_text VALUES
(null, '趙云', '男', '長坂坡單騎救主,七進七出曹軍,劉備麾下五虎上將之一。'),
(null, '馬超', '男', '西涼猛將,曾與張飛大戰不分勝負,后歸順劉備。'),
(null, '黃忠', '男', '定軍山斬殺夏侯淵,老當益壯的五虎上將之一。'),
(null, '周瑜', '男', '東吳大都督,赤壁之戰以火攻大破曹操,智勇雙全。'),
(null, '呂布', '男', '武力冠絕天下,但反復無常,最終被曹操處決。'),
(null, '貂蟬', '女', '以連環計離間董卓與呂布,促成董卓覆滅。'),
(null, '司馬懿', '男', '曹魏權臣,多次抵御諸葛亮北伐,奠定晉朝基業。'),
(null, '孫尚香', '女', '孫權之妹,劉備之妻,性格剛烈,善武藝。'),
(null, '龐統', '男', '號“鳳雛”,獻計取西川,中箭身亡于落鳳坡。'),
(null, '董卓', '男', '殘暴軍閥,挾持漢獻帝,后被呂布刺殺。'),
(null, '張遼', '男', '威震逍遙津,曹魏名將,以少勝多擊敗孫權。'),
(null, '徐庶', '男', '劉備早期謀士,因母被曹操挾持而被迫歸曹。'),
(null, '典韋', '男', '曹操護衛,宛城之戰力戰身亡,勇猛過人。'),
(null, '許褚', '男', '曹操虎衛,赤膊戰馬超,以勇力著稱。'),
(null, '荀彧', '男', '曹操首席謀士,戰略家,后因反對稱魏公而自盡。'),
(null, '姜維', '男', '諸葛亮繼承人,九伐中原延續蜀漢大業。'),
(null, '鄧艾', '男', '曹魏名將,偷渡陰平滅蜀漢,功高震主被殺。'),
(null, '鐘會', '男', '與鄧艾共滅蜀漢,后謀反失敗被殺。'),
(null, '袁紹', '男', '官渡之戰敗于曹操,北方割據勢力首領。'),
(null, '華佗', '男', '神醫,為關羽刮骨療毒,后因曹操猜忌被殺。');插入單條數據
insert into t_text values(null,"虞姬","女",default); -- 因為存在自增和唯一約束
insert into t_text(hero_name,gender) values("孫權","男");

3.2刪除語句和TRUNCATE

注意:請注意刪除的條件,如果不帶條件,則刪除全表數據

語法:

delete from table_name [where 條件];? -- 如果不帶條件,清空全表數據
truncate table table_name; --?清空全表,注:truncate刪除數據是不經過數據字典

案例:

delete from t_text where id = 51;
delete from t_text where id = 52;

3.3更新語句

修改表中的數據

語法:

update table_name set 字段1=新值 [, 字段2=新值, 字段3=字段3 + 1] ? [where 條件];

案例:

update t_text set deed = "取經絆腳石" where hero_name = "唐僧";
select * from t_text where hero_name="唐僧";

replace語句

該語句是集更新和插入為一體的一個語句。

如果表中沒有這條數據,則執行插入,否則執行更新。

# 插入
replace into t_text(id, hero_name, gender, deed) values(100, "紅孩兒", "男",default);
select * from t_text where hero_name="紅孩兒";# 更新
replace into t_text(id, hero_name, gender, deed) values(100, "哪吒", "男","風火輪,乾坤圈");
select * from t_text where id=100;

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

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

相關文章

vue2前端日志數據存儲(indexedD)自動清理3天前的數據

前言:關于Dexie.js這個前端本地數據庫,如何使用IndexedDB來存儲數據,并且設置到期自動清理的機制。首先,我需要回憶一下Dexie.js的基本用法,以及IndexedDB的特性。IndexedDB是瀏覽器中的一種非關系型數據庫&#xff0c…

【MySQL篇】索引特性,索引的工作原理以及索引的創建與管理

目錄 一,初識索引 二,MySQL與磁盤交互的基本單位 三,MySQL中數據文件的特性 四,理解page和索引 五,聚簇索引和非聚簇索引 六,索引操作 查詢索引 創建主鍵索引 唯一索引的創建 普通索引的創建 全文…

springboot項目啟動常見的問題以及配置以及一些使用技巧

1.配置倉庫 這里要把xml文件從國外的鏡像源改成國內的鏡像源。改鏡像源可以查看這篇文章 點擊查看 2.更改文件類型 方法一:右鍵文件找到Mark Dircetory as可以更改文件類型 方法二: 3.springboot本地Maven倉庫的位置 4.pom.xml文件報紅錯誤怎么辦 這…

【初探數據結構】二叉樹的順序結構——堆的實現詳解(上下調整算法的時間復雜度分析)

💬 歡迎討論:在閱讀過程中有任何疑問,歡迎在評論區留言,我們一起交流學習! 👍 點贊、收藏與分享:如果你覺得這篇文章對你有幫助,記得點贊、收藏,并分享給更多對數據結構感…

流量分析2

一,webshell流量 [GKCTF 2021]簽到 先看協議分級,大部分是tcp,里面有http的基于的行文本數據占了很大的比重,看看里面有什么 過濾http的流量 點擊一條流量,里面的內容進去后面有基于行的文本數據, 先解he…

頭歌實踐教學平臺--【數據庫概論】--SQL

一、表結構與完整性約束的修改(ALTER) 1.修改表名 USE TestDb1; alter table your_table rename TO my_table; 2.添加與刪除字段 #語句1:刪除表orderDetail中的列orderDate alter table orderDetail drop orderDate; #語句2:添加列unitPrice alter t…

在 React 中,組件之間傳遞變量的常見方法

目錄 1. **通過 Props 傳遞數據**2. **通過回調函數傳遞數據**3. **通過 Context API 傳遞數據**4. **通過 Redux 管理全局狀態**5. **通過事件總線(如 Node.js 的 EventEmitter)**6. **通過 Local Storage / Session Storage**7. **通過 URL 查詢參數傳…

Redis + 布隆過濾器解決緩存穿透問題

Redis 布隆過濾器解決緩存穿透問題 1. Redis 布隆過濾器解決緩存穿透問題 📌 什么是緩存穿透? 緩存穿透指的是查詢的數據既不在緩存,也不在數據庫,導致每次查詢都直接訪問數據庫,增加數據庫壓力。 例如&#xff1…

Vue動態添加或刪除DOM元素:購物車實例

Vue 指令系列文章: 《Vue插值:雙大括號標簽、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue條件判斷:v-if、v-else、v-else-if、v-show 指令》 《Vue循環遍歷:v-for 指令》 《Vue事件處理:v-on 指令》 《Vue表單元素綁定:v-model 指令》…

vue h5實現車牌號輸入框

哈嘍,大家好,最近鵬仔開發的項目是學校校內車輛超速方面的統計檢測方面的系統,在開發過程中發現有個小功能,就是用戶移動端添加車牌號,剛開始想著就一個輸入框,提交時正則效驗一下格式就行,最后…

硬件基礎(5):(3)二極管的應用

文章目錄 [toc]1. **整流電路****功能**:**工作原理**:**應用實例**:電路組成:整流過程:電路的應用: 2. **穩壓電路****功能**:**工作原理**:**應用實例**:電路組成及功能…

Wireshark網絡抓包分析使用詳解

序言 之前學計網還有前幾天備考華為 ICT 網絡賽道時都有了解認識 Wireshark,但一直沒怎么專門去用過,也沒去系統學習過,就想趁著備考的網絡相關知識還沒忘光,先來系統學下整理點筆記~ 什么是抓包?抓包就是將網絡傳輸…

安心聯車輛管理平臺源碼價值分析

安心聯車輛管理平臺源碼的價值可從技術特性、功能覆蓋、市場適配性、擴展潛力及商業化支持等多個維度進行分析。以下結合實際應用進行詳細解讀: 一、技術架構與開發優勢 主流技術棧與高性能架構 源碼采用成熟的前后端分離架構,后端基于Java技術&#xff…

【操作系統】Docker如何使用-續

文章目錄 1、概述2、鞏固知識2.1、基礎命令2.2、容器管理2.3、鏡像管理2.4、網絡管理2.5、Compose 3、常用命令 1、概述 在使用Docker的過程中,掌握常用的命令是至關重要的。然而,隨著時間的推移,我們可能會遺忘一些關鍵的命令或對其用法變得…

ElementUI el-menu導航開啟vue-router模式

有沒有小伙伴遇到這么一種情況:ElementUI el-menu導航中,開啟vue-router 的模式后,點擊觸發事件而不進行路由跳轉? 別慌!下面直接說解決方案: 借助路由守衛進行判斷 給el-menu綁定切換事件,給…

【leetcode hot 100 17】電話號碼的字母組合

分析:當設計關鍵字“所有組合”時,要考慮深度優先遍歷、廣度優先遍歷(層次遍歷),其中: 深度優先搜索: 自頂向下的遞歸實現深搜定義子問題在當前遞歸層結合子問題結果解決原問題 廣度優先搜索 利…

Vue 2 探秘:visible 和 append-to-body 是誰的小秘密?

🚀 Vue 2 探秘:visible 和 append-to-body 是誰的小秘密?🤔 父組件:identify-list.vue子組件:fake-clue-list.vue 嘿,各位前端探險家!👋 今天我們要在 Vue 2 的代碼叢林…

C++學習之路:從頭搞懂配置VScode開發環境的邏輯與步驟

目錄 編輯器與IDE基于vscode的C開發環境配置1. 下載vscode、淺嘗編譯。番外篇 2. 安裝插件,賦能編程。3. 各種json文件的作用。c_cpp_properties.jsontask.jsonlaunch.json 總結&&彩蛋 編輯器與IDE 上一篇博客已經介紹過了C程序的一個編譯流程,從…

PPT 轉高精度圖片 API 接口

PPT 轉高精度圖片 API 接口 文件處理 / 圖片處理,將 PPT 文件轉換為圖片序列。 1. 產品功能 支持將 PPT 文件轉換為高質量圖片序列;支持 .ppt 和 .pptx 格式;保持原始 PPT 的布局和樣式;轉換后的圖片支持永久訪問;全…

VSCode 抽風之 兩個conda環境同時在被激活

出現了神奇的(toolsZCH)(base) 提示符,如下圖所示: 原因大概是:conda 環境的雙重激活:可能是 conda 環境沒有被正確清理或初始化,導致 base 和 toolsZCH 同時被激活。 解決辦法就是 :conda deactivate 兩次…