MySQL---函數與約束

目錄

一、函數

1. 字符串函數?

2. 數值函數

3. 日期函數

4. 流程函數

5. 總結?

二、約束?

1. 概述

2. 約束演示

3. 外鍵約束

3.1 添加外鍵

3.2 刪除外鍵?

3.3 外鍵刪除更新行為

4. 總結?

一、函數

1. 字符串函數?

命令如下所示:

-- concat
select concat("Hello" , " MySQL");//Hello MySQL-- lower
select lower("Hello");//hello-- upper
select upper("Hello");//HELLO-- lpad
select lpad('01",5,"-");//---01-- rpad
select rpad('01",5,"-");//01----- trim
select trim(" Hello  MySQL ");//Hello  MySQL-- substring
select substring("Hello MySQL",1,5);//Hello;首位索引為1

案例練習:?

命令如下所示:?

-- 1.由于業務需求變更,企業員工的工號,統一5位數,目前不足5位數的全部在前面補0。比如:1號員工的工號應該為00001,
update emp set workno = lpad(workno,5,"0");

輸出如下所示:

2. 數值函數

命令如下所示:??

-- ceil
select ceil(1.1);//2-- floor
select floor(1.9);//1-- mod
seLect mod(3,4);//3%4=3-- rond
select rand();-- round
select round(2.345,2);//2.35

案例練習:??

命令如下所示:?

--若rand生成的數為0.0135566則需要右邊補零
select lpad(round(rand()*1000000 , 0),6,"0');

3. 日期函數

命令如下所示:??

-- curdate()
select curdate();-- curtime()
select curtime();-- now ()
select now();-- YEAR MONTH DAY
select YEAR(now());select MONTH(now());seleet DAY(now());-- date_add
select date_add(now(),INTERVAL 70 DAY);
select date_add(now(),INTERVAL 70 MONTH);
select date_add(now(),INTERVAL 70 YEAR);-- datediff
select datediff("2021-12-01", "2021-10-01");//60;前減后

?案例練習:??

?命令如下所示:?

select name,datediff(curdate(),entrydate) as 'entrydays' from emp order by entrydays desc;

?輸出如下所示:

4. 流程函數

命令如下所示:??

-- if
select if(true,'Ok','Error');//OK-- ifnull
select ifnull('Ok','Default');//OKselect ifnull(' ','Default');//空select ifnull(null, 'Default');//Default-- case when then else end
--需求:查bemp表的員工姓名和工作地址〔北京/上海---->一線城市,其他---->二線城市)
selectname,( case workaddress when'北京' then '一線城市' when ' 上海' then '一線城市' else '二線城市' end ) as '工作地址 
from emp;

?案例練習:???

生成表:

如下所示:?

命令如下所示:??

selectid,name,(case when math >= 85 then '優秀' when math >=60 then '及格' else '不及格' end)'數學",(case when english >= 85 then '優秀' when english >=60 then‘及格' else '不及格' end)'英語',(case when chinese >= 85 then '優秀' when chinese >=60 then‘及格'else '不及格' end)'語文
from score;

??輸出如下所示:

5. 總結?

二、約束?

1. 概述

2. 約束演示

?案例練習:???

命令如下所示:??

create table user(id int primary key auto_increment comment "主鍵",name varchar(10) not null unique conment"姓名",age int check ( age > 0 && age c= 120 ) comment"年齡",status char(1]default "1"comment"狀態",gender char(1) comment"性別"
)comment '用戶表';    --插入數據
insert into user(name ,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,0','男');
insert into user(name,age,status,gender) values ('Tom3',19,'1','男');insert into user(name,age,status,gender) values (null,19,'1','男');
insert into user(name,age,status,gender) values ('Tom5',19,'1','男');insert into user(name,age,status,gender) values ('Tom4',80,"1','男');
insert into user(name,age,status,gender) values ('Tom5',-1,'1','男');
insert into user(name,age,status,gender) values ('Tom5',121,'1','男');insert into user(name,age,gender) values ('Tom5',120,'男');

輸出如下所示:?

?

圖形化界面創建如下所示:

補充:?

3. 外鍵約束

?命令如下所示:??

--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,‘楊道',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);

上述兩表并未建立關聯?

3.1 添加外鍵

?命令如下所示:???

--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,‘楊道',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);--添加外鍵
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

輸出如下所示:?

3.2 刪除外鍵?

?命令如下所示:???

--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,'楊逍',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);--添加外鍵
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);--刪除外鍵
hlter table emp drop foreign key fk_emp_dept_id;

?輸出如下所示:?

3.3 外鍵刪除更新行為

?命令如下所示:????

--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,'楊逍',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);--添加外鍵
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);--刪除外鍵
hlter table emp drop foreign key fk_emp_dept_id;--外鍵的刪除和更新行為
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade;

?輸出如下所示:??

圖形化界面設置如下所示:

4. 總結?

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

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

相關文章

蘋果CMS:如何去掉首頁幫助提示信息

首先我們安裝好蘋果CMS,未安裝的可以參考蘋果cms:介紹及安裝 安裝好之后我們需要進入模版設置,可能對于剛剛接觸CMS框架的朋友是不清楚地址的: https://www.yourweb.com/admin_login.php/admin/mxpro/mxproset 其中【yourweb】…

愛設計AiPPT.cn趙充:營銷工作的AI進化

愛設計&AiPPT.cn是一家 AIGC 數字科技企業,致力于打造「下一代個人與組織的 Ai 工作站」 。目前旗下產品包括AiPPT.cn、愛設計AIGC 內容中臺、365 編輯器、愛設計在線設計工具、AiH5 等超過 10 余款應用 AI 能力的內容創作工具。日前,愛設計&AiP…

python的協程異步

參考資料 https://blog.csdn.net/qq_43380180/article/details/111573642?spm1001.2014.3001.5506 協程的概念 指的是在一個線程中,可以在某個地方掛起的特殊函數,并且可以重新在掛起處繼續運行。協程不是進程,也不是線程。 進程 VS 線程…

dcache-android框架中的設計模式詳解

引言:孤獨的人喜歡深夜,多情的人喜歡黃昏。幸福的人喜歡陽光,傷心的人偏愛風雨。 眾所周知,dcache-android是本人一行一行代碼手寫出來的Android數據緩存框架,寫了好幾年了,雖然不是每天寫,但一…

【go從入門到精通】精通并發編程-使用扇入扇出提升多個通道之間傳遞數據的效率

在并發編程領域,Golang 作為一種擅長處理并發的編程語言而脫穎而出。 Go 并發模型的一個關鍵組件是通道,它允許 goroutine 進行通信并同步其工作。在這里,我們將探討在 Go 中的多個通道之間傳遞數據的技術。當需要協調不同 goroutine 之間的工作并管理數據流時,這非常有用。…

TypeScript-類型斷言

類型斷言 當開發者比TS本身更清楚當前的類型是什么,可以使用斷言(as)讓類型更加精確和具體 const _link document.getElementById(link) console.log(_link.href) // 出錯了,如下圖 const _link document.getElementById(link) as HTMLAnchorElement…

【三數之和】python,排序+雙指針

暴力搜索3次方的時間復雜度,大抵超時 遇到不會先排序 排序雙指針 上題解 照做 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:res[]nlen(nums)#排序降低復雜度nums.sort()k0#留兩個位置給雙指針i,jfor k in range(n-2):if nums[k]…

【再探】Java—泛型

Java 泛型本質是參數化類型,可以用在類、接口和方法的創建中。 1 “擦除式”泛型 Java的“擦除式”的泛型實現一直受到開發者的詬病。 “擦除式”的實現幾乎只需要在Javac編譯器上做出改進即可,不要改動字節碼、虛擬機,也保證了以前沒有使…

光伏電站在線監測智能診斷系統:開啟無人值守新紀元

光伏電站在線監測智能診斷系統:開啟無人值守新紀元 大家都知道光伏電站是通過汲取著太陽的光芒,為人類提供源源不斷的電能源。然而,隨著光伏電站規模的擴大和復雜性的增加,如何有效提高發電效率、減少人工維護成本,實…

YOLOV5算法多目標檢測系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 隨著計算機視覺技術的飛速發展,目標檢測已成為許多實際應用場景中的關鍵技術&…

AWS存儲之 Storage Gateway

AWS Storage Gateway是一項混合存儲服務,它允許您在本地環境和AWS云之間無縫地集成存儲解決方案。它提供了一種簡單、安全地方式,讓您可以將本地應用程序連接到云存儲服務,如Amazon S3、Amazon Glacier、Amazon EBS等。 比如一個公司如果想將…

數據結構之二叉樹的超詳細講解(2)--(堆的概念和結構的實現,堆排序和堆排序的應用)

個人主頁:C忠實粉絲 歡迎 點贊👍 收藏? 留言? 加關注💓本文由 C忠實粉絲 原創 數據結構之二叉樹的超詳細講解(2)--(堆的概念和結構的實現,堆排序和堆排序的應用) 收錄于專欄【數據結構初階】 本專欄旨在分享學習數據結構學習的一點學習筆記…

電腦卸載linux安裝windows后每次開機都出現grub

原因分析 這是因為電腦硬盤中還存在linux系統的引導程序,并且啟動順序還在windows之前,有時候通過bios根本找不到它的存在,以至于每次windows開機出現grub之后都要輸入exit退出linux的引導之后才能使得電腦進入windows,這個有時會…

算法訓練營第三十六天 | LeetCode 1005 K次取反后最大化的數組、LeetCode 134 加油站

LeetCode 1005 K次組飯后最大化的數組 這題貪的主要是數值最大化。如果K > 負數個數,我們就先將負數全部轉換成它的相反數,并將K--,之后K剩余的值可以對2取模,為0的話直接得出最后結果,為的話我們要在當前所有值里…

Python | Leetcode Python題解之第108題將有序數組轉換為二叉搜索樹

題目: 題解: class Solution:def sortedArrayToBST(self, nums: List[int]) -> TreeNode:def helper(left, right):if left > right:return None# 選擇任意一個中間位置數字作為根節點mid (left right randint(0, 1)) // 2root TreeNode(nums…

純血鴻蒙APP實戰開發——邊緩存邊播放案例

介紹 OhosVideoCache是一個支持邊播放邊緩存的庫,只需要將音視頻的url傳遞給OhosVideoCache處理之后再設置給播放器, OhosVideoCache就可以一邊下載音視頻數據并保存在本地,一邊讀取本地緩存返回給播放器,使用者無需進行其他操作…

NDIS小端口驅動(五)

在需要的時候,我們也許需要NDIS微型端口程序信息,下面會從多個方面來討論如何查詢NDIS微型端口驅動。 查詢無連接微型端口驅動程序 若要查詢無連接微型端口驅動程序維護的 OID,綁定協議調用 NdisOidRequest 并傳遞 一個NDIS_OID_REQUEST 結…

Mac 安裝 git

文章目錄 前言一、介紹二、下載三、驗證四、配置五、Git常用命令六、git提交和撤銷工作流程代碼提交和提交同步代碼撤銷和撤銷同步 FAQ1.homebrew 下載解決方法一(強烈推薦):解決方法二: 總結 前言 Git 是一個開源的分布式版本控…

Java - Stream流式編程

Stream流式操作 Stream流式操作,就是學習java.util.stream包下的API,Stream不同于java的輸入輸出流,是實現對集合(Collection)的復雜操作,例如查找、替換、過濾和映射數據等,集合是一種靜態的數…

LeetCode547省份數量

題目描述 有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那么城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給…