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 流程函数

四、约束

五、多表查询

六、事务

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

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

相关文章

论文阅读笔记(AAAI 20)Order Matters

个人博客地址 注&#xff1a;部分内容参考自GPT生成的内容 论文笔记&#xff1a;Order Matters&#xff08;AAAI 20&#xff09; 用于二进制代码相似性检测的语义感知神经网络 论文:《Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection》…

时间日志格式的统一和定制

返回当前格式的时间没有错误&#xff0c;但是不符合中国人的阅读习惯 解决&#xff1a; 方案一&#xff1a;JsonFormat 解决后端 传到 前端格式问题 依赖&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jack…

基于MQTT通信开发的失物招领小程序

项目架构设计 这个项目采用前后端分离的方式&#xff0c;重新设计了两条链路来支撑程序的信息获取和传递 前端的小程序页面再启动页面渲染时&#xff0c;直接通过DBAPI从后端数据库获取信息&#xff0c;直接渲染在小程序中项目中给DBAPI的定位是快速从后端获取信息&#xff0…

C语言 计数控制循环

今天 我们来说 计数控制的循环 对于循环次数 我们已知的循环 我们称之为 计数控制的循环 这种情况 我们一般选择 for来实现 更为方便 先看一个案例 求 1 到 N 的累加合 我们代码可以这样写 #define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告 #pragma warning(disable:6031…

一键自动化博客发布工具,chrome和firfox详细配置

blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。 很多小伙伴可能对于如何进行配置和启动不是很了解&#xff0c;今天带给大家一个详细的保姆教程&#xff0c;只需要跟着我的步骤一步来就可以无障碍启动了。 前提条件 前提条件当然是先下…

数据库MySQL的基本操作

在Linux里面&#xff0c;我们要对数据库MySQL进行操作时&#xff08;例如修改MySQL的密码&#xff09;&#xff0c;不是直接在我们的终端上进行操作&#xff0c;而是通过终端连接进入到MySQL里面去&#xff0c;在进行操作&#xff0c;写SQL语句。 而安装C等的开发库sudo命令&a…

【深度学习驱动的蛋白质设计技术与前沿实践-从基础到尖端应用】

RoseTTAFold&#xff0c;作为 David Baker 教授团队早期开发的蛋白质结构预测工具&#xff0c;在学术界与工 业界广受认可。然而&#xff0c;随着时间推移&#xff0c;仅局限于预测已知结构的蛋白质并不能满足生物医药和生 物工程领域对创新设计的需求。这促使 David Baker 教授…

浅谈ps/2键盘

文章目录 说明基础知识操作系统中断类型工作机制优点应用 CPU对IO设备的轮询机制轮询机制的工作原理轮询机制的特点轮询机制的优、缺点与中断机制的对比 N-Key Roller&#xff08;全键无冲&#xff09;应用领域实现原理技术限制 PS/2接口简介USB设备&PS/2设备的工作机制PS/…

【在线oj系统】02-开发环境版本说明

目录 一、前置环境版本介绍 二、SpringCloud组件停更/替换/更新 服务注册和发现 服务调用和负载均衡 分布式事务 服务熔断和降级 服务链路追踪 服务网关 分布式配置管理 三、客户端版本 一、前置环境版本介绍 使用Cloud的版本决定Boot的版本&#xff0c;SpringCloud的…

大语言模型从Scaling Laws到MoE

1、摩尔定律和伸缩法则 摩尔定律&#xff08;Moores law&#xff09;是由英特尔&#xff08;Intel&#xff09;创始人之一戈登摩尔提出的。其内容为&#xff1a;集成电路上可容纳的晶体管数目&#xff0c;约每隔两年便会增加一倍&#xff1b;而经常被引用的“18个月”&#xf…

【02358单片机原理及应用】第一、二章考试复习知识点期末复习自考复习

单片机原理及应用考试复习知识点 第1章 计算机基础知识 考试知识点&#xff1a; 1、各种进制之间的转换 &#xff08;1&#xff09;各种进制转换为十进制数 方法&#xff1a;各位按权展开相加即可。 &#xff08;2&#xff09;十进制数转换为各种进制 方法&#xff1a;整…

将VM虚拟机Ubuntu20.04系统扩容

一、拓展虚拟机硬盘空间 随着学习的深入&#xff0c;虚拟机里面的内容越来越多&#xff0c;我们可能会面临着硬盘空间不足的问题。今天我们就来沉浸式体验一把给虚拟机扩容。 二、拓展VM虚拟机硬盘前须知 在硬盘拓展时需要注意的一点是有快照的话拓展不了说是&#xff0c;先删除…

分类规则挖掘(一)

目录 一、分类问题概述&#xff08;一&#xff09;分类规则挖掘&#xff08;二&#xff09;分类规则评估&#xff08;三&#xff09;分类规则应用 二、k-最近邻分类法 一、分类问题概述 动物分类&#xff1a;设有动物学家陪小朋友林中散步&#xff0c;若有动物突然从小朋友身边…

深度学习500问——Chapter08:目标检测(7)

文章目录 8.3.8 RFBNet 8.3.9 M2Det 8.3.8 RFBNet RFBNet有哪些创新点 1. 提出RF block&#xff08;RFB&#xff09;模块 RFBNet主要想利用一些技巧使得轻量级模型在速度和精度上达到很好的trade-off的检测器。灵感来自人类视觉的感受野结构Receptive Fields&#xff08;RFs…

gin-vue-blog 前后端分离项目(已经部署)

gin-vue-blog 前台&#xff1a; 后台&#xff1a; 1.数据库设计&#xff1a;https://blog.csdn.net/m0_73337964/article/details/138137629?spm1001.2014.3001.5501 2.RESTFUL API路由实现&#xff1a;https://blog.csdn.net/m0_73337964/article/details/138321631?spm1…

5G Advanced and Release18简述

5G Advanced 5G-Advanced, formally defined in 3GPP Release 18, represents an upgrade to existing 5G networks. 先睹robot总结的5G Advanced的advancements: Enhanced Mobility and Reliability: 5G-Advanced will support advanced applications with improved mobility…

【人工智能Ⅱ】实验6:目标检测算法

实验6&#xff1a;目标检测算法 一&#xff1a;实验目的与要求 1&#xff1a;了解两阶段目标检测模型 RCNN或Faster RCNN模型的原理和结构。 2&#xff1a;学习通过RCNN或Faster RCNN模型解决目标检测问题。 二&#xff1a;实验内容 常用的深度学习框架包括PyTorch和PaddleP…

一本专业130+总分400+上海交通大学819考研经验上交电子信息与通信工程上岸,真题,大纲,参考书。

今年专业课819信号系统与信号处理130&#xff0c;总分400&#xff0c;复试表现中规中矩&#xff08;初试分数查到才开始复习复试&#xff0c;希望大家汲取教训&#xff0c;初试考完就可以录取开始准备复试&#xff09;&#xff0c;交大初试比重很高&#xff0c;良心学校&#x…

STM32G474 CMAKE VSCODE FREERTOS 导入

一. 文件准备 1. 首先下载 freertos FreeRTOS - Free RTOS Source Code Downloads, the official FreeRTOS zip file release download 2. 移动 FreeRTOS-Kenel 到 moto_control 文件夹下。 3. 将 FreeRTOSConfig.h 放到 /Core/Inc 下面 4. 由于 FreeRTOSConfig.h 中使用了…

数据库(MySQL)—— 事务

数据库&#xff08;MySQL&#xff09;—— 事务 什么是事务事务操作未控制事务测试异常情况 控制事务一查看/设置事务提交方式&#xff1a;提交事务回滚事务 控制事务二开启事务提交事务回滚事务 并发事务问题脏读&#xff08;Dirty Read&#xff09;不可重复读&#xff08;Non…