数据库基础01-mysql和SQL语句

目录

一、关系型数据库

1.什么是关系型数据库

2.主要优点

二、SQL语句

1.简介:

2.SQL通用语法

3.SQL语法分类

4.DDL

(1)查询库

(2)创建库

(3)删除库

(4)使用库

(5)查询表

(6)创建表

(7)删除表

(8)修改表

(9)SQL中的数据类型

5.DML

(1)添加数据

(2)修改数据

(3)删除数据

6.DQL(单表查询)

(1)基础查询

(2)条件查询

(3)分组查询

(4)排序查询

(5)分页查询

(6)条件列表(关键字推荐大写,为了好辨识写的小写)

(7)排序方式

(8)聚合函数

三、图形化客户端工具-Navicat

1.工具的使用

四、IDEA连接数据库

1.连接步骤


一、关系型数据库

1.什么是关系型数据库

关系型数据库是建立在关系模型基础上的数据库

简单来说,关系型数据库是由多张能互相连接的 二维表 组成的数据库

2.主要优点

  • 都是使用表结构,格式一致,易于维护

  • 使用通用的SQL语言操作,使用方便,可用于复杂查询

  • 数据存储在磁盘中,安全

二、SQL语句

1.简介:

  • Structured Query Language,简称 SQL

  • 结构化查询语言,一门操作关系型数据库的编程语言

  • 定义操作所有关系型数据库的统一标准

  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”

2.SQL通用语法

  • SQL 语句可以单行或多行书写,以分号结尾

  • MySQL数据库的 SQL 语不区分大小写,关键字建议使用大写!(为了好辨识我用的小写,正常应该用大写)

  • 注释

    • 单行注释: --注释内容或#注释内容(MySQL 特有)

    • 多行注释:/* 注释内容 */

3.SQL语法分类

  • DDL:(Data Definition Language)数据定义语言,用来定义数据库对象: 数据库,表,列等

    • 操作数据的:库,表等

  • DML:(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改

    • 对表中数据进行增删改

  • DQL:(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)

    • 对表中数据进行查询

  • DCL:(Data ControlLanguage)数据控制语言,用来定义数据库的访问权限和安全级别,以及创建用户

    • 对数据库进行权限控制

4.DDL

(1)查询库
#查看所有数据库
show databases;
(2)创建库
#创建数据库
create database 数据库名;
#创建数据库(加判断)
create database if not exists 数据库名;
(3)删除库
#删除数据库
drop database 数据库名;
#删除数据库(加判断)
drop database if exists 数据库名;
(4)使用库
#查看当前使用的数据库
select database();
#使用/进入指定数据库
use 数据库名;

(5)查询表
#查看库中所有表
show tables;
#查看表结构
desc 表名;
(6)创建表
#创建表,最后一行没有,
create table 表名(
    字段名01 数据类型01,
    字段名02 数据类型02,
    字段名03 数据类型03,
    ...
    字段名n 数据类型n
);
​
create table user(
    id int,
    name varchar(20),
    password varchar(40)
);

(7)删除表
#删除表
drop table 表名;
#删除表(带判断)
drop table if exists 表名;

(8)修改表
#修改表名
alter table 表名 rename 新表名;
​
#表中添加一列(末尾插入)
alter table 表名 add 列名 数据类型;
​
#删除指定列
alter table 表名 drop 列名;
​
#修改数据类型
alter table 表名 modify 列名 新数据类型;
​
#修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型;
(9)SQL中的数据类型

分为三类,我举例只是常用的

  • 数值类:

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes自查自查极大整数值
FLOAT4 Bytes自查自查单精度 浮点数值
DOUBLE8 Bytes自查自查双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

double(数值总长度,小数点保留位数【0-100】)

  • 日期和时间类:

类型大小 ( bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4

'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC

结束时间是第 2147483647

北京时间:2038-1-19 11:14:07

格林尼治时间: 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳
  • 字符串类型

类型大小用途
CHAR0-255 bytes定长字符串(高效但费空间)
VARCHAR0-65535 bytes变长字符串(低效但省空间)
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

5.DML

(1)添加数据
#给指定列添加数据
insert into 表名(列名01,列名02,列名03, ... ,列名n) value(值01,值02,值03, ... ,值n);
​
#给全部列添加数据
insert into 表名 values(值01,值02,值03, ... ,值n);
​
#批量添加数据
#方式一
insert into 表名(列名01,列名02,列名03, ... ,列名n) values(值01,值02,值03, ... ,值n),(值01,值02,值03, ... ,值n),(值01,值02 ... ,值n)...;
#方式二
insert into 表名 values(值01,值02,值03, ... ,值n),(值01,值02,值03, ... ,值n),(值01,值02,值03, ... ,值n)...;

(2)修改数据
#修改表数据
#注意:如果不加条件判断,则为修改全部数据!
update 表名 set 列名1=值1,列名2=值2,...,列名n=值n [where 条件]
UPDATE user SET id = 10,num = 3, score = 99 WHERE name="张三";

(3)删除数据
#删除表数据
#注意:如果不加条件,则为删除所有数据!
delete from 表名 [where条件]

6.DQL(单表查询)

(1)基础查询
#查询表中所有数据
select * from 表名;
​
#查询表中多个字段中的数据【多个字段用,隔开】
select 字段列表 from 表名;
​
#去除重复记录
select distinct 字段列表 表名;
​
#起别名,AS可以省略
as 别名
#如
select name as 姓名 from user;
select name 姓名 from user;
(2)条件查询
#基础查询+条件列表
select name from user where id = 3;
(3)分组查询
#select 聚合函数(列名) from 表名;
#null 值不参与所有聚合函数运算
select avg(score) from user;
​
​
#分组查询
#基础查询+(条件)group by 分组字段名 (having 分组后条件)
#分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
#按性别分组,查询平均分
select sex,avg(score) from user group by sex;
#按性别分组,查询平均分和各自的人数
select sex,avg(score),count(*) from user group by sex;
#按性别分组,查询平均分和各自的人数,要求低于60分的不参与平均
select sex,avg(score),count(*) from user where score>60 group by sex;
#按性别分组,查询平均分和各自的人数,要求低于60分的不参与平均,分组后人数要大于2
select sex,avg(score),count(*) from user where score>60 group by sex having count(*) > 2;

注意点:

  • 分组之后,查询的字段应为聚合函数和分组字段,查询其他字段无任何意义

where 和 having的区别:

  • 执行时机:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤.

  • 限定范围:where 不能对聚合函数进行判断,having可以对聚合函数进行判断

  • 执行顺序:where > 聚合函数 > having

(4)排序查询
#基础查询+(条件查询)+order by 排序字段名1 排序方式,排序字段名2 排序方式...
#如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
select name,math,chinese from user order by math desc,chinese asc;

(5)分页查询
#基础查询 + limit 起始索引,查询条目数
#起始索引:从0开始
#计算公式:起始索引 = (当前页面-1)*每页显示条数
select * from user limit 0,3;
#每页显示10条数据,查询第3页的数据
select * from user limit 20,10;

分页查询在不同数据库的关键字

  • Mysql:limit

  • Oracle:rownumber

  • SQL Server:top

(6)条件列表(关键字推荐大写,为了好辨识写的小写)
符号说明
>大于
<小于
>=大于等于
<=小于等于
=等于
<>/!=不等于
between...and...在[ ]区间,内容可为日期
in(a,b,c,d...)多选一,满足其一即成立
like 占位符 (_单个任意字符) (%多个任意字符)模糊查询
is null是null
is not null不是null
and/&&并且(推荐and)
or/||或(推荐or)
not/!

(7)排序方式
排序方式说明
ASC(默认)升序
DESC降序

(8)聚合函数

将一列数据作为一个整体,进行纵向计算。

函数名说明
count(列名)统计数量(不为null的值,一般推荐主键和*)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值

三、图形化客户端工具-Navicat

Navicat for MysQL 是管理和开发MySQL或MariaDB 的理想解决方案

这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面

官网: Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理

1.工具的使用

  • 打开Navicat

  • 文件

  • 新建连接

  • 选择mysql/MariaDB都可以

  • 设置好连接名和密码即可进行连接

点击连接名,右键,新建数据库,之后自己玩吧~

四、IDEA连接数据库

1.连接步骤

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt应用软件【协议篇】Modbus详细介绍

文章目录 概述Modbus 485协议概述在工业自动化中的应用 通信模式数据模型功能码 Modbus RTU示例 1&#xff1a;读取保持寄存器示例 2&#xff1a;写入单个线圈示例 3&#xff1a;写入多个保持寄存器报文传输 Modbus ASCII报文示例报文传输 Modbus TCP报文示例报文传输 概述 在…

在中国如何方便地使用GPT Plus?

一、背景 通过魔法&#xff0c;顺利登录ChatGPT&#xff0c;准备升级GPT Plus时&#xff0c;发现需要国外信用卡才能支付&#xff0c;这对大多数中国人来说是不方便的。在google搜索解决方案时&#xff0c;发现了WildCard平台&#xff0c;可以一键升级 GPT Plus (GPT-4)。将基…

浅谈隔离放大器

浅谈隔离放大器 定义&#xff1a;隔离放大器是将输入的电量信号或物理量信号通过一种技术手段处理后,隔离输出一组模拟量信号,这组模拟量信号是以标准的4-20mA/0-20mA/0-10mA/0-10V/0-5V/1-5V/2-10V/0-2.5V/0-20mA/0-10mA/0-10V/0-100mV/0-5V等信号,以便控制系统及仪器仪表设备…

【C语言】位操作符详解

目录 1、按位与&#xff08; & &#xff09; 2、按位或&#xff08; | &#xff09; 3.按位异或&#xff08; ^ &#xff09; C语言中的位操作符有以下&#xff1a; & | ^//按位与 //按位或 //按位异或 位运算符是计算两者之间的补码&#xff0c;然后得到的是计算后补…

【数模百科】如何提高数模论文的美观性(附美赛word和LaTeX模板)

有人说&#xff0c; 美赛 美术大赛 某种程度上是这样的。 「论文包装」是美赛的重中之重&#xff0c;如果大家有阅读过往年O奖论文&#xff0c;就会发现所有论文的「美观性」都很强。 比如这篇2019年的神作&#xff0c;花了条恐龙。 好的下面我来教大家如何画恐龙。&#…

什么是防抖和节流?有什么区别?如何实现?

文章目录 一、是什么定义代码实现节流防抖 二、区别三、应用场景 一、是什么 本质上是优化高频率执行代码的一种手段 如&#xff1a;浏览器的 resize、scroll、keypress、mousemove 等事件在触发时&#xff0c;会不断地调用绑定在事件上的回调函数&#xff0c;极大地浪费资源…

IDEA中git的使用和代码对比神器Beyond Compare

和多同学idea配置好了&#xff0c;但是使用却不知道怎么使用。 我这里说说idea中使用的几招常用操作。如&#xff1a;提交&#xff0c;拉取&#xff0c;推送&#xff0c;合并&#xff0c;取消合并&#xff0c;撤回本地提交。 以及一些刚接触idea使用git的怕把公司代码搞砸了的同…

Spring cloud智慧工地信息平台管理系统源码

目录 报警统计 实时报警列表 工程进度 劳务信息 隐患信息 施工安全管理 人员证书管理 专项安全方案 安全方案审批 隐患排查管理 安全检查统计 危险源Top10 整改超时预警 检查问题数量统计 安全隐患趋势 安全日志管理 视频监控查看 视频回放 AI危险源识别 AI应用总览 AI设备 机械…

Vue3的v-model

目录 基本用法 底层机制 v-model 的参数 多个 v-model 绑定 处理 v-model 修饰符 带参数的 v-model 修饰符 例子 总结&#xff1a;Vue 3 中的 v-model 指令与 Vue 2 中的 v-model 相比有一些变化和改进。最显著的变化是&#xff0c;在 Vue 3 中&#xff0c;v-model 可以…

TypeScript(四) 运算符

1. 运算符 1.1. 描述 运算符用于执行程序代码运算。 1.2. 运算符主要包括&#xff1a; &#xff08;1&#xff09;算术运算符 &#xff08;2&#xff09;逻辑运算符 &#xff08;3&#xff09;关系运算符 &#xff08;4&#xff09;按位运算符 &#xff08;5&#xff09;赋值…

R语言【taxlist】——print_name():为发表文章准备可用的格式化名称

Package taxlist version 0.2.4 Description 在撰写关于生物多样性的文章时&#xff0c;可以使用名称自动插入到文件中&#xff0c;包括学名不同元素的典型斜体格式。函数print_name既可以应用于 Markdown 文档&#xff0c;也可以应用于图形。在 Rmarkdown 文档中&#xff0c;…

linux中配置文件目录为什么用etc来命名

在早期的 Unix 系统中&#xff0c;/etc 目录的名称确实来源于单词 “etcetera” 的缩写&#xff0c;最初意味着 “其他”&#xff0c;用来存放杂项或者不属于其他特定目录的文件。然而&#xff0c;随着时间的推移&#xff0c;/etc 目录的用途逐渐演变并专门化。 在现代的 Linux…

houdini relate graph

此图来于网络&#xff1a;如有冒犯敬请告之&#xff0c;侵删 类知识图谱效果 wiki graph d3.js&#xff1b; python d3blocks 1.使用算法模拟动态效果&#xff0c;运动形态&#xff08;计算量小&#xff0c;实现 2.wire solver &#xff08; 3.使用刚体&#xff0c;柔体&…

Pytest与unittest区别

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

如何实现Win系统ssh连接Ubuntu使用vscode远程敲代码

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接…

Unity 迭代器模式(实例详解)

文章目录 简介**实例1&#xff1a;遍历数组****实例2&#xff1a;自定义迭代器类****实例3&#xff1a;异步加载资源****实例4&#xff1a;游戏关卡序列****实例5&#xff1a;无限生成敌人** 简介 在Unity中&#xff0c;虽然不直接使用迭代器模式的原始定义&#xff08;即设计…

EasyExcel通用导入 | 简单封装

0. 前言&#xff1a;1. 基本思路&#xff1a;2. 调用代码&#xff1a; 0. 前言&#xff1a; 之前做了好几个导入&#xff0c;用EasyExcel每次都要定义监听器去处理&#xff0c;就想能不能做个通用的方式&#xff0c;如下 1. 基本思路&#xff1a; 导入无非主要就是参数校验和数…

代码随想录刷题笔记-Day14

1. 对称二叉树 101. 对称二叉树https://leetcode.cn/problems/symmetric-tree/给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root […

深度解析指针与数组:探索内存管理的艺术

目录 1.数组名的理解 sizeof(数组名)&#xff0c;sizef中单独放数组名&#xff0c;这里的数组名表示整个数组&#xff0c;计算的是整个数组的大小&#xff0c;单位是字节 &数组名&#xff0c;这里的数组名表示整个数组&#xff0c;取出的是整个数组的地址 (整个数组的地…

【Java程序设计】【C00179】基于SSM的电影在线购票管理系统(论文+PPT)

基于SSM的电影在线购票管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的电影在线购票管理系统 本系统分为前台用户和后台管理员2个功能模块。 前台用户&#xff1a;当游客打开系统的网址后&#xff0c;首先看到…