当前位置: 首页 > news >正文

JavaWeb后端-MySQL

SQL

一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准
在这里插入图片描述

DDL

数据库

  • 操作语法
    在这里插入图片描述

表结构-创建

在这里插入图片描述

-- 创建表
create table user(id int comment 'ID,唯一标识',username varchar(40) comment '用户名',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '性别'
)comment '用户信息表';

约束:作用在表中字段上的规则
在这里插入图片描述

-- 创建表(约束)
create table user(id int primary key auto_increment comment 'ID,唯一标识',-- 主键约束 auto_incrementusername varchar(40) not null unique comment '用户名',-- 非空约束,唯一约束name varchar(10) not null comment '姓名',-- 非空约束age int comment '年龄',gender char(1) default '男' comment '性别'-- 默认值约束
)comment '用户信息表';
数据类型

数值类型
在这里插入图片描述
数值类型选取原则:
满足业务需求前提下,尽可能选择占用磁盘空间小的数据类型

字符串类型
在这里插入图片描述
在这里插入图片描述

日期时间类型
在这里插入图片描述

-- 案例:设计员工表emp
-- 基础字段:id 主键;create_time 创建时间;update_time 修改时间
create table emp(id int unsigned primary key auto_increment comment 'ID,主键',username varchar(20) not null unique comment '用户名',password varchar(32) default '123456' comment '密码',name varchar(10) not null comment '姓名',gender tinyint unsigned not null comment '性别,1男,2女',phone char(11) not null unique comment '手机号',job tinyint unsigned comment '职位,1班主任,2讲师,3学工主管,4教研主管,5咨询师',salary int unsigned comment '薪资',entry_date date comment '入职日期',image varchar(255) comment '头像',create_time datetime comment '创建时间',update_time datetime comment '修改时间'
)comment '员工表';

表结构-查询、修改、删除

在这里插入图片描述

-- 查询当前数据库的所有表
show tables;-- 查询表结构
desc emp;-- 查询建表语句
show create table emp;-- 字段:添加字段 qq varchar(13)
alter table emp add qq varchar(13) comment 'QQ号码';-- 字段:修改字段类型 qq varchar(15)
alter table emp modify qq varchar(15) comment 'QQ号码';-- 字段:修改字段名 qq -> qq_num varchar(15)
alter table emp change qq qq_num varchar(15) comment 'QQ号码';-- 字段:删除字段 qq_num
alter table emp drop column qq_num;-- 修改表名
alter table emp rename to employee;
alter table employee rename to emp;-- 删除表
drop table employee;

DML

Data Manipulation Language数据操作语言,对表中数据进行增、删、改操作

insert

在这里插入图片描述

-- DML 插入数据 -  insert
-- 1.为emp表的username,password,name,gender,phone字段插入数据
insert into emp(username,password,name,gender,phone) values('fangyuan','12345678','方源',1,'13888888888');-- 2.为emp表的所有字段插入数据
-- 方式一
insert into emp(id, username, password, name, gender, phone, job, salary, entry_date, image, create_time, update_time)
values (null,'zhangsan','12345678','张三',1,'13666666666',1,5000,'2019-01-01','',now(),now());-- 方式二
insert into emp values (null,'lisi','12345678','李四',1,'13777777777',2,5000,'2019-01-01','',now(),now());-- 3.批量为emp表的username,password,name,gender,phone字段插入数据
insert into emp(username,password,name,gender,phone)
values ('wangwu','12345678','王五',1,'13999999999'),('zhaoliu','12345678','赵六',1,'13111111111');

update

在这里插入图片描述

-- DML 修改数据 -  update
-- 1. 将emp表的ID为1的员工用户名更新为'guyuefangyuan',name字段更新为'古月方源'
update emp set username = 'guyuefangyuan',name = '古月方源' where id=1;-- 2.将emp表的所有员工入职日期更新为'2019-01-01'
update emp set entry_date = '2019-01-01';

delete

在这里插入图片描述

-- DML 删除数据 -  delete
-- 1. 删除emp表中ID为2的员工
delete from emp where id=2;-- 2. 删除emp表中所有员工
delete from emp;

DQL

Data Query Language数据查询语言
在这里插入图片描述

基本查询

在这里插入图片描述

-- -----------------------------------DQL:基本查询-----------------------------------
-- 1.查询指定字段name,entry_date 并返回
select name, entry_date from emp;-- 2.查询所有字段并返回
-- 方式一:推荐
select id, username, password, name, gender, phone, job, salary, entry_date, image, create_time, update_time from emp;
-- 方式二:不推荐
select * from emp;-- 3.查询所有员工的name,entry_date并起别名(姓名,入职日期)
select name as '姓 名', entry_date as 入职日期 from emp;select name '姓 名', entry_date 入职日期 from emp;-- 4.查询已有员工关联了哪几种职位(不重复)- distinct
select distinct job from emp;

条件查询

在这里插入图片描述
在这里插入图片描述

-- ---------------------------------DQL:条件查询-----------------------------------
-- 1.查询姓名为白凝冰的员工
select * from emp where name='白凝冰';-- 2.查询薪资小于等于3000的员工
select * from emp where salary<=50000;-- 3.查询没有分配职位的 员工
select * from emp where job is null;-- 4.查询有职位的 员工
select * from emp where job is not null;-- 5.查询密码不等于'123456'的员工信息
select * from emp where password != '123456';
select * from emp where password <> '123456';-- 6.查询入职日期在2020-01-01到2020-12-31之间的员工
select * from emp where entry_date between '2020-01-01' and '2020-12-31';
-- select * from emp where entry_date between '最小值' and '最大值';-- 7.查询入职日期在2020-01-01到2020-12-31之间且性别为女的员工
select * from emp where entry_date between '2020-01-01' and '2020-12-31' && gender=2;-- 8.查询职位是2,3,4的员工信息
select * from emp where job=2 || job=3|| job=4;
select * from emp where job in (2,3,4);-- 9.查询姓名为两个字的员工信息(_:单个字符;%:任意字符)
select * from emp where name like '__';-- 10.查询姓'凤'的员工信息
select * from emp where name like '凤%';-- 11.查询姓名中包含'古月'的员工信息
select * from emp where name like '%古月%';

分组查询

聚合函数

将一列数据作为一个整体,进行纵向运算
在这里插入图片描述

-- 聚合函数-- 注意:所有的聚合函数不参与null的统计-- 1.统计该企业员工数量 - count
-- count(字段)
select count(id) from emp;-- count(*):推荐
select count(*) from emp;-- count(常量):推荐
select count(0) from emp;-- 2.统计该企业员工的平均薪资
select avg(salary) from emp;-- 3.统计该企业员工的最低薪资
select min(salary) from emp;-- 4.统计该企业员工的最高薪资
select max(salary) from emp;-- 5.统计该企业每月给员工发放的薪资总额
select sum(salary) from emp;
分组查询

在这里插入图片描述

  • where和having的区别
    1、执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;having是分组之后对结果进行过滤
    2、判断条件不同:where不能对聚合函数进行判断,having可以

注意:分组之后,select后的字段列表不能随意书写,能写的一般是分组字段+聚合函数

-- 分组-- 注意:分组之后,select后的字段列表不能随意书写,能写的一般是分组字段+聚合函数
-- 1.根据性别分组,统计男性和女性员工的数量
select gender,count(*) from emp group by gender;-- 2.查询入职时间在2020-01-01(包含)之前的员工,按照职位分组,获取员工数量大于等于2的职位
select job,count(*) from emp where entry_date <= '2020-01-01' group by job having count(*)>=2;

排序查询

在这里插入图片描述

  • 排序方式:升序(asc),降序(desc);默认为升序asc,可以不写
    如果是多字段排序,当第一个字段值相同时,才会根据第二个字段排序
-- 1.根据入职时间,对员工进行升序排序 - asc
select * from emp order by entry_date asc;
select * from emp order by entry_date;-- 2.根据入职时间,对员工进行降序排序
select * from emp order by entry_date desc;-- 3.根据入职时间,对员工进行升序排序,如果时间相同,则按照更新时间进行降序排序
select * from emp order by entry_date,update_time desc ;

分页查询

在这里插入图片描述

  • 说明:
    1、起始索引从0开始
    2、分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是LIMIT
    3、若起始索引为0,起始索引可省略,直接简写为limit 10;
-- ----------------------------------DQL:分页查询-----------------------------------
-- 1.从起始索引0开始查询员工数据,每页展示5条记录
select * from emp limit 0,5;
select * from emp limit 5;-- 2.查询第一页员工数据,每页展示5条记录
select * from emp limit 0,5;-- 3.查询第二页员工数据, 每页展示5条记录
select * from emp limit 5,5;-- 4.查询第三页员工数据, 每页展示5条记录
select * from emp limit 10,5;-- 页码
-- 起始索引=(当前页码-1)*每页记录数
http://www.dtcms.com/a/541372.html

相关文章:

  • sherpa-onnx实现ASR(语音转文字)和 TTS(文字转语音)
  • 怎么进入国外网站一些有趣的网站
  • 树莓派 ADS1263 各种库程序
  • 基于NodeJs实现一个MCP客户端(会话模式和无会话模式)
  • 小迪安全v2023学习笔记(一百三十九讲)—— Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞
  • 《电子工程师基础篇:全面解析电容分类、核心MLCC与选型参数》
  • opencv学习笔记7:对mnist数据集分类
  • 房地产公司网站建设报价方案涂料网站模板
  • 深圳手机网站网站恶意点击
  • 网站优化搜索东莞企业网络推广运营技巧
  • 网站关键词怎么设置莲塘网站建设
  • 跨院区数据不通、停机风险高?浙人医靠电科金仓多活架构破信创难题
  • 免费网站建设优化做一个付费网站多少钱
  • Redis - hash list (常用命令/内部编码/应用场景)
  • 广水网站定制淘宝可以在哪些网站上面打做推广
  • elasticSearch之API:Ingest Pipeline Painless Script
  • elasticsearch安装分词器和操作
  • ubuntu系统安装elasticsearch
  • 网站seo分析常用的工具是华建河北住房和城乡建设厅网站
  • 做网站客户尾款老不给怎么办h5登录页面
  • 黑马JAVA+AI基础11-面向对象编程-常用API-String-ArrayList
  • 平东网站建设引流量的网站
  • 解决Docker容器中出现的错误“Pangolin X11: Failed to open X display”
  • Spring DAO与JDBC优化实战
  • asp access网站架设教程网站如何做即时聊天
  • R 语言科研绘图第 80 期 --- 词云图
  • 通信算法之336 :3GPPMixed Mode Turbo Decoder
  • 如何创建自己的网站店面设计装修网
  • 【软考】信息系统项目管理师
  • WEBSTORM前端 —— 第6章:JavaScript进阶 —— 第2节:构造函数数据常用函数