黑马 Javaweb - MySQL 精华篇

我是南城余!阿里云开发者平台专家博士证书获得者!

欢迎关注我的博客!一同成长!

一名从事运维开发的worker,记录分享学习。

专注于AI,运维开发,windows Linux 系统领域的分享!

知识库链接:

Java基础入门 · 语雀


数据库约束

  1. 主键约束 primary key
  2. 外键约束 foreign key
  3. 非空约束 not null
  4. 唯一约束 unique
  5. 默认约束 default

create database  ts_db;
use ts_db;-- DDL实战(表操作)
-- 普通建表语句
create table t_user(id int comment 'ID,唯一标识符',username varchar(20) comment '用户名',name varchar(10) comment '名字',age int comment '年龄',gender char(1) comment '性别') comment '用户表';drop table t_user;-- 约束建表语句
create table t_user(id int  primary key auto_increment comment 'ID,唯一标识符',username varchar(20) not null unique comment '用户名',name varchar(10)  not null comment '名字',age int comment '年龄',gender char(1) default '男' comment '性别') comment '用户表';

案例和数据类型

  1. charvarchar的区别:

char(10):代表字段占10个字,全部占完,如果不足10个,则补null

varchar(10):不足10个,也不补充,默认为几个字符就存储几个字符

所以在日常开发中,varchar使用比例别char高

  1. float,double和decimal

这三个数组类型都是小数型数值类型,后面都可以跟()表示数字长度

float(5,2)代表 5表示整个数字长度,2代表小数位个数

根据页面原型,需求创建表

unsigned为无符号的,即为不能为负数 在企业开发种 类似gender这种复选框的选项,一般采用数字

-- 案例实战
create table t_emp(id int primary key auto_increment,username varchar(20) not null unique comment '用户名非空 必填 唯一',employeeName varchar(10) not null comment '员工姓名非空 必填',gender tinyint unsigned not null default '性别 存储1 - 男 2 - 女',-- unsigned为无符号的,即为不能为负数 在企业开发种 类似gender这种复选框的选项,一般采用数字-- 对应的含义 1 - 男 2 - 女headerImage varchar(200) ,job tinyint unsigned comment '1- 2- 3- 4-',entryDate date,password varchar(15) default '123456',create_time datetime not null,update_time datetime not null
);

DDL语句

TODOD6 -10 数据库 DML

update tb_emp set name = '张三',update_time = now() where id = 1;-- delete 不能删除字段值,所以如果想要删除某个字段 可以使用update更新某个字段为NULLdelete from tb [where 条件] --如果没条件 则删除整个表的所有数据

数据库 DQL

-- 去重 distinct
select distinct id from tb;
-- 别名 
select name '姓名' from tb;-- *在实际开发中 影响效率 不直观 一般不使用-- 查询null 要用 is null
select * from tb where job is null;--某张表的数据总量 1.count(字段) 2.count(常量) 3.count(*)√ 推荐数据库对其做了优化
select count(*) from tb;--聚合函数 和 条件查询使用 
--先查询入职时间在‘2015-01-01'(包含)以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位
select job,count(*) from tb where entry_time <= '2015-01-01' group by job having count(*) >= 2;
--分组查询后,查询的字段一般为分组字段和聚合函数,而查询其他字段无任何意义
--执行顺序:where > 聚合函数 > having--where 和 having的区别
--1. 执行时机不同:where是分组之前进行过滤,不满足where条件和不参与分组;而having是分组之后对结果进行过滤
--2. 判断条件不同:where不能对聚合函数进行判断,而having可以--排序查询
select * from tb order by entry_time , order by update_time;--分页查询
select * from tb limit(起始索引,查询记录数);
--起始索引=(查询页码-1)*每页显示记录数--案例
--根据需求,完成员工性别统计
select if(gender = 1,'man','woman') 性别,count(*) from tb group by gender ;
--完成员工职位信息统计
select (case job when 1 then '班主任' when 2 then '讲师' when 3 then '学生主管' else '未分配职位' end) '职位'
,count(*) from tb group by job;

多表设计

-- 表 分为 一对多、一对一(通过外键关联主键)  
--多对多(一般借助第三张表实现,也称为关系维护表,第三张表用来设置外键关联另外两张表)

多表查询

--外连接 (x连接查询出来的结果为x的全部数据和两张表交集的全部数据)
--A.查询员工表所有 员工的信息,和对应的部门名称(左外连接)
select e.name, d.name from employee e left join department d on e.dept_id = d.id;
--B.查询部门表 所有 部门的名称,和对应的员工名称(右外连接)
select e.name, d.name from employee e right join department d on e.dept_id = d.id;
select e.name, d.name from department d left join employee e  on e.dept_id = d.id;--所谓的行列子查询 指的是子查询结果的表现形式为行或者列
--列子查询 用in--行子查询  查询与南城余入职日期和职位都相同的员工信息
select * from employee where (entry_time,job) = (select entry_time ,job from employee where name = '南城余');--表子查询 多行多列的子查询 常作为临时表使用
-- 查询入职日期是“2006-10-01”之后的员工信息及其部门名称
select e.*,d.name from  (select * from employee where entry_time > '2006-10-01') e,departmen d where e.dept_id = d.id;--题目 查询出低于菜品平均每个的菜品信息(展示出菜品名称、菜品价格)
select name,price  from dish where price < (select avg(price) from dish); 

事务

--开始事务
start transaction;/begin;--删除部门
delete from tb_dept where id = 2;--删除部门下的员工
delete from tb_emp where dept_id = 2;--提交事务 (上面两条sql执行成功方可执行)
commit;--回滚事务(上面两条sql有一条失败执行此语句回滚)
rollback;

索引

--MySQL数据库默认索引为B+tree(多路平衡搜索树)
--创建索引
create index idx_emp_name on tb_emp(name);--查询索引 查询出来的索引包括 唯一索引 	主键索引(所有索引中性能最高的) 
show index from tb_emp;--删除索引
drop index idx_emp_name on tb_emp;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

市场监管总局发布区块链和分布式记账技术6项标准,中创积极推动区块链产业发展!

近日&#xff0c;市场监管总局&#xff08;国家标准委&#xff09;批准发布一批重要国家标准&#xff0c;涉及生产生活、绿色可持续等多个领域&#xff0c;这些标准将在引领产业发展、促进绿色转型、助力对外贸易、推动城乡建设、提升生活品质等方面发挥重要作用。 其中一项标…

02-编程猜谜游戏

本章通过演示如何在实际程序中使用 Rust&#xff0c;你将了解 let 、 match 、方法、关联函数、外部crate等基础知识。 本章将实现一个经典的初学者编程问题&#xff1a;猜谜游戏。 工作原理如下&#xff1a;程序将随机生成一个介于 1 和 100 之间的整数。然后&#xff0c;程序…

C# Cad2016二次开发选择csv导入信息(七)

//选择csv导入信息 [CommandMethod("setdata")] //本程序在AutoCAD的快捷命令是"DLLLOAD" public void setdata() {Microsoft.Win32.OpenFileDialog dlg new Microsoft.Win32.OpenFileDialog();dlg.DefaultExt ".csv";// Display OpenFileDial…

DNS寻址过程

用一张图详细的描述DNS寻址的过程&#xff0c;是高级前端进阶的网络篇&#xff1a; 主要是第三步要记仔细就行啦&#xff0c;每一步都要详细的记录下来&#xff0c;总结的脉络如下&#xff1a; 本地DNS缓存本地DNS服务器根域名服务器 顶级域名服务器再次顶级域名服务器权威域名…

YOLOv5改进 | 主干篇 | 华为移动端模型GhostnetV2一种移动端的专用特征提取网络

一、本文介绍 本文给大家带来的改进机制是华为移动端模型Ghostnetv2,华为GhostNetV2是为移动应用设计的轻量级卷积神经网络(CNN),旨在提供更快的推理速度,其引入了一种硬件友好的注意力机制,称为DFC注意力。这个注意力机制是基于全连接层构建的,它的设计目的是在通用硬…

Vue-21、Vue监测数组改变

1、数组调用以下方法Vue可以监测到。 arr.push(); 向数组的末尾追加元素 const array [1,2,3] const result array.push(4) // array [1,2,3,4] // result 4arr.pop(); 删除末尾的元素 const array [a, b] array.pop() // b array.pop() // a array.pop() // undefi…

Elasticsearch各种高级文档操作3

本文来记录几种Elasticsearch的文档操作 文章目录 初始化文档数据聚合查询文档概述对某个字段取最大值 max 示例对某个字段取最小值 min 示例对某个字段求和 sum 示例对某个字段取平均值 avg 示例对某个字段的值进行去重之后再取总数 示例 本文小结 初始化文档数据 在进行各种文…

flutter获取地理定位:geolocator依赖详细用法

本文使用geolocator插件实现app物理定位功能。 该插件的主要功能有&#xff1a; 获取最后已知位置&#xff1b;获取设备当前位置&#xff1b;获取连续的位置更新&#xff1b;检查设备是否启用了定位服务&#xff1b;计算两个地理坐标之间的距离&#xff08;米&#xff09;&am…

AI时代—ChatGPT-4.5的正确打开方式

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

微信小程序(七)navigator点击效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.默认效果 2.无效果 3.激活效果 源码&#xff1a; index.wxml //如果 <navigator url"/pages/logs/logs">跳转到log页面&#xff08;默认&#xff09; </navigator><navigator url&q…

从零开始,自己搭建一个autonomous mobile robot做gazebo仿真(1):mobile robot建模与添加差速控制器

这样一个简单的mobile robot模型 首先写xacro文件&#xff0c;创建 link joint transmission <?xml version"1.0"?> <robot xmlns:xacro"http://www.ros.org/wiki/xacro" name"whill_modelc" ><xacro:property name"PI&q…

【点云、图像】学习中 常见的数学知识及其中的关系与python实操[更新中]

文章目录 前言一、平均值、方差、协方差平均值&#xff08;mean&#xff09;np.mean()方差&#xff08;variance&#xff09;np.var()总体方差 np.var(a, ddof0)无偏样本方差np.var(a, ddof1)有偏样本方差标准差&#xff08;standard deviation&#xff09;np.std(a, ddof1)默认…

Docker 部署考核

Docker安装 安装必要的系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 添加docker-ce安装源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 配置阿里云Docker Yum源: yum-config-manager --ad…

2024.1.19 网络编程 作业

思维导图 练习题 1> UDP传输实现聊天室 服务器端 #include <myhead.h> #define SER_IP "192.168.125.151" #define SER_PORT 9999 typedef struct Msg {char user[32]; //用户名int type; //执行操作1.登录、2.发消息、0.退出char text[1024]; …

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1&#xff09;基于查询的 CDC 和基于日志的 CDC2&#xff09;Flink CDC3&#xff09;Flink CDC原理简述4&#xff09;基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

在 Python 中检查一个数字是否是同构数

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 同构数&#xff0c;又称为自守数或自同构数&#xff0c;是一类特殊的数字&#xff0c;它们具有一种有趣的性质&#xff1a;将其平方后的数字&#xff0c;可以通过某种方式重新排列得到原来的数字。本文将详细介绍…

2024Java高频面试题之MQ消息中间件,面试都问些什么?(附详细答案)

最近很多同学问我有没有java学习资料&#xff0c;我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号&#xff1a;“ Tom聊架构 ”&#xff0c; 回复暗号&#xff1a;“ 578”即…

Dockerfile镜像构建

Dockerfile镜像构建 1、部署harbor仓库 #部署docker #解压harbor安装包 rootharbor:~# cd /app/harbor/ rootharbor:/app/harbor# ll total 597560 drwxr-xr-x 3 root root 180 Jan 13 13:17 ./ drwxr-xr-x 4 root root 77 Jan 13 13:14 ../ drwxr-xr-x 3 root …

element-ui 打包流程源码解析(下)

目录 目录结构和使用1&#xff0c;npm 安装1.1&#xff0c;完整引入1.2&#xff0c;按需引入 2&#xff0c;CDN3&#xff0c;国际化 接上文&#xff1a;element-ui 打包流程源码解析&#xff08;上&#xff09; 文章中提到的【上文】都指它 ↑ 目录结构和使用 我们从使用方式来…

零基础学Python(3)— 注释、代码缩进和编码规范

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。在使用Python语言进行编程的时候&#xff0c;需要遵循一定的规范标准。本节课就带大家了解下Python语言在注释、缩进和编码方面的规范!~&#x1f308; 目录 &#x1f680;1.注释 &#x1f680;2.代码缩进 &#x1f68…