01-MySQL 基础篇笔记

一、MySQL 概述

1.1 数据库相关概念

数据库:(DB:DataBase)

  • 存储数据的仓库,数据是有组织的进行存储

数据库管理系统:(DBMS:DataBase Management System)

  • 操作和管理数据库的大型软件

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

  • 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

主流的关系型数据库管理系统

  • ORACLE
  • MySQL
  • SQLServer
  • PostgreSQL
  • SQLite(安卓)

1.2 MySQL 数据库

版本:

  • 社区版,免费,MySQL 不提供任何技术支持

  • 商业版,收费,官方提供技术支持

MySQL 下载:

  • MySQL 下载网址

安装:

1.3 MySQL 数据库的启动与停止

1、启动:

net start mysql80

2、停止 :

net stop mysql80

mysql80 是系统服务名称:

【注意】:MySQL 默认是开机自启动的

1.4 MySQL 客户端连接

1、方式一

2、方式二

系统自带的命令行工具执行指令

mysql [-h 127.0.0.1] [-p 3306] -u root -p

【注意】使用这种方式时,需要配置 PATH 环境变量

1.5 MySQL 数据库数据模型

关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库(Excel 表)。

特点:

  • 使用表存储数据,格式统一,便于维护

  • 使用 SQL 语言操作,标准统一,使用方便

二维表


二、SQL

2.1 SQL 通用语法

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

  • SQL 语句可以使用空格 / 缩进来增强语句的可读性

  • MySQL 数据库的SQL 语句不区分大小写,关键字建议使用大写。

  • 注释:

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

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

2.2 SQL 分类

2.3 DDL(数据定义语言)

作用:用来定义数据库对象(数据库、表、字段)

2.3.1 数据库操作

1. 查询:

查询所有数据库:

SHOW DATABASES;

查询当前数据库:----> 在某个数据库工作,不知道它的名字

SELECT DATABASE();
2.创建:
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];

[IF NOT EXISTS]:如果该数据库名不存在就创建,否则就不创建。

3.删除
DROP DATABASE [IF EXISTS]数据库名;

4.使用
USE 数据库名;

2.3.2 表操作(创建、查询)

1.表操作 --- 查询

查询当前数据库中所有表:

SHOW TABLES;

查询表结构:

DESC 表名;

查询指定表的建表语句:

SHOW CREATE TABLES 表名;

2.表操作 --- 创建
CREATE TABLE 表名(字段1 字段1类型 [COMMENT 字段1注释],字段2 字段2类型 [COMMENT 字段2注释],字段3 字段3类型 [COMMENT 字段3注释],......字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT 表注释];

【注】[......] 为可选参数,最后一个字段后面没有逗号

2.3.3 表操作(数据类型及案例)

1.表操作 --- 数据类型

MySQL 中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

精度:是指该数的数字个数

标度:是指该数的小数个数

  • 123.45

    • 精度是 5

    • 标度是 2

char(10) --->性能好

varchar(10) ---->性能较差

案例:

CREATE TABLE EMP(ID INT COMMENT '编号',WORKID VARCHAR(10) COMMENT '工号',NAME VARCHAR(10) COMMENT '姓名',GENDER CHAR(1) COMMENT '性别',AGE TINYINT UNSIGNED COMMENT '年龄',IDCARD CAHR(18) COMMENT '身份证号',ENTRYTIME DATA COMMENT '入职时间'
)COMMENT '员工表';

2.3.4 表操作 --- 修改&删除

1.DDL -- 表操作 -- 修改
1.1 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

案例:为 emp 表增加一个新的字段 “昵称” 为 nickname,类型为 varchar(20)

ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';

1.2 修改字段

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

案例:将 emp 表的 nickname 字段修改为 username,类型为 varchar(30)

ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '用户名';
1.3 删除字段
ALTER TABLE 表名 DROP 字段名;

案例:将 emp 表的字符 username 删除

ALTER TABLE emp DROP username;

1.4 修改表名
ALTER TABLE 表名 RENAME TO 新表名;

案例:将 emp 表的表名修改为 employee

ALTER TABLE emp RENAME TO employee;

2.DDL -- 表操作 -- 删除
2.1 删除表
DROP TABLE [IF EXISTS] 表名;
2.2 删除指定表,并重新创建该表
TRUNCATE TABLE 表名;

2.3.5 DDL 小结

2.3.6 MySQL 图形化界面

2.4 DML(数据操作语言)

DML 英文全称是 Data Manipulation Language (数据操作语言),用来对数据库中表的数据记录进行增删改操作。

作用:用来对数据库表中的数据进行 增删改

  • 添加数据:INSERT

  • 修改数据:UPDATA

  • 删除数据:DELETE

1. DML - 添加数据(insert)

1.1 给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
1.2 给全部字段添加数据

不指定字段名称,就是给表中所有字段添加数据

INSERT INTO 表名 VALUES(值1,值2,...);
1.3 批量添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

不指定字段名称,就是给表中所有字段添加数据

INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

【注意】

  • 插入数据时,指定的字段顺序需要与值的顺序是一 一对应的。

  • 字符串和日期型数据应该包含在引号中。

  • 插入的数据大小,应该在字段的规定范围内。

案例
insert into emp(id, workid, name, gender, age, idcord, entrydata) values (1,'1','itcast','男',10,'123456789012345678','2000-10-01');
# 给指定字段添加数据
insert into emp(id, workid, name, gender, age, idcord, entrydata) values (3,'2','itcast2','男',-1,'123456789012345678','2000-10-01');# 给全部字段添加数据
insert into emp values (11,'11','allice','女',10,'123456789012345678','2001-08-09');
-- 批量添加数据
insert into emp values (14,'14','王林','女',10,'123456789012345678','2001-08-09'),(13,'13','黄天霸','女',10,'123456789012345678','2001-08-09'),(12,'12','张无忌','女',10,'123456789012345678','2001-08-09');
-- 查询所有数据
select * from emp;

2. DML - 修改数据(updata)

语法:

UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,...[WHERE 条件];

【注意】:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

案例:
-- 修改id 为 1 的数据,将 name 修改为 唐三
update emp set name = '唐三' where id = 1;-- 修改id 为 2 的数据,将 name 修改为 田二林,gender 修改为 '女'
update emp set name = '田二林',gender = '女' where id = 2;-- 将所有员工的入职日期修改为 2008-01-01
update emp set entrydata = '2008-01-01';

3. DML - 删除数据(delete)

语法:

DELETE FROM 表名 [WHERE 条件]

【注意】

  • delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
  • delete 语句不能删除某一个字段的值(乐园使用 update 进行删除)
案例:
-- 删除 gerder 为 女 的员工
delete from emp where gender = '女';-- 删除所有员工
delete from emp;

4、DML(数据操作语言)总结

2.5 DQL(数据查询语言)⭐

作用:用来 查询 数据库中表的记录

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

查询关键字:select

DQL 语法

1、DQL - 基本查询

案例:
-- 删除表
drop table emp;-- 查询数据
-- 数据准备
create table empployee(id int comment '编号',worknc varchar(10) comment '工号',name varchar(10) comment '姓名',genger char(1) comment '性别',age tinyint unsigned comment '年龄',idcars char(18) comment '身份证号',workaddress varchar(50) comment '工作地址',entrydate date comment '入职时间'
) comment '员工表';-- 添加数据(插入数据)
insert into empployee(id, worknc, name, genger, age, idcars, workaddress, entrydate)
values (1,'1','王林','男',20,'123456789012345678','北京','2000-01-01'),(2,'2','田大林','男',21,'123456789012345678','北京','2000-01-01'),(3,'3','田二林','男',19,'123456789012345678','北京','2000-01-01'),(4,'4','田三林','男',18,'123456789012345678','北京','2000-01-01'),(5,'5','海瑞','男',20,'123456789012345678','海南','2000-01-01'),(6,'6','虹猫','男',18,'123456789012345678','上海','2000-01-01'),(7,'7','蓝兔','女',18,'123456789012345678','上海','2000-01-01'),(8,'8','石昊','男',20,'123456789012345678','北京','2000-01-01'),(9,'9','荒','男',20,'123456789012345678','北京','2000-01-01'),(10,'10','冰帝蟹','女',20,'123456789012345678','北京','2000-01-01'),(11,'11','韩立','男',20,'123456789012345678','天津','2000-01-01'),(12,'12','冯宝宝','女',200,'123456789012345678','四川','2000-01-01'),(13,'13','张楚岚','男',20,'123456789012345678','河北','2000-01-01'),(14,'14','徐三','男',20,null,'长沙','2000-01-01');select * from empployee;-- 查询基本要求-- 基本查询
-- 1.查询指定字段 name,worknc,age 返回
select name,worknc,age from empployee;-- 2.查询所有字段返回
select id, worknc, name, genger, age, idcars, workaddress, entrydate from empployee;
# 尽量不要这样写,不要写 *
select * from empployee;-- 3.查询所有员工的工作地址,起别名
select workaddress from empployee;
select workaddress as '工作地址' from empployee;
select workaddress '工作地址' from empployee;-- 4.查询所有员工的上班地址(不要重复)
select distinct workaddress from empployee;

2、DQL - 条件查询

案例:
-- 条件查询
-- 1.查询年龄等于 88 的员工
select * from empployee where age = 88;-- 2.查询年龄小于 20 的员工信息
select * from empployee where age < 20;-- 3.查询年龄小于等于 20 的员工信息
select * from empployee where age <= 20;-- 4,查询没有身份证号的员工信息
select * from empployee where idcars is null;-- 5.查询有身份证号的员工信息
select * from empployee where not (idcars is null);
select * from empployee where idcars is not null;-- 6.查询年龄不等于 88 的员工信息
select * from empployee where age != 88;
select * from empployee where age <> 88;-- 7.查询年龄在 15岁(包含)到 20 岁(包含)之间的员工信息
select * from empployee where age >= 15 && age <= 20;
select * from empployee where age >= 15 and age <= 20;
-- between 最小值 and 最大值
select * from empployee where age between 15 and 20;-- 8.查询性别为 女 且年龄小于 25 岁的员工信息
select *from empployee where genger = '女' && age < 25;
select *from empployee where genger = '女' and age < 25;-- 9.查询年龄等于 18 或 20 或 40 的员工信息
select * from empployee where age = 18 || age = 20 || age = 40;
select * from empployee where age = 18 or age = 20 or age = 40;
select * from empployee where age in(18,20,40);-- 10.查询姓名为两个字的员工信息
select * from empployee where name like '__';-- 11.查询身份证号最后一位是 X 的员工信息
select * from empployee where idcars like '%X';

3、DQL - 聚合函数

案例:
-- 聚合函数
-- 1.统计该企业员工数量
select count(*) from empployee;
select count(id) from empployee;-- 2.统计该企业员工的平均年龄
select avg(age) from empployee;-- 3.统计该企业员工的最大年龄
select max(age) from empployee;-- 4.统计该企业员工的最小年龄
select min(age) from empployee;-- 5.统计北京地区员工的年龄之和
select sum(age) from empployee where workaddress = '北京';

4、DQL - 分组查询

案例:
-- 分组查询
-- 1.根据性别分组,统计男性员工 和 女性员工的数量
select genger,count(*) from empployee group by genger;-- 2.根据性别分组,统计男性员工 和 女性员工的平均年龄
select genger,avg(age) from empployee group by genger;-- 3.查询年龄小于 45 的员工,并根据工作地址分组,获取员工数量大于等于 3 的工作地址
select workaddress, count(*) from empployee where age < 45 group by workaddress having count(*) >= 3;
select workaddress, count(*) address_count from empployee where age < 45 group by workaddress having address_count >= 3;

5、DQL - 排序查询

案例:
-- 排序查询
-- 1.根据年龄对公司的员工进行升序排序
-- 升序:从小到大
select name,age from empployee order by age asc;-- 2.根据入职时间,对员工进行降序排序
-- 降序:由大到小
select name,entrydate from empployee order by entrydate desc ;-- 3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select name,age,entrydate from empployee order by age asc,entrydate desc ;

6、DQL- 分页查询

案例:
-- 分页查询
-- 1.查询第 1 页员工数据,每页展示 10 条记录
select * from empployee limit 0,10;
select * from empployee limit 10;-- 2.查询第 2 页员工数据,每页展示 10 条记录 ------> (页码 - 1)* 页展示记录数
select * from empployee limit 10,10;

7、案例

-- 1.查询年龄为 20,21,22,23岁的女性员工信息
select * from empployee where genger = '女' and age in(20,21,22,23);-- 2.查询性别为 男,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工
select * from empployee where (genger = '男') and (age between 20 and 40 ) and (name like '___');-- 3.统计员工表中,年龄小于 60 岁的,男性员工 和 女性员工的人数
select genger,count(*) from empployee where age < 60 group by genger;-- 4.查询所有年龄小于等于 35 岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name,age,entrydate from empployee where age <= 35 order by age asc,entrydate desc;-- 5.查询性别为男,且年龄在 20-40 岁(含)以内的前 5 个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序
select * from empployee where (genger = '男') and (age between 20 and 40) order by age asc,entrydate asc limit 5;

8、DQL - 执行顺序

什么别名去验证

9、总结

2.6 DCL(数据控制语言)

作用:用来创建数据库用户、控制数据库的访问权限

DCL(Data Control Language)数据控制语言,用来管理数据库用户、控制数据库的访问权限。

1、DCL - 管理用户

2、DCL - 权限控制


 


三、函数

函数:是指一段可以直接被另一段程序调用的程序或代码。

3.1 字符串函数

-- concat 字符串连接
select concat('Hello',' MySQL');-- lower 把大写字符转成小写
select lower('Hello');-- upper 把小写字符转成大写
select upper('Hello');-- lpad str 左侧填充
select lpad('01',5,'-');
select lpad('01',3,'-');-- rpad str 右侧填充
select rpad('01',5,'-');-- trim 去除字符串前后空格
select trim(' Hello MySQL   ');-- substring 截取字符串
select substring('Hello MySQL',1,5);

3.2 数值函数

3.3 日期函数

3.4 流程函数

四、约束

五、多表查询

六、事务

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

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

相关文章

【Gateway远程开发】0.5GB of free space is necessary to run the IDE.

【Gateway远程开发】0.5GB of free space is necessary to run the IDE. 报错 0.5GB of free space is necessary to run the IDE. Make sure that there’s enough space in following paths: /root/.cache/JetBrains /root/.config/JetBrains 原因 下面两个路径的空间不…

EPAI手绘建模APP动画编辑器、信息、工程图

④ 动画&#xff1a;打开关闭动画编辑器。APP中动画包含两个部分&#xff0c;动画编辑器和动画控制器。动画编辑器用来编辑动画。具体来说&#xff0c;选中一个模型后&#xff0c;给模型添加移动、旋转、缩放三种关键帧&#xff0c;不同的模型添加不同的关键帧&#xff0c;实现…

计算机网络——Dijkstra路由算法

实验目的 实现基于 Dijkstra 算法的路由软件 实验内容 网络拓扑如图所示 实验过程 先编写开辟应该图的空间&#xff0c;然后给点映射数字&#xff0c;构建图。程序获取用户输入的学号&#xff0c;构建图中边的权值。接下来程序从用户输入获取最短路径的搜索起点&#xff0…

基于FPGA的数字信号处理(8)--RTL运算的溢出与保护

前言 在做加、减、乘、除等运算时&#xff0c;经常会发生 溢出 的情况。比如1个4bits的计数器&#xff08;每个时钟累加1&#xff09;&#xff0c;在4’b1111 1 后&#xff0c;原本其期望值应该是 151 即16&#xff0c;但是4bits的寄存器能表示的最大值只是4‘b1111即15&…

docker私有仓库的registry

简介 Docker私有仓库的Registry是一个服务&#xff0c;主要用于存储、管理和分发Docker镜像。具体来说&#xff0c;Registry的功能包括&#xff1a; 存储镜像&#xff1a;Registry提供一个集中的地方来存储Docker镜像&#xff0c;包括镜像的层次结构和元数据。 版本控制&…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层&#xff1a;处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories: 后端开发 tags: Django请求处理响应生成模板渲染表单处理中间件异常处理 第一章&#xff1a;Django框架概述 1.1 什么是Django&#xff1f;…

翔云优配恒生指数涨1.85%、恒生科技指数涨3.74% 小鹏汽车涨超8%

5月3日港股开盘&#xff0c;恒生指数涨1.85%&#xff0c;报18543.3点&#xff0c;恒生科技指数涨3.74%&#xff0c;报4009.96点&#xff0c;国企指数涨2.23%&#xff0c;报6580.81点&#xff0c; 翔云优配是一家领先的在线投资平台,提供全球范围内的股票、期货、基金等交易服务…

高级数据结构与算法习题(9)

一、判断题 1、Let S be the set of activities in Activity Selection Problem. Then the earliest finish activity am​ must be included in all the maximum-size subset of mutually compatible activities of S. T F 解析:F。设S是活动选择问题中的一…

【简单介绍下链表基础知识】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

飞书API(7):MySQL 入库通用版本

一、引入 在上一篇介绍了如何使用 pandas 处理飞书接口返回的数据&#xff0c;并将处理好的数据入库。最终的代码拓展性太差&#xff0c;本篇来探讨下如何使得上一篇的最终代码拓展性更好&#xff01;为什么上一篇的代码拓展性太差呢&#xff1f;我总结了几点&#xff1a; 列…

数据库开发关键之与DQL查询语句有关的两个案例

案例 案例1 条件分页查询 查看项目经理提供给我们的需求文档 模糊匹配的含义是 只要包含"张"就可以 use dduo;-- 按照需求完成员工管理的条件分页查询 根据输入条件 查询第一页的数据 每页展示10条记录 -- 输入条件&#xff1a; -- 姓名&#xff1a; 张 -- 年龄&…

关于MS-DOS时代的回忆

目录 一、MS-DOS是什么&#xff1f; 二、MS-DOS的主要功能有哪些&#xff1f; 三、MS-DOS的怎么运行的&#xff1f; 四、微软开源MS-DOS源代码 五、高手与漂亮女同学 一、MS-DOS是什么&#xff1f; MS-DOS&#xff08;Microsoft Disk Operating System&#xff09;是微软公…

MongoDB的分片集群

MongoDB分片技术 介绍 ​ 分片&#xff08;sharding&#xff09;是MongoDB用来将大型集合分割到不同服务器上采用的方法。分片这种说法起源于关系型数据库。但是实际上非关系型数据库在分片方面相比于传统的关系型数据库更有优势。 ​ 与MySQL分库方案对比&#xff0c;MongoDB…

SpringCloud微服务:负载均衡

负载均衡原理 获取 serviceId&#xff0c;也就是服务名称根据 serviceId 拉取服务列表利用负载均衡算法选择一个服务重构请求的 URL 路径&#xff0c;发起远程调用 切换负债均衡算法 自定义 ReactorServiceInstanceLoadBalancer 指定负载均衡器配置

力扣每日一题106:从中序与后序遍历序列构造二叉树

题目 中等 相关标签 相关企业 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder …

matlab绘制时间序列图,横坐标轴如何标注为月-日

Excel表格中有类似于如下 年月日对应的数据 导入 matlab中&#xff0c;为数值矩阵&#xff1b;了解该表格中的时间跨度为从2021年1月2日至2021年12月31日&#xff0c;中间没有缺失&#xff0c;绘图代码&#xff1a; % clear; timespan1[20210102 20211231]; datenn1datenum(da…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic&#xff0c;python都在/usr/bin中&#xff0c;一共是两个版本的python&#xff0c;一个是python3.8&#xff0c;另一个是python2.7。 问题发现 当安装anaconda后&#xff0c;并且将anaconda的bin目录加入到系统环境中时候&#xff0c;…

【CAP探索者指南】掌握分布式世界的三角平衡术,一致性、可用性、分区容错性大揭秘!

关注微信公众号 “程序员小胖” 每日技术干货&#xff0c;第一时间送达&#xff01; 引言 在现代的微服务架构中&#xff0c;系统被拆分成了许多小型服务&#xff0c;每个服务可能有自己的数据库。这种架构带来了灵活性和可扩展性&#xff0c;但也引入了新的挑战&#xff0c;…

Spring事件

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Spring⛺️稳中求进&#xff0c;晒太阳 Spring事件 简洁 Spring Event&#xff08;Application Event&#xff09;就是一个观察者模式&#xff0c;一个bean处理完任务后希望通知其他Bean的…

AI学习指南-专栏前言

前言 人工智能AI作为当下最火热的技术之一&#xff0c;我们每个人似乎都被动的置身于这场科技变革中&#xff0c;AI越来越多的出现在我们的身边&#xff0c;也总能听到这样的言论&#xff0c;例如“N年后AI会取代某某行业”&#xff0c;AI出现之后&#xff0c;好像大多数人都陷…