Java全棧學習筆記32

-- drop table t_stu;

-- unique 唯一約束的列允許為null

-- 如果在之后的操作中。需要某列必須為key,才能做一些操作的情況下。也可以使用唯一約束代替主鍵約束

-- create table t_stu(

-- ??studId int,

-- ??tel varchar(11) unique,

-- ??sex varchar(1),

-- ??addr varchar(100),

-- ??idCard varchar(18),

-- ??createTime datetime default now(),

-- ??unique(studId,createTime)

-- );

-- drop table t_stu;

-- create table t_stu(

-- ??studId int auto_increment unique,

-- ??tel varchar(11) unique,

-- ??sex varchar(1),

-- ??addr varchar(100),

-- ??idCard varchar(18),

-- ??createTime datetime default now()

-- );

-- insert into t_stu(studId,tel,sex,addr,idCard) values(1,"13333333333",'男','北京',"133233190001012233");

-- insert into t_stu(studId,tel,sex,addr,idCard) values(3,null,'男','石家莊',"133233190001012234");

-- alter table t_stu add constraint `uk_idcard` unique(idCard);

-- 查看建表語句

-- show create table 表名

-- drop table t_stu;

-- create table t_stu(

-- ??studId int auto_increment unique,

-- ??tel varchar(11) check(length(tel) = 11),

-- ??sex varchar(1),

-- ??addr varchar(100),

-- ??idCard varchar(18),

-- ??createTime datetime default now(),

-- ??age int check(age > 15),

-- ??constraint `ck_idCard` check(length(idCard) = 18 or length(idCard)= 15)

-- );

-- insert into t_stu(studId,tel,sex,addr,idCard) values(1,"13333333333",'男','北京',"133233190001012233");

-- alter table t_stu add constraint `ck_sex` check(sex = '男' or sex = '女');

-- insert into t_stu(studId,tel,sex,addr,idCard) values(2,"13333333333",'女','北京',"133233190001012233");

-- insert into t_stu(studId,tel,sex,addr,idCard) values(2,"13333333333",'女','北京',"133233190001012233");

-- insert into t_stu(studId,tel,sex,addr,idCard) values(3,"13333333333",'女','北京',"133233190001012");

--

-- insert into t_stu(studId,tel,sex,addr,idCard,age) values(3,"13333333333",'女','北京',"133233190001012",16);

-- 學生表

create table t_student(

??id int auto_increment primary key COMMENT "id",

??studId varchar(30) unique comment "學號",

??studName varchar(30) comment "學生姓名",

??studSex varchar(2),

??tel varchar(11),

??createTime datetime default now()

);

create table t_course(

??courseId int auto_increment primary key,

??courseName varchar(30),

??createTime datetime default now()

);

-- 學生選課表

drop table t_curricula;

/* 被參考的列必須有主鍵或者唯一約束

??create table tableName(

????studId int,

????[constraint `約束名稱`] foreign key(studId) references 主表名(列名)

??)

*/

-- drop table t_curricula;

-- create table t_curricula(

-- ??id int auto_increment primary key,

-- ??studId int,

-- ??courseId int,

-- ??constraint `fk_studId_t_student_id` foreign key(studId) references t_student(id),

-- ??FOREIGN key(courseId) references t_course(courseId)

-- );

-- alter table t_curricula add constraint `fk_courseId_t_course_courseId` foreign key(courseId) references t_course(courseId)

-- 刪除主表數據。 ?先刪除從表,再刪除主表

delete from t_curricula where courseId = 8;

delete from t_course where courseId = 8

-- 根據同一個條件,同時刪除多張表數據。

delete t_curricula,t_course from t_curricula,t_course where t_course.courseId = 1;

-- update t_course set courseId = 8 where courseId = 3;

-- update t_curricula set courseId = 8 where courseId = 3;

-- update t_course,t_curricula set t_course.courseId = 8,t_curricula.courseId = 8 where t_course.courseId = 3

drop table t_curricula;

create table t_curricula(

??id int auto_increment primary key,

??studId int,

??courseId int,

??constraint `fk_studId_t_student_id` foreign key(studId) references t_student(id),

??FOREIGN key(courseId) references t_course(courseId) on update cascade on delete set null

);

update t_course set courseId = 8 where courseId = 3;

delete from t_course where courseId = 8

create table t_del_constraint(

??id int auto_increment primary key,

??`name` ?varchar(30) unique,

??idcard varchar(18) not null,

??addr varchar(30),

??createtime datetime default now(),

??constraint `uk_idcard` unique(idcard),

??check(length(idcard) = 18),

??FOREIGN key(addr) references t_stu(addr)

)

CREATE TABLE `t_del_constraint` (

??`id` int NOT NULL AUTO_INCREMENT,

??`name` varchar(30) DEFAULT NULL,

??`idcard` varchar(18) NOT NULL,

??`addr` varchar(30) DEFAULT NULL,

??`createtime` datetime DEFAULT CURRENT_TIMESTAMP,

??PRIMARY KEY (`id`),

??UNIQUE KEY `uk_idcard` (`idcard`),

??UNIQUE KEY `name` (`name`),

??KEY `addr` (`addr`),

??CONSTRAINT `t_del_constraint_ibfk_1` FOREIGN KEY (`addr`) REFERENCES `t_stu` (`addr`),

??CONSTRAINT `t_del_constraint_chk_1` CHECK ((length(`idcard`) = 18))

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

-- 刪除外鍵

alter table t_del_constraint drop foreign key `t_del_constraint_ibfk_1`

-- 刪除check

alter table t_del_constraint drop check `t_del_constraint_chk_1`

-- 刪除唯一約束

alter table t_del_constraint drop index `uk_idcard`;

alter table t_del_constraint drop index `name`

-- 刪除主鍵

alter table t_del_constraint drop primary key

-- 非空約束和默認值約束都可以使用修改列的數據類型的方式進行刪除

alter table t_del_constraint modify id int;

alter table t_del_constraint modify idcard varchar(18);

alter table t_del_constraint modify createTime datetime;

-- 數據庫備份

-- 備份結構 ?mysqldump -u -p -d dbName > 路徑/文件名.sql

-- 備份數據 ?mysqldump -u -p -t dbName > 路徑/文件名.sql

-- 備份數據和結構 ?mysqldump -u -p dbName > 路徑/文件名.sql

-- 執行外部的sql命令(txt) 進入mysql之后 通過source命令 ?source 文件名

-- 查詢結果和表中數據沒有聯系,只是以表的形式進行了展示

-- 查詢部門信息

select * from dept;

-- 查詢語句 ?

-- select *(列名) from 表名 [where 查詢條件][分頁][排序][分組][聚合]

-- * 是所有列

select * from emp;

-- 查詢員工姓名,員工工資和獎金,每行數據的唯一標識

select empno,ename,sal,comm from emp;

-- 從dept中檢索部門編號 部門名稱

select deptno,dname from dept;

-- 排序默認是根據主鍵升序排序

select * from emp;

-- 查詢員工姓名

select ename from emp;

-- order by 子句 ?desc降序 asc升序

-- 查詢員工姓名,員工工資根據員工工資升序排序

select ename,sal from emp order by sal desc;

-- 查詢員工信息根據入職日期進行降序排序

select * from emp order by hiredate desc;

-- 查詢員工姓名,根據員工姓名升序排序

select ename from emp order by ename;

-- 查詢員工姓名,員工工資+獎金 根據員工資和獎金的和進行降序排序

-- ifnull(列名,值)

select ename,sal+ifnull(comm,0) from emp order by sal+ifnull(comm,0) desc;

-- 排序列可以為多列,如果根據單列排序,那么如果排序列兩個或多行數據相同,那么相同的行則以默認方式排序

-- 查詢員工姓名和員工工資并以員工工資降序,員工姓名升序排序

select ename,sal from emp order by sal desc,ename;

-- 查詢員工姓名,員工崗位,員工工資,獎金(如果獎金為null,則設置'沒獎金')

select ename,job,sal,ifnull(comm,0) from emp;

-- 查詢員工姓名,崗位,工資,獎金(如果獎金不為null,為有獎金,否則為無獎金)

select ename,job,sal,

case

when comm is not null then comm

else "沒獎金"

end COMM

from emp;

-- 查詢員工姓名,員工崗位,入職時間,如果入職日期在6月份之前,則為上半年入職,否則為下半年

select ename,job,

case

when month(hiredate) <= 6 then "上半年"

else "下半年"

end HIREDATE

from emp;

-- 待支付 待發貨 ?待收貨 ?待評價 已完成 ?0 1 2 3 4

-- 微信支付 支付寶支付 ?銀聯支付 惠支付 ?1 2 3 4

-- limit 子句 查詢指定條數 ?limit的位置從0開始

-- 查詢員工編號,員工姓名,員工崗位,查詢前5條

select empno,ename,job from emp limit 5

-- limit num1,num2 ??開始位置(頁碼-1) ?* 每頁顯示條數,顯示條數

select empno,ename,job from emp limit 0,5;

select empno,ename,job from emp limit 5,5;

select empno,ename,job from emp limit 10,5;

-- limit子句 在整個查詢語句的最后

-- 查詢員工姓名,工資,部門編號 根據工資降序排序查詢前5條

select ename,sal,deptno

from emp

order by sal desc

limit 5,5

-- where 子句 待條件的查詢

-- 查詢10號部門的員工信息....

select * from emp where 1 != 1;

select * from emp where deptno = 10;

-- 在emp表中查詢工資高于3000的員工的員工編號、員工姓名和工資信息:

select empno,ename,sal from emp where sal > 3000;

-- 總工資高于3000的員工編號,員工姓名和總工資信息

select empno,ename,sal + ifnull(comm,0) from emp

where sal + ifnull(comm,0) > 2000

-- 在emp表中查詢工資高于1600,并且部門是20部門的員工的部門編號、員工編號和員工姓名信息:

select deptno,empno,ename from emp where sal > 1600 and deptno = 20;

-- 在emp表中查詢工資高于1600低于5000,并且部門是20部門的員工的部門編號、員工編號和員工姓名信息:

select deptno,empno,ename,sal from emp where sal > 1600 and sal < 3000 and deptno ?= 20

-- 在emp表中查詢10或20部門的員工的部門編號、員工編號和員工姓名信息,并按部門編號升序排列:

select deptno,empno,ename from emp

where deptno = 20 or deptno = 10

order by deptno

limit 2

-- 范圍測試(between and) ?查詢員工編號,員工姓名,員工工資 要求工資大于等于1600 小于等于3000

select empno,ename,sal from emp where sal >= 1600 and sal <= 3000;

select empno,ename,sal from emp where sal between 1600 and 3000;

-- 組成員測試 ?in ?查詢10號或20號或者30號部門的員工信息

select * from emp where deptno = 10 or deptno = 20 or deptno = 30

order by deptno desc;

select * from emp where deptno in(10,20,30)

select * from emp where deptno not in(10,20,30);

-- like _ ?%

-- 查詢員工信息,名字當中包含A的

select * from emp where ename like 'A%';

-- 查詢員工信息,名字中包含A但是A不是第一個

select * from emp where ename like '%A%' and ename not like 'A%';

-- 查詢沒有獎金的員工信息

select * from emp where comm is null;

-- 查詢有獎金的

select * from emp where comm is not null and comm != 0;

-- 查詢員工姓名,員工崗位,員工的總工資

select ename,job,sal + ifnull(comm,0) as sal

from emp

select ename,job,sal,

case

when comm is null then '沒獎金'

else comm

end comm

from emp

select ename "員工姓名",sal "員工工資" from emp;

-- 聚合函數

-- 求和 求平均數 ?最小 ?最大 ?條數

-- 員工的工資總和

select sum(sal) total from emp;

-- 員工的總工資(獎金和工資)

select sum(sal + ifnull(comm,0)) from emp

-- 查詢10號部門的員工的總工資

select sum(sal + ifnull(comm,0)) from emp where deptno = 10

select avg(sal) from emp where deptno = 10;

-- 查詢10號部門的最大工資

select max(sal) from emp where deptno = 10;

select min(sal) from emp where deptno = 10;

-- 查詢的員工數量

select count(*) from emp;

-- 查詢有獎金的人數 ?count數量 不包含指定列為空的行

select count(comm) from emp where comm != 0;

-- 分組查詢 group by 子句 ?

-- 分組查詢時 select 查詢的列只能包含三種

-- 1、聚合函數 ?2、分組依據 ?3、常量

-- 各個 ?查詢各個部門的最大工資

?select max(sal),deptno from emp group by deptno

?select deptno,min(sal),max(sal),sum(sal) from emp group by deptno

-- 查詢各個部門的最大工資及這個人的員工的姓名 -- 不提倡

select max(sal),ename from emp group by deptno;

-- select ename,sal from emp where sal in (select max(sal) from emp group by deptno)

-- group by 可以存在多個分組一句

-- 查詢各個部門中,各個崗位的最高工資

select max(sal),deptno,job from emp group by deptno,job

-- 各個年份入職的人數

select count(*),year(hiredate),"該死的查詢" from emp group by year(hiredate)

-- having 條件檢索 和where很像,但是執行時機不同

-- 查詢員工姓名,員工的總工資,總工資高于2650

-- select ename,sal + ifnull(comm,0) total from emp having total >= 2650;

-- 查詢10號部門的員工信息

select * from emp where deptno = 10 having sal > 1300;

-- having 常用于分組查詢后的篩選

-- 各個部門的最大工資,部門編號。要求最大工資大于3000

select max(sal),deptno from emp where sal > 3000 group by deptno

select max(sal) max,deptno from emp group by deptno having max > 3000;

-- distinct 去重

-- 查詢有多少個工種

select count(distinct job) from emp

-- 查詢各個部門的工資總和(獎金不為空),部門編號,總和大于9000 并且根據總工資進行倒序排序,查看前兩條例

select sum(sal + comm) total,deptno

from emp

where comm is not null

group by deptno

order by total desc

limit 2;

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

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

相關文章

linux升級系統,重啟出現Minimal BASH-like line editingis supported

文章目錄一.問題背景二.解決步驟2.1確認系統分區2.2手動引導2.3 重建grub引導2.4 還原軟件包 一.問題背景 閑來無事&#xff0c;把ubuntu25.04通過sudo do-release-upgrade命令升級到了ubuntu25.10.在升級的過程會出現以下問題 1.自動替換flatpak程序為snap2.請求是否清除舊依賴…

type(類型別名)和 interface的區別和最佳實踐

核心結論在大多數情況下&#xff0c;它們可以互換使用&#xff0c;都能描述對象的結構。它們的區別更多在于設計和擴展能力上。主要區別總結表特性interface (接口)type (類型別名)擴展方式使用 extends 繼承interface A extends B {}使用 & 交叉類型type A B & C合并…

vscode中使用git、githup的基操

一、git提交 配置賬戶密碼 查看用戶信息 git config --global user.name # 查看用戶名 git config --global user.email # 查看郵箱賬戶配置 # 設置全局用戶名和郵箱 git config --global user.name "你的用戶名" git config --global user.email "你的郵箱&q…

jsBridge接入流程

import deviceInfo from ./deviceInfo import { setRefreshToken } from ./token// 設備判斷 const u navigator.userAgent export const isAndroid u.indexOf(Android) > -1 || u.indexOf(Adr) > -1 export const isIOS !!u.match(/\(i[^;];( U;)? CPU.Mac OS X/)…

【C++】19. 封裝紅?樹實現set和map

文章目錄一、源碼及框架分析二、模擬實現map和set1、insert的實現2、iterator的實現3、map?持[ ]4、模擬實現的完整源代碼1&#xff09;RBTree.h2&#xff09;Myset.h3&#xff09;Mymap.h4&#xff09;Test.cpp一、源碼及框架分析 SGI-STL30版本源代碼&#xff0c;map和set的…

面試不會問題

1. 什么是表鎖&#xff1f;什么是行鎖&#xff1f;什么情況下會使用表鎖&#xff1f;InnoDB引擎通過“索引”實現行鎖&#xff08;鎖定滿足條件的行&#xff09;&#xff0c;但如果操作無法通過索引定位行&#xff0c;會導致行鎖失效&#xff0c;進而升級為表鎖。常見的表現為&…

達夢數據庫-用戶,權限,角色

達夢數據庫-用戶,權限,角色 在達夢數據庫(DM8)中,用戶(User)、權限(Privilege)和角色(Role) 是數據庫安全體系的核心組成部分,用于控制誰可以訪問數據庫、能訪問哪些對象以及能執行哪些操作。 下面為你提供一份全面、詳細、結構化的說明,幫助你深入理解達夢數據…

uniapp原生插件 TCP Socket 使用文檔

uniapp原生插件 TCP Socket 使用文檔 試了插件市場幾個TCP Socket插件都不能實現監聽服務器主動斷開&#xff0c;于是閑來無事就開發了一款&#xff0c;本插件是一個基于 Netty 實現的 TCP 通信模塊&#xff0c;用于在 UniApp 插件中提供 TCP 連接、數據發送和連接管理功能。以…

VM中CentOS 7密碼重置

重啟虛擬機點擊e進入內核處理向下劃找到UTF-8在后面輸入rd.breakctrl X進入單用戶模式mount -o remount,rw/sysroot進行掛盤 chroot /sysroot訪問系統&#xff0c;并使用passwd修改root密碼 出現亂碼 輸入LANGen touch /.autorelabel 保存配置 exit exit退出等待系統重新打開&…

車規級MOS管AEC-Q101認證的關鍵參數解讀與失效模式-深圳阿賽姆

摘要本文拆解AEC-Q101認證的7大關鍵測試項&#xff08;UIS/溫度循環/THB等&#xff09;&#xff0c;結合M120N06JC等型號實測數據&#xff0c;解析雪崩失效/柵氧擊穿/綁定線脫落等故障機理&#xff0c;附選型核查表一、AEC-Q101認證核心測試項與參數解讀1.1 非鉗位電感開關測試…

嵌入式鐵頭山羊stm32-ADC實現軟件觸發的常規序列的單通道轉換-Day25

目錄 一、實驗目的 二、電路連接 三、實驗執行&#xff08;五步&#xff09; 1.初始化ADC的IO引腳 2.配置ADC的時鐘&#xff0c;注意要小于14MHz 3.根據ADC的編程接口 實現初始化ADC的基本參數 4.配置常規序列并閉合觸發輸入開關 5.閉合總開關、啟動并讀取轉換結果 四…

多模態模型出現“幻覺”,描述了表格中不存在的內容,如何修正?

在日常工作中&#xff0c;多模態模型的 “幻覺” 問題已成為影響效率的關鍵痛點 —— 當我們需要模型基于文檔生成建議性內容&#xff08;如行業報告分析、論文數據解讀等&#xff09;時&#xff0c;模型常因無法準確理解文檔信息&#xff0c;輸出包含 “虛構內容” 的結果&…

Java AI 智能問數:Function調用版如何重塑企業數據決策

Java AI 智能問數&#xff1a;Function調用版如何重塑企業數據決策 在數字化轉型浪潮中&#xff0c;企業一把手常面臨數據查詢的痛點&#xff1a;分析師需編寫復雜SQL&#xff0c;業務人員依賴IT支持&#xff0c;決策鏈條冗長。傳統方法效率低下&#xff0c;而自然語言處理&…

AI-調查研究-74-具身智能 機器人學習新突破:元學習與仿真到現實遷移的挑戰與機遇

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; AI煉丹日志-31- 千呼萬喚始出來 GPT-5 發布&#xff01;“快的…

勞務員的就業前景如何?

勞務員的就業前景整體較為樂觀&#xff0c;受到行業需求、政策支持等因素的積極影響&#xff0c;同時也面臨著一些挑戰。以下是具體分析&#xff1a;1.就業優勢行業需求穩定&#xff1a;建筑行業作為國民經濟的支柱產業&#xff0c;持續發展使得對勞務員的需求較為穩定。無論是…

libvirt 新手指南:從零開始掌握虛擬化管理

引言 在云計算、大數據和邊緣計算的時代&#xff0c;虛擬化技術已成為 IT 基礎設施的核心支柱。它允許我們在單一物理服務器上運行多個虛擬機&#xff08;Virtual Machine&#xff0c;簡稱 VM&#xff09;&#xff0c;從而實現資源的高效利用、快速部署和靈活擴展。對于新手來說…

OpenLayers數據源集成 -- 章節三:矢量要素圖層詳解

前言在前面的文章中&#xff0c;我們學習了OpenLayers的瓦片圖層&#xff08;TileLayer&#xff09;技術。本文將深入探討OpenLayers中的矢量要素圖層&#xff08;VectorFeatureLayer&#xff09;功能&#xff0c;這是WebGIS開發中處理矢量數據、實現交互式地圖的核心技術。矢量…

從“能說話”到“會做事”:AI Agent如何重構日常工作流?

從“能說話”到“會做事”&#xff1a;AI Agent如何重構日常工作流&#xff1f;在人工智能飛速發展的當下&#xff0c;AI已從最初簡單的語音交互、信息檢索進化到了具備自主決策與行動能力的新階段&#xff0c;其中AI Agent的出現堪稱關鍵轉折點。從只能機械“說話”回答問題&a…

隨身wifi到底有沒有用?

不用繞彎子&#xff0c;直接說清隨身WiFi怎么回事&#xff0c;對比完家用WiFi和手機熱點&#xff0c;再避坑&#xff5e;一、先明白&#xff1a;隨身WiFi到底是啥&#xff1f; 1、簡單講就是「能揣兜里的WiFi發射器」——要么插張物聯卡&#xff0c;要么內置流量&#xff0c;能…

MySQL問題8

MySQL深度分頁優化思路 常見的3種優化思路如下&#xff1a; 1. 子查詢優化方式 示例改寫前&#xff1a; SELECT * FROM words WHERE name oee ORDER BY id LIMIT 99999990, 10;這個寫法會導致 MySQL 掃描并丟棄前面 99999990 行&#xff0c;效率極低。 示例改寫后&#xff…