MySQL从0到1基础语法笔记(上)

  • 博客主页:誓则盟约
  • 系列专栏:Java Web
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍ 

       

目录

MySQL笔记:

一、注释:

二、SQL四大类:

三、数据类型:

数值类型:

字符串类型:

日期类型:

四、约束:

DDL:数据定义语言

一、常用DDL数据库操作语句:

二、常用DDL表结构操作语句:

查看表结构:

修改表结构:

删除表结构:

创建表结构:

DML:数据操作语言

一、常用DML关键字

添加数据: insert

更新数据:update

删除数据:delete

DQL:数据查询语言

一、DQL的基本查询语句

二、DQL的条件查询语句

三、DQL的分组查询语句 

-- 1.聚合函数count()

-- 2.求最小值   -- min()

-- 3. 求平均值  --avg()

-- 4. 求和 --sum()

四、DQL的分组查询语句

注:where 和 having 区别

五、DQL的排序查询语句

六、DQL的分页查询语句

未完待续...

“若以色见我,以音声求我,是人行邪道,不能见如来。”——《金刚经》


MySQL笔记:

一、注释:

  • 单行注释:  -- 注释 或者 # 注释
  • 多行注释:/* 注释 */
  • SQL语句中的关键字不区分大小写。
  • SQL语句可以单行/多行书写,以分号结束。

二、SQL四大类:

        需求+原型 -> 设计(概要设计,详细设计,接口设计,数据库设计)-> 数据库 -> 数据库操作  -> 数据库优化


三、数据类型:

数值类型:

tinyint: 1个字节,小整数值 0-255

smallint:大整数值  0-65535

int:4个字节 大整数值

bigint:8个字节,极大整数值,0-2**64-1

float:4字节,单精度浮点数值,float(5,2):5表示整个数字长度,2表示小数位个数

double:8字节,双进度浮点数值,double(5,2)

字符串类型:

  char:0-255字节,定长字符串

  varchar:0-65535字节,变长字符串

  定长和变长区别:

    char(10): 最多只能存储10个字符,不足10个字符,占用10个字符空间,超过就报错。  性能高,浪费空间。

    varchar(10): 最多只能存储10个字符,按照实际长度存储,超过报错。 性能低,节省空间。

日期类型:

  date:3字节,YYYY-MM-DD,日期值,不显示时间。

  time:3字节,HH:MM:SS,时间值或持续时间。

  datetime:8字节,YYYY-MM-DD HH:MM:SS,混合日期和时间值。

四、约束:

 约束:作用于表中字段上的规则,用于限制存储在表中的数据。

 非空约束:限制该字段值不能为null  ,  not null

 唯一约束:保证字段的所有数据都是唯一、不重复的  , unique

 主键约束:主键是一行数据的唯一标识,要求非空并且唯一 , primary key

 默认约束:保存数据时,如果未指定该字段值,则采用默认值 , default

外键约束: 让两张表的数据建立连接,保证数据的一致性和完整性 , foreign key

 auto_increment:自动增长  从1开始

 常用约束类型:非空、唯一、主键、默认、外键。


DDL:数据定义语言

一、常用DDL数据库操作语句:

show databases; 显示所有数据库

show tables; 显示该数据库内的所有表

create database [name]; 创建一个名为name的数据库

create database if not exists db01; 创建一个名字为 db01 的数据库(前提是该数据库创建前不存在)

use [name]; 切换为名字为 name 的数据库

select database(); 查询当前正在使用的数据库。

drop database [name]; 删除某个数据库

drop database if exists db01; 如果db01存在再删除,不存在不执行操作。不会报错。

二、常用DDL表结构操作语句:

查看表结构:

 查看当前数据库下的表: show tables;

 查看指定表结构: desc tb_emp;

 查看数据库的建表语句: show create table tb_emp;

修改表结构:

 1.为表 tb_emp 添加字段 qq varchar(11)

 alter table tb_emp add qq varchar(11) comment 'QQ';

 2.修改 tb_emp 字段类型 qq varchar(13)

 alter table tb_emp modify qq varchar(13) comment 'QQ';

 3.修改 tb_emp 字段名 qq 为 qq_num varchar(13)

 alter table tb_emp change qq qq_num varchar(13) comment 'QQ';

 4.删除 tb_emp 的 qq_num 字段

 alter table tb_emp drop column qq_num;

 5.将 tb_emp 表名修改为 emp

 rename table tb_emp to emp;

删除表结构:

删除 tb_emp 表:

 drop table if exists tb_emp;

创建表结构:

create table 表名(

       字段1 字段类型  [约束] [comment 字段1注释],

       ........

       字段2 字段类型  [约束] [comment 字段2注释]

)[comment 表注释];

注:上述所有的 database 都可以被等价替换成 schema


DML:数据操作语言

一、常用DML关键字

添加数据: insert

 语法: insert into 表名(字段列表) values(字段值列表);

例1:

1. 为 tb_emp 表的 username,name,gender 字段插入值

  insert into tb_emp(username,name,gender,create_time,update_time) values ('wuji','张无极',1,now(),now());

例2:

2. 为 tb_emp 表的所有字段插入值

insert into tb_emp(id, username, password, name, gender, image, job, entry_date, create_time, update_time)  values (null,'zhiruo','123','周芷若',2,'1.jpg',1,'2010-01-01',now(),now());

insert into tb_emp values  (null,'zhiruo2','123','周芷若',2,'1.jpg',1,'2010-01-01',now(),now());

例3:

3. 批量为 tb_emp 表的 username,name,gender 字段插入数据

insert into tb_emp(username,name,gender,create_time,update_time) values

                                                                     ('wang','王',1,now(),now()),

                                                                     ('li','李',1,now(),now());     -- 以逗号分隔:


更新数据:update

语法:update 表名 set 字段1 = 值1,字段2 = 值2,......[where 条件];

例1:

1. 将 tb_emp 表的ID为1的员工 姓名name字段更新为 '张三'

update tb_emp set  name = '张三',update_time=now() where id=1;

例2:

2. 将 tb_emp 表的所有员工的入职日期更新为  '2010-01-01'

update tb_emp set entry_date='2010-01-01',update_time=now();   不需要 where限制条件了

删除数据:delete

语法: delete from 表名 [where 条件];

例1:

1.删除 tb_emp 表中 ID为1的员工

语句:delete from tb_emp where id=1;

例2:

2.删除整张表的数据

delete from tb_emp;


DQL:数据查询语言

一、DQL的基本查询语句

-- 1. 查询指定字段 name,entrydate 并返回

-- 查询多个字段:select 字段1,字段2,字段3 from 表名;

语法:select name,entrydate from tb_emp;

-- 2.查询所有字段(通配符):select * from 表名;

-- 查询所有字段: select * from 表名:

语法:select * from tb_emp;  -- 不推荐 不直观,性能低  更推荐全部写出来的那种

-- 3. 查询所有员工的 name,entrydate,并起别名(姓名,入职日期)

-- 设置别名:select 字段1 [as 别名1],字段2 [as 别名2] from 表名;

select tb_emp.name as 姓名 , tb_emp.entrydate as 入职日期 from tb_emp; 

-- 注:如果别名里面有空格,可以加上引号 当做一个整体  这里的as 可以省略

-- 4. 查询已有的员工关联了哪几种职位(不要重复) distinct 关键字

-- 去除重复记录: select distinct 字段列表 from 表名;

select distinct job from tb_emp;

二、DQL的条件查询语句

-- 1. 查询 姓名 为 杨逍 的员工

select * from tb_emp where name = '杨逍';

-- 2. 查询 id小于等于5 的员工信息

select * from tb_emp where id<=5;

-- 3. 查询 没有分配职位的员工信息

select  * from tb_emp where job is null;  -- 查询字段为空的信息不要用 ==null  而是用 is null

-- 4. 查询有职位的员工信息

select  * from tb_emp where job is not null;

-- 5. 查询 密码不等于 ’123456‘ 的员工信息

select  * from tb_emp where password != '123456'; -- 不等于: != 和 <> 都可以

-- 6. 查询 入职日期 在 ’2000-01-01‘ 到 ’2010-01-01‘ 之间的员工信息

select * from tb_emp where entrydate between '200001-01' and '2010-01-01'; -- 左闭右闭

-- 7. 查询 入职时间 在 ’2000-01-01‘ 到 ’2010-01-01‘ 之间 并且 性别为 女 的员工信息

select * from tb_emp where entrydate between '200001-01' and '2010-01-01' and gender=2;

-- and 可以替换为 &&

-- 8. 查询 职位是2,3,4 的员工信息

select * from tb_emp where  job =2 or job =3 or job =4;

select  * from tb_emp where  job in (2,3,4);  -- in 多选一

-- 9. 查询姓名是两个字的员工信息

select * from tb_emp where name like '__';  -- like 模糊匹配 _ 匹配单个字符,%匹配任意个字符  名字是两个字就是两个_

-- 10. 查询姓张的员工

select * from tb_emp where name like '张%';

三、DQL的分组查询语句 

-- 1.聚合函数count()

-- 1.统计该企业员工数量 -- count

-- A. count(字段)

select count(id) from tb_emp;

select count(tb_emp.username) from tb_emp;

select count(job) from tb_emp; -- 对于null 不做统计

-- B. count(*)

select count(*) from  tb_emp;

-- 2.求最小值   -- min()

-- 统计该企业最早入职的员工:

select min(tb_emp.entrydate) from tb_emp;

select max(tb_emp.entrydate) from tb_emp;

-- 3. 求平均值  --avg()

select avg(id) from tb_emp;

-- 4. 求和 --sum()

select sum(id) from  tb_emp;

四、DQL的分组查询语句

分组查询语法:

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

-- 1.根据性别分组,统计男性和女性员工的数量 -count(*)

select tb_emp.gender,count(*) from tb_emp group by gender;

-- 2. 先查询入职时间在 '2015-01-01'(包含)以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位

select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*)>=2; 

-- 分组之后的过滤 不要写在where后面 要在最后加上having关键字

注:where 和 having 区别

   1. 执行时机不同:where是分组之前进行过滤,不满足where条件的不参与分组;而having是分组之后对结果进行过滤;

   2. 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意事项:

  •         分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
  •         执行顺序:where > 聚合函数 > having

五、DQL的排序查询语句

排序查询语法:

  select 字段列表 from 表名 [where 条件] [ group by ] order by 字段1 排序方式1,字段2 排序方式2...;

-- 排序方式:ASC:升序(默认值) DESC:降序

-- 1. 根据入职时间,对员工进行升序排序 -asc

select * from tb_emp order by entrydate asc; -- asc可省略

select * from tb_emp order by entrydate desc;

-- 2. 根据 入职时间 对员工进行 升序排序 入职时间相同的按照 更新时间 进行降序排序

select * from tb_emp order by entrydate , update_time desc ;

六、DQL的分页查询语句

-- 分页查询语法:

select 字段列表 from 表名 limit 起始索引,查询记录数;

-- 1. 从 起始索引 为0开始查询员工数据,每页展示5条记录

select * from tb_emp limit 0,5;

-- 2. 查询第一页的5条数据

select * from tb_emp limit 0,5;

-- 3. 查询第二页的5条数据

select * from tb_emp limit 5,5; -- 索引从0开始


-- 流程控制函数 if(条件表达式,true取值,false取值)

-- 流程控制函数 case 表达式语法:

when 值1 then 结果1 when 值2 then 结果2 ... else ... end


未完待续...

“若以色见我,以音声求我,是人行邪道,不能见如来。”——《金刚经》

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

什么是安全漏洞?最全的漏洞分类!

01 — “ 什么是漏洞**”** 漏洞是指一个系统存在的弱点或缺陷&#xff0c;系统对特定威胁攻击或危险事件的敏感性&#xff0c;或进行攻击的威胁作用的可能性。漏洞可能来自应用软件或操作系统设计时的缺陷或编码时产生的错误&#xff0c;也可能来自业务在交互处理过程中的设…

丝杆支撑座预压标准解析

丝杆支撑座预压的主要目的是提高轴的旋转精度、刚性和运行性能&#xff0c;同时防止轴在运转过程中产生震动和异响&#xff0c;从而提高系统的整体精度和稳定性。那么&#xff0c;丝杆支撑座的预压标准是什么呢&#xff1f; 丝杆支撑座的预压可以分为标准型轻预压和标准型重预压…

自动生成实体类,mapper类,mapper.xml文件

使用mybatis generator&#xff08;无需安装&#xff0c;对于外网有限制的真的很友好&#xff09; 1. 在pom文件中配置mysql相关依赖&#xff0c;并添加plugin <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId…

GIS专业的就业前景

地理信息系统&#xff08;GIS&#xff09;作为一门跨学科的领域&#xff0c;随着技术的发展和应用领域的拓宽&#xff0c;其就业前景日益广阔。GIS专业毕业生可以在多个行业中找到合适的职位&#xff0c;并且随着经验的积累&#xff0c;薪资和职业发展空间都相当可观。 1. 就业…

H7-TOOL的1拖4脱机烧录SPI Flash芯片XM25QU64在1.8V供电时满速下载的稳定性测试

XM25QU64规格&#xff1a; XM25QU64C实测1.8V&#xff08;脱机烧录上位机这里和微型数控电源界面都设置TVCC为1.8V&#xff09; &#xff0c;1拖4转接板方式&#xff0c;直接将芯片放入转接板&#xff0c;稳定好用&#xff1a; 时钟电平1.8V实际效果&#xff1a;

centos7安装node18及升级glbic

centos7安装node18及升级glbic CentOS7安装nodejs18及以上版本会报错&#xff0c;glibc版本过低 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash source ~/.nvm/nvm.shnvm install 18 nvm use 18#设置默认版本 nvm alias defau…

hznu.dodo C++ 实验A 文件

1.【描述】 输入10个整数存入文本文件example.txt中&#xff0c;文件每行存放5个整数&#xff0c;每行整数之间用一个空格间隔。行末不能有多余的空格。 【输入】 输入10个整数。 【输出】 生成文件example.txt&#xff0c;里面存放输入的10个整数。 不需要在屏幕上显示整数。 …

CISP vs CISSP | 不知道选哪个?这篇告诉你答案

CISP与CISSP有什么区别&#xff1f;我到底考哪个呢&#xff1f;哪个难一点&#xff1f;哪个含金量高&#xff1f; 这些问题一篇为你全部解答&#xff01; 01 概念和发证机构的差异 CISP&#xff0c;“Certified Information Security Professional”&#xff0c;即注册信息安…

postman自动化实战总结

Postman实战总结 简介 本次实战内容主要包括如下几点&#xff1a; l 背景介绍 l Postman使用&#xff0c;侧重于自动化实现&#xff0c;基础使用不做介绍 l 可视化Newman介绍 l 框架特色 l 实战中的坑 背景 随着国内软件技术的高速发展&#xff0c;越来越多的手工测试…

【JavaScript】JS核心语法及函数

文章目录 一、初识 JS二、JS 核心语法2-1 变量2-2 数据类型typeofString 对象 2-3 数组创建数组常用属性方法 2-4 运算符号加号运算符 减号运算符 -比较运算符逻辑运算符 2-5 控制语句for-inbreakcontinue 三、函数3-1 常用系统函数3-2 自定义函数函数声明函数调用 3-3 创建对象…

Spring WebFlux 响应式概述(1)

1、响应式编程概述 1.1、响应式编程介绍 1.1.1、为什么需要响应式 传统的命令式编程在面对当前的需求时的一些限制。在应用负载较高时&#xff0c;要求应用需要有更高的可用性&#xff0c;并提供低的延迟时间。 1、Thread per Request 模型 比如使用Servlet开发的单体应用&a…

MatrixVT: Efficient Multi-Camera to BEV Transformation for 3D Perception

本文提出了一种高效的多摄像头到鸟瞰图 (BEV) 视图转换方法&#xff0c;用于 3D 感知&#xff0c;称为 MatrixVT。现有的视图转换器要么转换效率低下&#xff0c;要么依赖于特定于设备的操作符&#xff0c;阻碍了 BEV 模型的广泛应用。相比之下&#xff0c;我们的方法仅使用卷积…

达梦8-主备集群故障之故障备库剔除与重新加入

实验环境 操作系统版本 银河麒麟Linux kylin10 4.19.90-24.4.v2101.ky10.x86_64 数据库版本 DM Database Server 64 V8 ##主库信息 内网IP-[MAL_HOST 192.168.50.100]外网IP-[MAL_INST_HOST 192.168.101.11] 主库实例名-[DM01] OGUID45335 ##备库信息 内网IP-[MAL_HOST …

这些都伦敦银结算时间 第二个尤其值得关注

伦敦银结算时间是什么时候呢&#xff1f;伦敦银虽说号称是24小时交易的品种&#xff0c;实际上每个平台都会在一个交易日中选定一定的时间停盘进行结算&#xff0c;在这些时间投资者没法交易&#xff0c;市场也不会波动。那么&#xff0c;伦敦银结算时间是什么时候&#xff1f;…

京东云主机和云服务器有啥区别?轻量云主机就是轻量应用服务器吗?

京东云主机和云服务器有啥区别&#xff1f;轻量云主机就是轻量应用服务器吗&#xff1f;云主机就是云服务器的意思&#xff0c;是京东云给自家云服务器取的名字&#xff0c;阿里云叫云服务器ECS&#xff0c;腾讯云叫云服务器CVM&#xff0c;京东云服务器叫云主机&#xff0c;京…

人数识别 人员超员识别系统 作业区域超员预警系统 ai#YOLO视觉

在当今复杂的生产作业与社会管理场景中&#xff0c;人员管理的精准性和高效性变得愈发重要。人数识别、人员超员识别系统、作业区域超员预警系统以及特殊岗位人员达标监测等&#xff0c;都是保障安全生产、提高运营效率和维护社会秩序的关键要素。随着人工智能(AI)技术的飞速发…

客户案例 | Airbus Helicopters借助仿真技术实现节能安全的驾驶舱设计

大家都知道&#xff0c;太阳眩光、驶近的车辆照射的灯光或雨水的反射会分散注意力。对于驾驶员来说光学失真更具挑战性&#xff0c;因为这关乎驾驶安全。除了外部照明条件外&#xff0c;驾驶员通常还会面临‌内部照明‌挑战&#xff0c;比如车辆指示灯面板上的重要信息无法清晰…

Ambari 你想知道的都在这里

&#x1f468;‍&#x1f4bb; 关于我 大家好&#xff0c;我叫小饕。一位末流系统架构师&#xff0c;深耕大数据技术多年&#xff0c;对前端、后端、中间件和运维有着丰富的经验和深刻的理解。在过去的几年里&#xff0c;我主要专注于Ambari的研究和探索&#xff0c;通过不断的…

证件照片一键生成软件有哪些?这里看5个

想要一张完美的证件照&#xff0c;却不想花大价钱去照相馆&#xff1f; 别担心&#xff0c;现在有多种免费应用可以帮助你在家轻松制作证件照片。 从调整尺寸到修改背景&#xff0c;这些应用功能齐全&#xff0c;让你的证件照看起来既专业又符合要求。 下面就来看看这5个不花…

C#将部分Controls数据导入对象并存入ini中

目录 1.遍历控件和属性得到控件的值 2.利用FieldInfo的getSet函数设置类对象数据 3.Ini简易类库编写 4.存入对象转换为json存入ini 5.效果展示 在日常的Winform设计工作中&#xff0c;将控件中的数据导出到对应属性或者字段中&#xff0c;再进行保存是经常会用到的技巧&#x…