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)常见的数据类型有:
①数值类型
类型 | 大小 | 用途 |
---|---|---|
tinyint | 1byte | 小整数值 |
int或integer | 4byte | 大整数值 |
double | 8byte | 浮点数值 |
tinyint范围:[0,255]
int范围:[-2147483648,2147383647]
②日期和时间类型
类型 | 格式 | 用途 |
---|---|---|
date | YYYY-MM-DD | 日期值 |
datetimestamp | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | YYYYMMDDHHMMSS | 混合日期和时间值,时间戳 |
③字符串类型’
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),简称db mariadbmysql 常见的数据库:mysql、oracle、高斯(Gauss)、redis、sqlserver、SQLite、HBase 一、SQL(Structured Query Language):结构化查询语言 1、作用ÿ…...

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

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

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

开始Linux之路
人生得一知己足矣,斯世当以同怀视之。——鲁迅 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-三数之和
视频:https://www.bilibili.com/video/BV1bP411c7oJ/?spm_id_from333.788&vd_sourcedd84879fcf1be72f360461b01ecab0d6 从两数之和开始,排序后的两数之和,利用好升序的性质,可以将时间复杂度从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项目测试,在控制器上写了两个接口,一个是支持Get方式访问,另一个支持Post方式访问,发现Get可以,而Post不行。前端Post后,报403,找不到这个方法。 一、原因 原因是…...

最新版智能修图-中文luminar ai 1.55(13797) 和 neo1.20,支持m芯片和intel芯片(绝对可用)
一。Luminar AI for macOS 完整版本 这个程序是第一个完全由人工智能驱动的图像编辑器。有了它,创建引人注目的照片是有趣的,令人惊讶的容易。它是一个独立的照片编辑器和macOS插件。 1.1 Luminar AI for macOS 轻轻地塑造和完善一个肖像打造富有表现…...

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

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下: 三、通过第三…...

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

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

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

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

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

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

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

JAVA零基础小白自学日志——第十七天
文章目录 1.方法的覆写2.类的层次结构3.如何判定正确的继承顺序4.如何判断子类继承(继承这个词我始终觉得很变扭)了父类的什么5.继承关系的实质6.关键字:super 和 this[1].this关键字(1)this关键字调用本类属性&#x…...

electron中app.whenReady()和app.on(‘ready‘)的区别
app.whenReady和app.on(‘ready’)都是用于在Electron应用程序中处理初始化完成事件的方法。app.whenReady是一个返回Promise的方法,它会在应用程序准备好创建窗口时解决。一旦app.whenReady被调用,就可以安全地创建窗口,因为此时Electron的初…...

技术速递|Let’s Learn .NET Aspire – 开始您的云原生之旅!
作者:James Montemagno 排版:Alan Wang Let’s Learn .NET 是我们全球性的直播学习活动。在过去 3 年里,来自世界各地的开发人员与团队成员一起学习最新的 .NET 技术,并参加现场研讨会学习如何使用它!最重要的是&#…...

JSONNode树形解析或流式解析
哈喽,大家好,我是木头左! 什么是JSONNode? JSONNode是一个用于处理JSON数据的数据结构,它提供了一种简单、灵活、高效的方式来操作JSON数据。JSONNode可以看作是一个树形结构,其中每个节点都可以包含一个值…...

自制迷宫游戏 c++
竞赛的同时也不能忘记娱乐,劳逸结合,我们自研了迷宫游戏,只能在DEV C 运行哦 #include<bits/stdc.h> #include<iomanip> #include<iostream> #include<cstdlib> #include<ctime> #include<conio.h> #include<win…...

基于复旦微JFMQL100TAI的全国产化FPGA+AI人工智能异构计算平台,兼容XC7Z045-2FFG900I
基于上海复旦微电子FMQL45T900的全国产化ARM核心板。该核心板将复旦微的FMQL45T900(与XILINX的XC7Z045-2FFG900I兼容)的最小系统集成在了一个87*117mm的核心板上,可以作为一个核心模块,进行功能性扩展,能够快速的搭建起…...

【数学建模】技术革新——Lingo的使用超详解
目录 基础知识 1. 变量声明 示例 2. 常量声明 语法格式 示例 3. 目标函数 语法格式 示例 4. 约束条件 语法格式 示例 5. 完整的Lingo模型示例 示例 解释 6. 整数变量声明 语法格式 示例 7. 非线性规划 示例 8. 多目标优化 语法格式 示例 9. 数据输入与…...

LLM-阿里 DashVector + langchain self-querying retriever 优化 RAG 实践【Query 优化】
文章目录 前言self querying 简介代码实现总结 前言 现在比较流行的 RAG 检索就是通过大模型 embedding 算法将数据嵌入向量数据库中,然后在将用户的查询向量化,从向量数据库中召回相似性数据,构造成 context template, 放到 LLM 中进行查询…...

【python】PyQt5的窗口界面的各种交互逻辑实现,轻松掌控图形化界面程序
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

DockerCompose介绍,安装,使用
DockerCompose 1、Compose介绍 将单机服务-通过Dockerfile 构建为镜像 -docker run 成为一个服务 user 8080 net 7000 pay 8181 admin 5000 监控 .... docker run 单机版、一个个容器启动和停止问题: 前面我们使用Docker的时候,定义 Dockerfil…...

N叉树的前序遍历
Problem: 589. N 叉树的前序遍历 文章目录 思路解题过程Code 思路 前序遍历,遇到空节点返回 解题过程 对每个节点进行遍历 Code /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val _val;}Nod…...