Mysql(Linux数据库或者在Navicate中)

news2024/11/24 8:47:20

Mysql数据库组成

服务端:主要存储数据,并接收用户发过来的SQL语句,并执行结果返回给客户端

客户端:下发用户要执行的sql语句,并显示服务器返回的执行结果

命令行数据库连接方式

mysql -h 数据库 IP -P 端口号 -u 数据库登录用户名 -p 数据库登录密码
-h不加表示为本机,-P不加表示默认3306端口

数据类型

数字类型

 字符串类型

时间和日期类型

约束

命令行操作数据库、表

查看所有的数据库        show        database;

使用数据库        

use 数据库名;
查看当前使用的数据库select database();
创建数据库create database 数据库名 charset=utf8;
删除数据库drop database 数据库名;
查看数据库所有的表show tables;
查看数据库表的结构desc 表名;(desc =describe)
查看数据表的创建语句show create table 表名;

数据库表操作

1.创建数据库表

语法:

create table表名(

        字段名1 类型 约束,

        字段名2 类型 约束

        ... ... ...

)

例子:

创建一个学生表,字段要求:姓名(长度为10),年龄,身高(保留2位小数)

CREATE table students(
	id int UNSIGNED PRIMARY KEY auto_increment,
	name VARCHAR(20),
	height decimal(5,2)
	)

2.删除数据库表

drop table 表名        (该命令将永久性删除表和其所有数据)

drop table if exists students (删除表之前检查表是否存在。如果表存在,则表会被删除;如果表不存在,则不会引发错误)

数据增删改查操作

增(insert):

1.1增加一行数据

insert into 表名 values(...)

例子:

insert into students values(0,'jingbeng',12.66);

//主键自增长可以用0或者NULL代替

另一种写法:

insert into students(name) values('nnn')

1.2增加多行数据

方式一:写多条insert语句,多条语句之间用";"隔开

insert into students(name) value ('jingbeng1');

insert into students(name) value ('jingbeng3');

insert into students values(0,'jingbeng2',23,167.56)

方式二: 通过一条insert语句插入多条数据,数据间用","分隔

格式一: insert into 表名 values (...), (...) ...

例: insert into students values(0,'亚瑟3',23,167.56),(0,'亚瑟4',23,167.56)

格式二: insert into 表名(字段名1,...) value(值1,...),(值1,...)...

例: insert into students(name) value ('老夫子5'),('老夫子6')

2.查(select):

1.1简单查询

select * from 表名;

例子:select * from students;

1.2查询部分字段数据

select 字段1,字段2... from 表名;

例子:select name,sex,age from students;

1.3起别名

表起别名:select 别名.字段1,别名.字段2... from 表名 as 别名;

例子:select s.name,s.age from students as s;

字段起别名:select 字段1 as 别名1,字段2 as 别名 from 表名

例子:select name as n,age as a from students;

1.4字段内容去重

select distinct 字段 from 表名;

1.5条件查询(where)

select 字段1,字段2... from 表名 where 条件;

例: select * from students where id=1;

说明: where支持多种运算符进行条件处理

比较运算

逻辑运算

模糊查询

范围查询

空判断

1.5.1条件查询-比较运算符

例1:查询小乔的年龄

select age from students where name='小乔’

例2:查询20岁以下的学生

select * from students where age<20

例3:查询家乡不在北京的学生

select * from students where hometown!='北京'

1.5.2条件查询-逻辑运算符

例1:查询年龄小于20的女同学

select * from students where age<20 and sex='女'

例2:查询女学生或'1班'的学生

select * from students where sex='女' or class='1班

例3:查询非天津的学生

select * from students where not hometown='天津'

1.5.3条件查询-模糊查询

关键字: like

% :匹配任意多个字符

- : 匹配一个任意字符

例1:查询姓孙的学生

select * from students where name like '孙%'

例2:查询姓孙且名字是一个字的学生

select * from students where name like '孙_'

例3:查询姓名以‘乔’结尾的学生

select * from students where name like '%乔'

例4:查询姓名中包含‘白’的学生

select * from students where name like '%白%'

1.5.4条件查询-范围查询

in表示在一个非连续的范围内

例:查询家乡是北京或上海或广东的学生

select * from students where hometown in('北京','上海','广东')

between ... and ...表示在一个连续的范围内

例:查询年龄为18至20的学生

select * from students where age between 18 and 20

1.5.5条件查询-空判断

注意:Mysql中空表示null,与 ‘’ (空)是不一样的。

判断为: is null

例:查询没有填写身份证的学生

select * from students where card is null

判断非空: is not null

例:查询填写了身份证的学生

select * from students where card is not null

1.6排序(降序需要加desc)

1 :查询所有学生信息,按年龄从小到大排序
select * from students order by age;
2 :查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大排序
select * from students order by age desc,studentNo;

1.7聚合函数

使用聚合函数是为了方便进行数据进行统计

聚合函数不能在where中使用:

count():查询总记录数

max(字段名):查询最大值

min(字段名):查询最小值

sum(字段名):求和

avg(字段名):求平均数

1.8分组(group by)

按照字段分组,此字段相同的数据会被放到一个组中 .分组的目的是对每一组的数据进行统计( 使用聚合函数 )

语法:select 字段1,字段2,聚合函数... from 表名 group by 字段1,字段2...

1.9分组后的筛选(having...)

语法: select 字段1,字段2,聚合... from 表名 group by 字段1,字段2,字段3...having 条件

ps: 关键字 having 后面的条件运算符与 where 的相同
1 :查询男生总人数
方案一 :select count(*) from students where sex=' '
方案二 :select sex,count(*) from students group by sex having sex=' '

having和where的对比:

where 是对 from 后面指定的表进行数据筛选,属于对原始数据的筛选。

having 是对 group by 的结果进行筛选。

having 后面的条件中可以用聚合函数,where后面不可以。

1.10分页-获取部分数据

语法:select * from 表名 limit start count

start表示开始位置,索引默认从0开始

count表示从start位置开始获取count条数据

例子:获取学生表的第2-4行的信息

select * from students limit 1,3;

1.10.1分页显示

分页查询:select * from students limit (n-1)*m,m

说明:n表示显示第几页的数据;m表示每页显示多少条数据

1.11连接查询

内连接(inner join...on...)

语法:

select * from 表1 inner join 表2 on 表1.列=表2.列;

select * from 表1,表2 where 表1.列=表2,列;

1 :查询学生信息及学生的成绩
方式一 : Select * from students stu inner join scores sc on stu.studentNo = sc.studentNo
方式二 :select * from students stu, scores sc where stu.studentNo = sc.studentNo
2 :查询课程信息及课程的成绩
select * from courses cs inner join scores sc on cs.courseNo = sc.courseNo
3 :查询王昭君的成绩,要求显示姓名、课程号、成绩
select stu.name, sc.courseNo, sc.score from students stu
inner join scores sc on stu.studentNo = sc.studentNo where
4: 查询学生信息及学生的课程对应的成绩
SELECT * FROM students stu INNER JOIN scores sc on stu.studentNo=sc.studentno INNER JOIN  courses cs on sc.courseNo=cs.courseNo;
5: 查询王昭君的数据库成绩,要求显示姓名、课程名、成绩
SELECT stu. name ,cs. name ,sc.score FROM students stu INNER JOIN scores sc on
stu.studentNo=sc.studentno INNER JOIN courses cs on sc.courseNo=cs.courseNo WHERE
stu. name =' 王昭君 ' and cs. name =' 数据库 ';
6: 查询男生中最高成绩,要求显示姓名、课程名、成绩
SELECT stu.NAME,sc.score,cs.NAME FROM students stu INNER JOIN scores sc on
stu.studentNo=sc.studentno INNER JOIN courses cs on cs.courseNo=sc.courseNo
WHERE stu.sex=' '
ORDER BY sc.score DESC
LIMIT 0,1;

左连接(left join...on...)

定义:(右连接反之)

  • 左连接是从左表(左侧的表)中选择所有的行,并包括符合连接条件的右表(右侧的表)中的匹配行。
  • 如果左表的某一行在右表中没有匹配的行,那么结果集中将会显示右表中对应列的值为 NULL。
  • 结果集中将包含左表中的所有行,而右表中不符合连接条件的行将被排除

语法:select * from 表1 left join 表2 on 表1.列=表2.列

1: 查询所有学生的成绩,包括没有成绩的学生
select * from students stu
left join scores sc on stu.studentNo = sc.studentNo 2: 查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
select * from students stu
left join scores sc on stu.studentNo = sc.studentNo
left join courses cs on cs.courseNo = sc.courseNo

右连接

语法 : select * from 表 1 right join 表 2 on 1. = 2.
1: 查询所有学生的成绩,包括没有成绩的学生
select * from scores sc
right join students stu on stu.studentNo = sc.studentNo
2: 查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
select * from scores sc
right join courses cs on cs.courseNo = sc.courseNo
right join students stu on stu.studentNo = sc.studentNo

ps:左右连接中谁左(右)哪个最长的表就放在左(右)边

1.14子查询

充当条件

1 :查询王昭君的成绩,要求显示成绩(标量子查询)
select * from scores where studentNo = ( select studentNo from students where name = ' 王昭君 ' )
例2:查询 18 岁的学生的成绩,要求显示成绩(列子查询)
select * from scores where studentNo in ( select studentNo from students where age= 18 )
例3:查询和王昭君同班、同龄的学生信息(行子查询)
select * from students where ( class ,age)=( select class ,age from students where name = ' 王昭君 ' )

充当数据源

例1:查询数据库和系统测试的课程成绩
Select * from scores s inner join ( select * from courses where name in ( ' 数据库
' , ' 系统测试 ' )) c on s.courseNo = c.courseNo

改(update)

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

: 修改 id 5 的学生数据,姓名改为 狄仁杰,年龄改为 20
update students set name=' 狄仁杰 ',age=20 where id=5

删(delete)

语法:delete from 表名 where 条件;

: 删除 id 6 的学生数据
delete from students where id=6
注意 : 此方法为物理删除,工作中大部分使用逻辑删除。
逻辑删除是指通过设定一个字段来标识当前记录已经删除。
is_delete 字段来标识, 1 代表删除, 0 表示未删除。
ps:delete 删除所有数据时,自增长字段不会从 1 开始

删除数据其他方式(truncate/drop)

truncate table 表名
: 删除学生表的所有数据 ( 保留表结构 )
truncate table students
drop table 表名
删除学生表 ( 包括所有数据和表结构 )
drop table students

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

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

相关文章

编译原理一:编译器工作流

文章目录 1. 编译器工作流1.1. 解析&#xff08;Parsing&#xff09;1.2. 遍历&#xff08;Traversal&#xff09;1.3 转换(Transformation)1.4 代码生成(Code Generation) 1. 编译器工作流 编译器是将一种语言转化为另一种语言的程序。在编译器工作流中&#xff0c;通常可以分…

git上传云效codeup

为了标识身份&#xff0c;建议先完成 Git 全局设置 git config --global user.name "xxx" git config --global user.email "xxxxxxqq.com" 1.删除本地 .git文件夹 2.云效上 添加库-新建代码库 3.在 git bash 里 按照 建好的代码库 下方的 命令行指引-…

chatgpt赋能python:Python编译成二进制文件:优化代码执行效率

Python编译成二进制文件&#xff1a;优化代码执行效率 介绍 随着Python编程的不断普及&#xff0c;越来越多的开发者选择Python作为开发工具。然而&#xff0c;Python解释器需要读取并解释源代码&#xff0c;这种解释方式在执行效率上存在瓶颈。为了提高执行效率&#xff0c;…

io.netty学习(十三)Netty 解码器

目录 前言 编解码概述 编解码器概述 Netty 内嵌的编码器 解码器 ByteToMessageDecoder 抽象类 ReplayingDecoder 抽象类 MessageToMessageDecoder 抽象类 总结 前言 编码和解码&#xff1a;数据从一种特定协议格式到另一种格式的转换。 处理编码和解码的程序通常被称…

【VulnHub系列】BrokenGallery

因为是从PDF转换过来偶尔可能会出现内容缺少&#xff0c;可以看原版PDF&#xff1a;有道云笔记 实验信息 Broken&#xff1a;192.168.10.111 Kali&#xff1a;192.168.10.106 实验过程 sudo arp-scan --interface eth0 192.168.10.1/24 然后对靶机进行端口探测 nmap -sT -…

定积分的应用—所围图形的面积、绕轴旋转所围成立体的体积、旋转曲面的面积、弧长

本篇本章&#xff0c;将从几个简单的例子带大家分析总结定积分的应用中常用的方法和思想&#xff0c;一起学习进入定积分的世界&#x1f61c;&#x1f61c; 一、求所围图形的面积 1.求由抛物线 y x 2 与 y 2 − x 2 所 围 图 形 的 面 积 yx^2与y2-x^2所围图形的面积 yx2与y2…

Windows下Android studio 搭建 android NDK 搭建 OLLVM 踩坑记录

1. 编译 ollvm-9.0.1 下载源码进行编译 https://github.com/heroims/obfuscator/tree/llvm-9.0.1 编译 这里有坑要注意 不能使用最新的 mingw 8.0.1 编译会报错 报错内容如下: PS D:\OLLVM\obfuscator-llvm-9.0.1\build> cmake -G "MinGW Makefiles" -DCMA…

浏览器 HTTPS 协议的相关知识点有哪些?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言HTTPS协议的概念HT…

腾讯云私有云平台运维面试

文章目录 概述JD 岗位描述一面二面三面HR面 概述 根据会议将面试问题进行总结&#xff0c;很多问题感觉当时没回答好&#xff0c;这是为啥呢&#xff1f;应该还是不熟练吧&#xff0c;或者不善于表达。将次经历分享出来&#xff0c;大家多练练。 JD 岗位描述 私有云平台运维…

io.netty学习(十四)Netty 编码器

目录 前言 MessageToByteEncoder 抽象类 MessageToMessageEncoder 抽象类 总结 前言 上一篇我们讲解了解码器的相关知识&#xff0c;其中也提到了编码器的定义。 编码器就是用来把出站&#xff08;针对本身来讲&#xff0c;发送都是出站&#xff0c;接收都是入站&#xf…

TIA博途_字符转换为字符串以及截取字符串有效字符的具体方法示例

TIA博途_字符转换为字符串以及截取字符串有效字符的具体方法示例 情景再现: 在做某些通信相关的项目时,可能会遇到通信接收到的字符串是以字节的形式传送过来的字符,此时就需要我们对接收到的这些字符进行处理,从而获取我们实际需要的字符或字符串。 如下图所示,打开博途…

一文了解什么是Dubbo

Dubbo学习 Dubbo应用架构的演变RPC&#xff08;远程过程调用&#xff09;RPC介绍RPC组件RPC调用 Apache Dubbo概述Dubbo简介Dubbo的架构 服务注册中心ZookeeperZookeeper介绍运行zookeeper Dubbo的快速开发Dubbo管理控制台治理中心 Dubbo Dubbo是一个分布式服务框架&#xff0…

基于Servlet+JDBC实现的基础博客系统>>系列3 -- Servlet后端服务器搭建

目录 前言 1. 前期准备 2. Model层 2.1 数据库的设计 2.2 数据库表对应的实体类实现 User类 Blog类 2.3 JDBC 工具类实现 2.4 UserDao 的实现 2.5 BlogDao 的实现 3. Controller 层实现 3.1 博客列表页 3.1.1 约定前后端交互接口 3.1.2 编写后端代码 3.1.3 编写…

【Shell1】shell语法,ssh/build/scp/upgrade,环境变量

文章目录 1.shell语法&#xff1a;shell是用C语言编写的程序&#xff0c;是用户使用Linux的桥梁&#xff0c;硬件>内核(os)>shell>文件系统1.1 变量&#xff1a;readonly定义只读变量&#xff0c;unset删除变量1.2 函数&#xff1a;shell脚本传递的参数中包含空格&…

聊天GPT如何运作?| 景联文科技

什么是聊天 GPT&#xff1f; Chat GPT 被定义为一种生成语言模型。在实践中&#xff0c;它被理解为经过训练和设计以进行自然对话的人工智能聊天。 聊天 GPT 的用途是什么&#xff1f; 1.借助 GPT&#xff0c;您可以生成各种风格、主题和语言的连贯且写得很好的文本。此外&a…

【比赛writeup】2023省赛-Reverse-Re2

2023省赛-Reverse-Re2 一、概要 1、标题&#xff1a;Re2 2、关键字&#xff1a;换表BASE64 3、比赛&#xff1a;2023省赛 4、工具&#xff1a;IDAx64、python 二、开始 1、题目分析 逆向的题目&#xff0c;找到关键字符串&#xff0c;找到关键函数&#xff0c;分析函数逻辑…

ISO15765-2 网络层,通俗易懂,最佳入门

I. 简介 ISO15765-2协议网络 ISO15765-2协议网络是一种用于汽车电子系统中的通信协议。它定义了在控制区域网络&#xff08;CAN&#xff09;上使用的诊断通信的协议规范&#xff0c;包括物理层、数据链路层、网络层和传输层。该协议的主要目的是使汽车制造商和维修技术人员能够…

Vue2,Vue3 computed计算属性用法

计算属性就是当依赖的属性的值发生变化的时候&#xff0c;才会触发他的更改&#xff0c;如果依赖的值&#xff0c;不发生变化的时候&#xff0c;使用的是缓存中的属性值。 computed购物车案例 1.Vue2版 <template><div><div><input v-model"keywo…

linux系统Nginx网站服务

文章目录 一、Nginx简介二、Nginx 相对于 Apache 的优点三、nginx 应用场景1.同步与异步2.阻塞与非阻塞 四、Nginx安装及运行控制1、编译安装2、访问控制1、访问状态统计2、基于授权的访问控制3、基于客户端的访问控制4、基于域名的 Nginx 虚拟主机5、基于IP 的 Nginx 虚拟主机…