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

第17天:数据库学习笔记1

数据库学习笔记

1 SQL语言介绍

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2 数据库的安装

2.1 启动数据库

方式一:net start mysql

方式二:在计算机管理里面手动打开数据库

2.2 登录MySQL

方式一:本地登录

即数据库与客户端在同一台电脑上。

方式二:远程登录

mysql -uroot -h数据库服务器的IP地址 -p

但用root账户对数据库服务器进行远程登录,一般会被拒绝,因为root账户的权限非常高。

若是想要访问,可以按照以下步骤进行操作:

  • 第一步:先在本地使用root账户登录mysql
  • 第二步:use mysql
  • 第三步:update user set host=‘%’ where user=‘root’;
  • 第四步:flush privileges;
  • 第五步:退出,再以远程方式登录

3 初始化数据

3.1查看有多少个数据库

show databases;

3.2 使用数据库

use 数据库名;

3.3 查看表

show tables

3.4 创建新的数据库

create database 数据库名;

3.5 删除数据库

drop database 数据库名;

3.6 查看当前使用的数据库

select database();

3.7 退出mysql

  1. exit
  2. quit
  3. ctrl+c

3.8 查看mysql版本

  • 方式一:启动数据库后,用select version();查看
  • 方式二:在cmd中输入mysql --version

3.9 熟悉表结构

desc 表名;

3.10 初始化数据

  • 你入职的时候,项目一般都是进展了一部分,多数情况下你进项目组的时候数据库的表以及数据都是有的,项目经理第一天可能会给你一个较大的sql脚本文件,你需要执行这个脚本文件来初始化你的本地数据库。(当然,也有可能数据库是共享的。)
  • 创建文件:xie.sql,把以上SQL语句全部复制到sql脚本文件中。
  • 执行SQL脚本文件,初始化数据库
    • 第一步:命令窗口登录mysql
    • 第二步:创建数据库xie(如果之前已经创建就不需要再创建了):create database xie;
    • 第三步:使用数据库xie:use xie;
    • 第四步:source命令执行sql脚本,注意:source命令后面是sql脚本文件的绝对路径。

4 查询语句DQL专题

select语句永远不会改变表的结构

4.1 简单查询

4.1.1 查询一个字段

语法格式:select 字段名 from 表名;

4.1.2 sql语句写错了

输入\c来终结该语句

4.1.2 查询多个字段

语法格式:select 字段名,字段名,字段名… from 表名;

4.1.3 查询一个表所有信息

语法格式:select * from 表名;

4.1.4查询时字段可参与数学运算

例如:select deptno*12 from dept;

4.1.5 查询时给字段起别名

可以起中文别名

  • 情况一:select 字段 as 字段别名 from 表名;
  • 情况二:select 字段 字段别名 from 表名;(as可以省略)
  • 情况三:select 字段 ‘字段别名 1’ from 表名;(若是别名有空格必须给别名括上单引号或双引号,其中单引号是标准)

4.2 条件查询

条件说明
=等于
<>或!=不等于
>=大于等于
<=小于等于
>大于
<小于
between…and…等同于 >= and <=
is null为空
is not null不为空
<=>安全等于(可读性差,很少使用了)。
and 或 &&并且
or 或 ||或者
in在指定的值当中
not in不在指定的值当中
exists
not exists
like模糊查询
4.2.1 条件查询语法格式

select 字段名 from 表名 where 过滤条件;

执行顺序,先from再where最后select

mysql无论是语句还是字段等内容都不区分大小写,orcale区分大小写

4.2.2 不等于查询

在开发中一般使用<>表示不等于。

select * from emp where deptno<>10;

4.2.3 区间查询

查询工资在1600~3000的员工信息

between…and…是闭区间的。between 1000 and 2000 是包含1000和2000的。

  • 方式一:select * from emp where sal>=1600 and sal<=3000;
  • 方式二:select * from emp where sal between 1600 and 3000;
4.2.4 and和or的优先级问题

and和or同时出现时,and优先级较高,会先执行,如果希望or先执行,这个时候需要给or条件添加小括号。另外,以后遇到不确定的优先级时,可以通过添加小括号的方式来解决。对于优先级问题没必要记忆。

4.2.5 between…and…

between…and…是闭区间的。between 1000 and 2000 是包含1000和2000的。

不仅能用在数字方面,字符串,日期方面也可以。

  • 数字:select * from emp where sal between 1600 and 3000;
  • 字符串:select ename from emp where ename between 'a' and 'z';
  • 日期:select * from emp where HIREDATE between ' 1982-01-23' and '1987-04-19';
4.2.6 is null is not null

判断某个数据是否为null,不能使用等号,只能使用 is null 判断某个数据是否不为null,不能使用不等号,只能使用 is not null 在数据库中null不是一个值,不能用等号和不等号衡量,null代表什么也没有,没有数据,没有值.

4.2.7 in not in

案例1:找出工作岗位是MANAGER和SALESMAN的员工姓名、薪资、工作岗位.

  • 方式一:select ename,sal,job from emp where job= ‘MANAGER’ or job=‘SALESMAN’;
  • 方式二:select ename,sal,job from emp where job in(‘MANAGER’,‘SALESMAN’);
4.2.8 in not in 与null的小细节

select * from emp where comm = NULL or comm = 300;

上述语句执行的效果如下:select * from emp where comm = 300;

NULL不能用等号=进行判断,所以comm = NULL结果是false.

in是自动忽略NULL的,但not in是不忽略NULL的。

如下代码:mysql> select * from emp where comm not in(null,300);结果什么也查不出来。

4.2.9 模糊查询

语法格式:select …from … where 字段1 like ‘通配符表达式’;

  • %代表任意多个字符
  • _代表任意一个字符

查含有下划线的字符需要转义_

5 排序操作

5.1 单个字段排序

语法格式:select .. from .. order by 字段 asc/desc

默认为升序。

5.2 多个字段排序

语法格式:select .. from .. order by 字段 asc/desc,字段 asc/desc

例子:查询员工的编号、姓名、薪资,按照薪资升序排列,如果薪资相同的,再按照姓名升序排列。

select empno,ename,sal from emp order by sal asc,ename asc;

5.3 where和order by的位置

找出岗位是MANAGER的员工姓名和薪资,按照薪资升序排列。

select ename,sal from emp where job = 'MANAGER' order by sal asc;

where先执行,order by语句是最后执行的。

5.4 执行顺序

首先执行where再执行from再执行select最后执行order by。

6 distinct去重

去除表中重复的记录(联合全部字段去重),但真实数据库里面的不会改变。

distinct 出现在所有字段的最前方。

数据库注意事项

当数据库连接不上的时候,可以看看是不是在计算机管理的标准里面将数据库关闭了。

`

where先执行,order by语句是最后执行的。

5.4 执行顺序

首先执行where再执行from再执行select最后执行order by。

6 distinct去重

去除表中重复的记录(联合全部字段去重),但真实数据库里面的不会改变。

distinct 出现在所有字段的最前方。

数据库注意事项

当数据库连接不上的时候,可以看看是不是在计算机管理的标准里面将数据库关闭了。

http://www.lryc.cn/news/571192.html

相关文章:

  • MySQL 默认连接数
  • .sstop勒索加密数据库恢复---惜分飞
  • 从电商平台下载数据的项目经验分享 (part 1)
  • 前后端拦截器+MDC实现纯数字 traceId 全链路日志追踪(axios + Spring Boot 超详细实战)
  • DeepSeek 大型 MoE 模型大规模部署压测学习
  • FlinkCDC-Hudi数据实时入湖原理篇
  • JVM监控的挑战:Applications Manager如何提供帮助
  • Spring Boot集成Kafka全攻略:从基础配置到高级实践
  • 多模态大语言模型演进:从视觉理解到具身智能的技术突破
  • Linux运维新人自用笔记(部署 ​​LAMP:Linux + Apache + MySQL + PHP、部署discuz论坛)
  • 5.安装IK分词器
  • ELK在Java的使用
  • Selenium(选择元素,浏览器/元素操作,等待,页面交互)
  • Windows Python 环境管理终极对比:极简方案 VS 传统方案(仅需 2 个软件实现全流程自动化)
  • Selenium(多窗口,frame,验证码,截图,PO模式)
  • rockx读取单张图片并检测图片内人脸的矩形
  • vite的常用配置
  • 「动态规划::数位DP」统计数字递推 / LeetCode 3352|1012(C++)
  • 线程池(Thread Pool)详解
  • 基于Cesium移动的天空云
  • 【Docker基础】Docker核心概念:命名空间(Namespace)之IPC详解
  • 根据Python模块的完整路径import动态导入
  • 05_MinIO+Java SpringBoot 实现透传代理下载
  • 如何确定驱动480x320分辨率的显示屏所需的MCU主频
  • 为何前馈3DGS的边界总是“一碰就碎”?PM-Loss用“3D几何先验”来解
  • Mac 安装JD-GUI
  • 低轨导航 | 低轨卫星导航PNT模型,原理,公式,matlab代码
  • 软件工程:流程图如何画?
  • Python 爬虫入门 Day 5 - 使用 XPath 进行网页解析(lxml + XPath)
  • springboot使用kafka