01-MySQL 基础篇笔记

news2025/1/9 18:40:07

一、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.coloradmin.cn/o/1642235.html

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

相关文章

IoTDB 入门教程 基础篇⑨——TsFile导入导出工具

文章目录 一、前文二、准备2.1 准备导出服务器2.2 准备导入服务器 三、导出3.1 导出命令3.2 执行命令3.3 tsfile文件 四、导入4.1 上传tsfile文件4.2 导入命令4.3 执行命令 五、查询六、参考 一、前文 IoTDB入门教程——导读 数据库备份与迁移是数据库运维中的核心任务&#xf…

最小费用流相位解包裹

% test_cunwrap.m % % Matlab script to test Costantinis unwrapping % Author: Bruno Luong <brunoluong@yahoo.com> % History: % Orginal: 27-Aug-2009clear all; close all; clc; I1=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.public_files\博士阶段\小…

[stm32-1]LED闪烁LED流水灯蜂鸣器

1、LED闪烁&LED流水灯&蜂鸣器 1.使用RCC开启GPIO时钟 2.使用GPIO_Init函数初始化GPIO 3.使用输入或输出函数控制GPIO口 RCC常用的3个库函数&#xff1a; void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); void RCC_APB2PeriphClockC…

C++中的reverse_iterator迭代器结构设计

目录 reverse_iterator迭代器结构设计 reverse_iterator迭代器基本结构设计 operator*()函数 operator()函数 operator->()函数 operator!()函数 rbegin()函数 rend()函数 operator--()函数 operator()函数 测试代码 const_reverse_iterator迭代器设计 reverse…

【数据结构】第四讲:双向链表

目录 一、链表的分类 二、双向链表的结构及实现 1.带头双向链表的结构 2.创建节点 3.初始化 4.尾插 5.打印 6.头插 7.尾删 8.头删 9.在pos位置之后插入数据 10.删除pos节点 11.查找 12.销毁 个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数…

java基于云计算的SaaS医院his信息系统源码 HIS云平台源码

目录 云HIS功能模块 1、预约挂号&#xff1a; 2、药库管理&#xff1a; 3、门诊医生站&#xff1a; 4、门诊费用&#xff1a; 5、药房管理&#xff1a; 6、治疗室&#xff08;门诊护士工作站&#xff09;&#xff1a; 7、统计分析&#xff1a; 8、财务管理&#xff1a;…

vue 时间轴页面 自己的写法 欢迎交流指正

<div class"first-box"><!--贯穿线--><div class"vertical-line-wrap"><div class"vertical-line"></div><div class"vertical-line-arrow"></div></div><!--开始--><div c…

数据存储-SD卡存储

手机自带内存较小&#xff0c;不适合存储大量数据&#xff0c;一般&#xff0c;大量数据都会采用外部存储&#xff0c;如&#xff1a;服务器存储、SD卡存储、数据库存储等。 本文讲解在SD卡上存储数据&#xff0c;并实现对数据的读和写。 整体思路&#xff1a;静态权限声明、动…

第五篇:通信脉络:探索计算机外设与总线体系的精髓

通信脉络&#xff1a;探索计算机外设与总线体系的精髓 1 引言 在这个技术日新月异的时代&#xff0c;理解计算机系统的基本构成要素 —— 总线和外设 —— 对于每个从事技术工作的人来说都是至关重要的。这些组件不仅是计算机通信的基石&#xff0c;也直接影响着系统的性能、效…

非对称齿轮的跨棒距算的对不对

前面有一期咱们聊了非对称齿轮《》&#xff0c;非对称齿轮的齿厚测量一般都为跨棒距。最近研究了下计算方法&#xff0c;对计算结果的正确性做了下验证。 在MATLAB中编制了相关的计算程序&#xff1a; 齿轮的模数4&#xff0c;左侧分度圆压力角25&#xff0c;右侧分度圆压力角…

CARIS12如何设置kmall船型文件?

最近我们对船上多波束EM2040D的采集软件进行了升级&#xff0c;从SIS4.3升级至SIS5。当使用CARIS11/12处理kmall数据时&#xff0c;发现往返横切海底线性目标时有10-20m错位。 ​编辑​ 我们开始怀疑SIS5采集的设置有问题&#xff0c;似乎跟时间延迟有关系。但是改了如下图两…

JAVA系列 小白入门参考资料 接口

目录 接口 接口的概念 语法 接口使用 接口实现用例 接口特性 实现多个接口和实现用例 接口间的继承 接口 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本上的 USB 口&#xff0c;电源插座等。 电脑的 USB 口上&am…

初学python记录:力扣1235. 规划兼职工作

题目&#xff1a; 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作&#xff0c;每份工作预计从 startTime[i] 开始到 endTime[i] 结束&#xff0c;报酬为 profit[i]。 给你一份兼职工作表&#xff0c;包含开始时间 startTime&#xff0c;结束时间 endTime …

水仙花数问题

问题描述&#xff1a; 求出0&#xff5e;100000之间的所有“水仙花数”并输出。 “水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和确好等于该数本身&#xff0c;如:153&#xff1d;1^3&#xff0b;5^3&#xff0b;3^3&#xff0c;则153是一个“水仙花数”。 #in…

对链表进行插入排序(详细解析)

对链表进行插入排序&#xff08;详解&#xff09; 题目&#xff1a; 对链表进行插入排序 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&a…

CUDA和显卡驱动

1.安装显卡驱动 https://www.nvidia.com/download/index.aspx?langen-us 由于我的显卡是RTX4060&#xff0c;因此先选择RTX40系列&#xff0c;然后选择RTX4060&#xff0c;进行安装 2.查看显卡对应的CUDA CUDA安装地址&#xff1a;https://developer.nvidia.com/cuda-toolk…

数据库(MySQL)—— 事务

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

小红书流量机制解析

小红书流量机制解析 前言 大家好&#xff0c;我自2020年5月起&#xff0c;开始专注于小红书平台&#xff0c;帮助品牌商家在小红书上经营。在这段时间里&#xff0c;我深入研究了小红书的流量机制&#xff0c;并结合自己的实践经验&#xff0c;为大家带来了这份全网最硬核的小…

【面试经典 150 | 字典树】实现 Trie (前缀树)

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;前缀树 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回…

复旦微JFM7VX690计算后IO接口模块,用于雷达信号处理、数据处理等需要高速密集计算的应用场景

计算后IO接口模块 1 介绍 1.1 产品概述 计算后IO接口模块主要由复旦微JFM7VX690型FPGA、国产以太网收发器YT8521、国产BMC芯片GD32F450、国产CPLD芯片EF2L45BG256B、国产内存颗粒等主要芯片组成&#xff0c;采用标准6U VPX尺寸设计。 本计算后IO接口模块主要用于雷达信号处…