-- 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…