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

2407-mysql笔记

数据库(Database),简称db
mariadb=mysql

常见的数据库:mysql、oracle、高斯(Gauss)、redis、sqlserver、SQLite、HBase

一、SQL(Structured Query Language):结构化查询语言

1、作用:用于访问和处理数据库的标准计算机语言

2、语法特点:

(1)SQL对关键字的大小不敏感(针对windows)

(2)SQL语句可以单行或者多行书写,每行以分号结束

(3)SQL注释

3、mysql基本操作-ddl

(1)对数据库的基本操作

功能SQL
show databases;查看所有的数据库
create database [if not exists] mydb1 [charset=utf8];创建数据库
use mydb1;切换库
select database();显示当前所在库
drop database [if exists] mydb1;删除数据库

(2)对数据库的常用操作-创建表

创建表格式:

create table [if not exists] 表名 (字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
) [表的一些设置];
create table emp(eid int(1) comment '员工编号',ename varchar(1) comment '员工姓名'
);insert into emp values 
(-2147483648,'A'),
(21333,'B');select * from emp;

注:
(1)常见的数据类型有:
①数值类型

类型大小用途
tinyint1byte小整数值
int或integer4byte大整数值
double8byte浮点数值

tinyint范围:[0,255]
int范围:[-2147483648,2147383647]

②日期和时间类型

类型格式用途
dateYYYY-MM-DD日期值
datetimestampYYYY-MM-DD HH:MM:SS混合日期和时间值
timestampYYYYMMDDHHMMSS混合日期和时间值,时间戳

③字符串类型’
char-定长
varchar-变长
如果是字符串类型,会有宽度的限制,宽度填多少就代表字符串有多长

如果是数值类型,比如INT(1),1不代表数据的长度,如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然显示出来

(3)对表结构的常用操作

sql功能
show tables查看当前库有哪些表
show create table emp;查看指定某个表的创建语句
desc 表名;查看表结构
drop table 表名;删除表
show tables;show create table emp;desc emp;drop table emp;

4、mysql数据库基本操作-dml

DML是指数据操作语言,Data Mainpulation Language,用于对数据库表中记录进行更新、删除、插入等操作
关键字:
insert-插入
delete-删除
update-更新

(1)数据插入

语法格式:
#向表中指定某些列插入数据
insert into 表名 (列名1,列名2,列名3...)
values (1,2,3...);#向表中所有列插入数据
insert into 表名 values (1,2,3...);
#向student表中sid name gender age birth 字段添加数据
insert into student
(sid,name,gender,age,birth)
values
(1001,'张三','男',20,'1994-12-01');#向student表中所有字段添加数据
insert into student
values 
(1002,'赵敏','女',18,'1995-12-03','上海');#向student表中所有字段添加多行数据
insert into student
VALUES
(1003,'张三丰11','男',88,'1918-08-13','北京'),
(1004,'张三丰111','男',36,'1983-7-11','北京');

注:以上两种格式均可,SQL语句以分号结尾,可以在一条insert语句中同时插入多个列表值,values只需要写一次,括号之间用逗号隔开

(2)数据修改

语法格式:
update 表名 set 字段名 =,字段名 =...;update 表名 set 字段名 =,字段名 =... where 条件;
#将所有学生的地址修改为重庆
update student set address = '重庆';#将sid为1004的学生地址修改为北京
update student set address = '北京' where sid = 1004;#将sid为1004的学生地址修改为beijing并且性别修改为男
update student 
set address = 'beijing',gender = '男'
where sid = 1004;

(3)数据删除

语法格式:
delete from 表名 [where 条件];truncate table 表名
或者
truncate 表名
#删除sid为1004的学生数据
delete from student where sid = 1004;#删除表所有数据
delete from student;#再添加两条数据
insert into student
values 
(1003,'张三丰11','男',88,'1918-08-13','北京'),
(1004,'张无忌1','男',36,'1983-07-11','北京');#清空表数据
truncate student;

注:delete和truncate原理不同,delete只删除内容,而truncate类似drop table再create table,可以理解将整个表删除,然后再创建该表

5、mysql约束

何为约束,constraint,约束实际上就是表中数据的限制条件
作用:为了保证表中记录的完整性和有效性,比如用户表的手机号不能为空,身份证号不能重复

分类:
(1)主键约束(primary key) PK
(2)自增长约束(auto_increment)
(3)非空约束(not null)
(4)唯一性约束(unique)
(5)默认约束(default)
(6)零填充约束(zerofill)
(7)外键约束(foregin key)FK

(1)主键约束

可以加到某个列上,也可以加到多个列上

①概念:

a.主键约束相当于唯一约束和非空约束的组合,即主键约束的列不允许重复,也不允许出现空值
b.每个表最多允许一个主键

②添加单列主键

a.在定义字段的同时指定主键

语法格式:
create table 表名(...<字段名> <数据类型> primary key,...
)
INSERT INTO emp1
(name,dept_id,salary)
VALUES
('张三',8801,3600);
#Field 'eid' doesn't have a default value
#设置了主键,该字段必须要给值insert into emp1 
values 
(60051,'张三丰',5003,5000)

b.在定义完字段之后指定主键

语法格式:
create table 表名(...[constraint <约束名>] primary key(字段名)
);
create table emp2(eid int comment '编号',name varchar(20) comment '姓名',dept_id int comment '部门编号',salary double comment '工资',constraint pk1 primary key(eid)
);#主键测试emp2
#主键=唯一+非空组合
insert into emp2 VALUES
(1001,'张安',10,6000);insert into emp2 values
(1002,'杰森',40,6000);insert into emp2 values 
(NULL,'杰森',40,6000);insert into emp2 (name,dept_id,salary) values
('杰森',40,6000);
③添加联合主键(多列主键)
语法格式:
create table 表名 (...primary key (字段1,字段2,....字段n)
)
create table emp3 (name varchar(20) comment '姓名',dept_id int comment '部门编号',salary double comment '薪资',constraint ndpk primary key (name,dept_id)
)insert into emp3 VALUES
('111',10,5000),
('112',10,6000);insert into emp3 values
('113',10,7000),
('111',20,8000);insert into emp3 VALUES
('114',10,9000),
('113',20,10000);

注:多个键作为主键时里面列的值不能完全相同,允许其中几个相同,也不允许出现空值

(2)自增长约束

概念:当字段设置为自增长约束后,在插入数据时,不需要用户输入数据,而由数据库系统根据定义自动赋值,每增加一条记录,该字段会以相同的步长进行增长,一般是跟主键一块搭配使用

语法格式:
create table 表名 (...字段名 数据类型 auto_increment...
)
#创建madb1数据库
create database if not exists madb1 charset = utf8;create table t_user1(id int primary key auto_increment,name varchar(20)
);insert into t_user1 VALUES
(NULL,'张三');insert into t_user1 (name) VALUES ('李四');
①特点

a.auto_increment的初始值是1,每新增一条记录,字段值自动嘉1
b.一个表中只能有一个字段使用auto_increment
c.auto_increment约束的字段必须具备NOT NULL 属性
d.支持的类型(TINYINT、SMALLINT、INT、BIGINT)等
e.如果最大值达到上限,auto_increment就会失效

②指定自增字段的初始值
方式1:创建表时指定
语法格式:
creat table 表名(... primary key auto_increment,...
) auto_increment = 10;
#指定自增字段的初始值-方式1
create table t_user2 (id int primary key auto_increment,name varchar(20)
) auto_increment = 100;insert into t_user2 values
(NULL,'aaa'),
(NULL,'bbb');

③delete和truncate区别

delete数据之后自动增长从断点开始
truncate数据之后自动增长是从默认起始值开始

(3)非空约束

①添加非空约束
语法格式:
create table 表名 (字段名 数据类型 not null,...
);
create table t_user6 (id int,name varchar(20) not null,address varchar(20) not null
);insert into t_user6 (id) values (1001); #不可以
insert into t_user6 (id,name,address) values (1001,NULL,NULL); #不可以
insert into t_user6 (id,name,address) values (1001,'NULL','NULL'); #可以
insert into t_user6 (id,name,address) values (1001,'',''); #可以

注:单纯的NULL才表示空值,加上引号会变成字符串

(4)唯一性约束

唯一约束(unique key)是指所有记录中的字段值不能重复,但是唯一约束的列可以为NULL

①添加唯一约束
语法格式:
create table 表名(字段名 字段类型 unique,...
)
create table t_user8 (id int,name varchar(20),phone_number varchar(20) unique
);#测试唯一性约束
insert into t_user8 values
(10,'aaa','13111112222');insert into t_user8 VALUES
(11,'aab','13111112222');insert into t_user8 values
(12,'aac',NULL);insert into t_user8 VALUES
(13,'aad',NULL);insert into t_user8 (id,name) VALUES
(14,'aba');#NULL和任何值都不相同,NULL!=NULL

(5)默认约束

默认值约束用来指定某列的默认值

①添加默认约束
语法格式:
create table 表名(字段名 字段类型 default 默认值,....
)
create table t_user10 (id int,name varchar(20),address varchar(20) default '北京'
);insert into t_user10 (id,name)
values (10,'aac'),(11,'ace');

(6)零填充约束

zerofill:
①插入数据时,当该字段的值长度小于定义的长度时,会在该值的前面补上相应的0
②zerofill默认为int(10)

①添加零填充约束
语法格式:
create table 表名 (字段名 类型 zerofill,...
)
create table t_user11 (id INT zerofill,name varchar(20)
);insert into t_user11 VALUES
(31,'aac'),(32,'ddd');

6、MySQL基本操作-DQL

DQL:Data Query Language,数据查询语言

语法格式:select [all|distinct]<目标列的表达式1> 别名1,<目标列的表达式2> 别名2...
from <表名> 别名,表名 别名
[where 条件表达式]
[group by 列名]
[having 条件表达式]	
[order by 列名 [asc|desc]]
[limit 数字1,数字2]

简化版语法

select *|列名 from 表名 where 条件;
create database if not exists mydb2;
(1)运算符
①算术运算符
运算符说明
+加法
-减法
*乘法
DIV或/除法
%或MOD取模,求余数
select 5+2;select 5-2;select 5*2;select 5/2;
select 5 DIV 2;select 2%5;
select 2 MOD 5;#将每件商品的价格加10元
select pname,price,price+10 from product;#将每件商品的价格上调10%
select pname,price,price*1.1 from product;
select pname,price,price+price*0.1 from product;

注:乘法可能有运算结果不精确问题

②比较运算符
运算符说明
=等于
<和<=小于和小于等于
>和>=大于和大于等于
<=>安全的等于
!=或<>不等于
IS NULL判断一个值是否为NULL
IS NOT NULL判断一个值是否不为NULL
LEAST当有两个参数或者多个参数时,返回最小值
GREATEST当有两个参数或者多个参数时,返回最大值
BETWEEN AND判断一个值是否介于两个值之间
IN判断一个值是否在IN列表中
NOT IN判断一个值是否不是在IN列表中
LIKE模糊查询,通配符匹配
#使用least求最小值
select least(10,20); #10
select least(10,30,20); #10
select least(10,null,30); #null#使用greatest求最大值
select greatest(10,20,30); #30
select greatest(10,null,30); #null#1、查询商品名称为'海尔洗衣机'的商品的所有信息
#*代表全部字段
select * from product where pname = '海尔洗衣机';#2、查询商品价格为800的商品
select * from product where price = 800;#3、查询价格不是800的所有商品
select * from product where price != 800;
select * from product where price <> 800;
select * from product where price not in (800);
select * from product where not (price = 800);#4、查询商品价格大于等于60元的所有商品信息
select * from product where price >= 60; 
select * from product where not (price < 60); #5、查询商品价格在200到1000之间(包含200和1000)的所有商品
select * from product where price >= 200 and price <= 1000;
select * from product where price between 200 and 1000;#6、查询商品价格时200或800的所有商品
#or或||
select * from product where price = 200 or price = 800;
select * from product where price = 200 || price = 800;
select * from product where price in (200,800);

相关文章:

2407-mysql笔记

数据库(Database)&#xff0c;简称db mariadbmysql 常见的数据库&#xff1a;mysql、oracle、高斯&#xff08;Gauss&#xff09;、redis、sqlserver、SQLite、HBase 一、SQL&#xff08;Structured Query Language&#xff09;&#xff1a;结构化查询语言 1、作用&#xff…...

如何解决隐藏游戏服务器的源IP问题

在网络游戏领域&#xff0c;保护服务器的源IP地址不被轻易发现是一项重要的安全措施。游戏服务器的源IP一旦暴露&#xff0c;可能会遭受DDoS攻击、扫描和各种形式的安全威胁。然而&#xff0c;对于合法的游戏运营商而言&#xff0c;有时需要对服务器进行维护或调试&#xff0c;…...

云计算数据中心(一)

目录 一、云数据中心的特征二、云数据中心网络部署&#xff08;一&#xff09;改进型树结构&#xff08;二&#xff09;递归层次结构&#xff08;三&#xff09;光交换网络&#xff08;四&#xff09;无线数据中心网络&#xff08;五&#xff09;软件定义网络 一、云数据中心的…...

libwebrtc.a+exosip连接fS 环境部署tips

//运行FS服务器 sudo ./freeswitch -nc -nonat //公网sudo ./freeswitch //运行客户端 sudo ./fs_cli //加载模块 load mod_av load mod_verto0.Invite交互过程 1.fs码率设置 2.用户密码改动 3.数字签名的摘要 4.FS收不到ACK 5.公网部署 6.查看frewswitch都占用哪些端口 7.日志…...

第二证券:市场估值依然处于较低区域 适合中长期布局

A股中报成绩预告显示相比2024Q1&#xff0c;2024Q2企业产品销量或订单已有回暖&#xff0c;但价格反转暂未大面积到来&#xff0c;“量增价平、部分板块以价换量”是2024H1 A股成绩预告较显着的量价特征&#xff0c;这与微观库存周期有待回暖相匹配。此外中游部分环节出现不同程…...

开始Linux之路

人生得一知己足矣&#xff0c;斯世当以同怀视之。——鲁迅 Linux操作系统简单操作指令 1、ls指令2、pwd命令3、cd指令4、mkdir指令(重要)5、whoami命令6、创建一个普通用户7、重新认识指令8、which指令9、alias命令10、touch指令11、rmdir指令 及 rm指令(重要)12、man指令(重要…...

leetcode-三数之和

视频&#xff1a;https://www.bilibili.com/video/BV1bP411c7oJ/?spm_id_from333.788&vd_sourcedd84879fcf1be72f360461b01ecab0d6 从两数之和开始&#xff0c;排序后的两数之和&#xff0c;利用好升序的性质&#xff0c;可以将时间复杂度从on2降到on; class Solution …...

opencv—常用函数学习_“干货“_总

同样内容将拆解为一份份,发在我个人博客中 如http://t.csdnimg.cn/icOfX(非VIP文章),整理不易、感谢你的点赞收藏 目录 一、图像文件 1. imread:读取图像文件 2. imwrite:写入图像文件 3. imshow:显示图像 4. VideoCapture:捕获视频 二、创建Mat 1、创建Mat对…...

Spring Boot项目的控制器貌似只能get不能post问题

我这2天新建了一个Spring Boot项目测试&#xff0c;在控制器上写了两个接口&#xff0c;一个是支持Get方式访问&#xff0c;另一个支持Post方式访问&#xff0c;发现Get可以&#xff0c;而Post不行。前端Post后&#xff0c;报403&#xff0c;找不到这个方法。 一、原因 原因是…...

最新版智能修图-中文luminar ai 1.55(13797) 和 neo1.20,支持m芯片和intel芯片(绝对可用)

一。Luminar AI for macOS 完整版本 这个程序是第一个完全由人工智能驱动的图像编辑器。有了它&#xff0c;创建引人注目的照片是有趣的&#xff0c;令人惊讶的容易。它是一个独立的照片编辑器和macOS插件。 1.1 Luminar AI for macOS 轻轻地塑造和完善一个肖像打造富有表现…...

Open3D 最小二乘法拟合点云平面

目录 一、概述 1.1最小二乘法原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2matplotlib可视化 3.3平面拟合方程 前期试读&#xff0c;后续会将博客加入该专栏&#xff0c;欢迎订阅 Open3D点云算法与点云深度学习…...

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录

文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下&#xff1a; 三、通过第三…...

关于HBase、Phoenix、Flume、Maxwell 和 Flink

组件协同&#xff1a; HBase HBase 是一个分布式的、列存储的NoSQL数据库&#xff0c;它基于Google的Bigtable设计&#xff0c;特别适合存储海量的、稀疏的、非结构化或半结构化数据。HBase 提供了低延迟的随机读写能力&#xff0c;但其原生接口和数据模型较为复杂&#xff0…...

centos7停止维护,可替代的操作系统

CentOS 7 将在 2024 年 6 月 30 日停止维护。如果你目前正在使用 CentOS 7&#xff0c;可以考虑以下几种替代的操作系统&#xff1a; 1. CentOS Stream CentOS Stream 是 CentOS 项目的一个新版本&#xff0c;它提供了一个滚动发布的 Linux 发行版。CentOS Stream 位于 Fedor…...

andon系统在电力设备工管理中起到那些作用与价值

安灯系统&#xff0c;作为精益制造执行中的一个核心工具&#xff0c;在电力设备工厂车间管理中发挥着不可替代的作用&#xff0c;它能够实现生产透明管理&#xff0c;为工厂高效运作提供强大的支撑。本文将从安灯系统的功能、应用场景和价值三个方面&#xff0c;深入探讨其在电…...

消息队列-RabbitMQ

消息队列-RabbitMQ 1、RabbitMQ是什么?2、RabbitMQ的业务场景有哪些?3、RabbitMQ中有哪基本概念?4、RabbitMQ有哪些工作模式?5、如何保证RabbitMQ消息顺序性?6、RabbitMQ消息如何分发?7、RabbitMQ消息怎么路由?8、为什么会产生重复消费?如何保证消息不被重复消费(如何…...

Elasticsearch(ES)集群监控

Elasticsearch(ES)集群监控 在Elasticsearch中&#xff0c;监控集群的健康状况、性能和运行指标是至关重要的。以下是一些常用的Elasticsearch监控工具和API的例子&#xff1a; 使用Elasticsearch自带的API来获取集群健康状态、节点信息和统计信息。 # 获取集群健康状况 curl…...

图像处理:使用 OpenCV-Python 卡通化你的图像(2)

一、说明 在图像处理领域&#xff0c;将图像卡通化是一种新趋势。人们使用不同的应用程序将他们的图像转换为卡通图像。如今&#xff0c;玩弄图像是许多人的爱好。人们通常会点击图片并添加滤镜或使用不同的东西自定义图像并将其发布到社交媒体上。但我们是程序员&#xff0c;…...

淘宝扭蛋机小程序:旋转惊喜,开启购物新篇章!

在追求创新与惊喜的购物时代&#xff0c;淘宝再次引领潮流&#xff0c;精心打造——淘宝扭蛋机小程序&#xff0c;为您的购物之旅增添一抹不同寻常的色彩。这不仅仅是一个购物工具&#xff0c;更是一个充满趣味、互动与惊喜的宝藏盒子&#xff0c;等待您来探索与发现。 【旋转…...

JAVA零基础小白自学日志——第十七天

文章目录 1.方法的覆写2.类的层次结构3.如何判定正确的继承顺序4.如何判断子类继承&#xff08;继承这个词我始终觉得很变扭&#xff09;了父类的什么5.继承关系的实质6.关键字&#xff1a;super 和 this[1].this关键字&#xff08;1&#xff09;this关键字调用本类属性&#x…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...