MySQL入门

简介

MySQL 是一个关系型数据库管理系统,由瑞典公司 MySQL AB 开发,现在属于 Oracle 公司。它采用 SQL(结构化查询语言) 进行数据管理。

一、安装

下载地址

二、启动mysql服务

bash 复制代码
net start mysql

注意:命令行工具需要以管理员身份运行

三、连接数据库

3.1 基本语法

bash 复制代码
mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]
  • -h 参数不加,默认连接的是本地 127.0.0.1 的MySQL服务器
  • -P 参数不加,默认连接的端口号是 3306

3.2 连接方式

连接有两种方式:明文和密文

3.2.1 方式一:密码明文

3.2.2 方式二:密码隐藏

3.2.3 退出连接

退出mysql需要输入exit

四、SQL语句

sql语句有个特点:不区分大小写

4.1 数据库操作

sql 复制代码
-- 查询所有数据库
show databases;

-- 查询当前数据库
select database();

-- 使用/切换数据库
use 数据库名;

-- 创建数据库,mysql8版本中默认字符集是utf8mb4(可以存储特殊表情符号)
create database [if not exists] 数据库名 [default charset utf8mb4];

-- 删除数据库
drop database [if exists] 数据库名;

4.2 表操作

4.2.1 数据类型

此处只列举入门且常用的几种

4.2.1.1 数值类型
类型 字节 有符号范围 无符号范围 说明
TINYINT 1 -128 ~ 127 0 ~ 255 小整数
INT/INTEGER 4 -2³¹ ~ 2³¹-1 0 ~ 2³²-1 标准整数
BIGINT 8 -2⁶³ ~ 2⁶³-1 0 ~ 2⁶⁴-1 大整数
FLOAT(m,d) 4 单精度浮点数,m总位数,d小数位
DOUBLE(m,d) 8 双精度浮点数
DECIMAL(m,d) 变长 精确小数

注意:在满足业务需求的前提下,尽量选择范围小的类型节省空间。

4.2.1.2 字符串类型
类型 最大长度 说明
CHAR(n) 255字符 定长,查询快
VARCHAR(n) 65,535字符 变长,节省空间
4.2.1.3 日期时间类型
类型 格式 范围 说明
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-31 日期
TIME HH:MM:SS -838:59:59 ~ 838:59:59 时间
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 日期时间
TIMESTAMP YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 时间戳
YEAR YYYY 1901 ~ 2155 年份

4.2.2 基本语法

sql 复制代码
create table 表名(
			字段1 字段类型 [约束] [comment 字段注释],
			字段2 字段类型 [约束] [comment 字段注释],
			...
			字段n 字段类型 [约束] [comment 字段注释]
) [comment 表注释];
  • 注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号

4.2.3 约束

约束 描述 关键字
非空约束 限制字段不能为null not null
唯一约束 限制字段不能重复,允许null值且只有一个 unique
主键约束 一行数据的唯一标识,非空且唯一,每张表只能有一个主键 primary key
默认约束 指定默认值 default
外键约束 让两张表的数据建立连接,保证数据的一致性和完整性 foreign key

4.3 数据操作

4.3.1 新增(insert)

  • 向指定字段添加数据
sql 复制代码
insert into 表名 (字段名1, 字段名2) values (值1, 值2);
  • 全部字段添加数据
sql 复制代码
insert into 表名 values (值1, 值2...);
  • 批量添加数据(指定字段)
sql 复制代码
insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
  • 批量添加数据(全部字段)
sql 复制代码
insert into 表名 values (值1, 值2...), (值1, 值2...);

4.3.2 修改(update)

sql 复制代码
update 表名 set 字段名1 = 值1, 字段名2 = 值2, ...[where条件];

4.3.3 删除(delete)

sql 复制代码
delete from 表名 [where条件];

4.4 数据查询

4.4.1 查询语法

sql 复制代码
SELECT
        字段列表
FROM
        表名列表
WHERE
        条件列表
GROUP  BY
        分组字段列表
HAVING
        分组后条件列表
ORDER BY
        排序字段列表
LIMIT
        分页参数

4.4.2 基本查询

4.4.2.1 查询多个字段
sql 复制代码
select 字段1, 字段2 from 表名;
4.4.2.2 查询所有字段
sql 复制代码
select * from 表名;
4.4.2.3 设置别名
sql 复制代码
-- as可以省略
select 字段1 [as 别名1], 字段2 [as 别名2] from 表名;
4.4.2.4 去重
sql 复制代码
select distinct 字段列表 from 表名;

4.4.3 条件查询

4.4.3.1 语法
sql 复制代码
select 字段列表 from 表名 where 条件列表;
4.4.3.2 运算符

比较运算符:

比较运算符 说明
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 或 != 不等于
between ... and ... 在某个范围之内(含最小、最大值)
in(...) 在in后的列表值中多选一
like 模糊匹配(_匹配单个字符,%匹配任意个字符)
is null 是null

逻辑运算符:

逻辑运算符 说明
and 或 && 并且
or 或 || 或者
not 或 !

注意:查询为NULL的数据时,不能使用 = null 或 !=null 。得使用 is null 或 is not null。

4.4.4 聚合函数

聚合函数用于对一组值进行计算并返回单个值,通常与 GROUP BY 子句一起使用进行分组统计。
常用聚合函数:

函数 说明
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和

注意 : 聚合函数会忽略空值,对NULL值不作为统计。

4.4.5 分组查询

sql 复制代码
select 字段列表 from 表名 group by 分组字段名 [having 分组后过滤条件]

注意:

分组后,查询字段只能使用聚合函数和分组字段,其他字段无效

执行顺序:where条件 -> 聚合函数 -> having条件

4.4.6 排序查询

4.4.6.1 语法
sql 复制代码
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2, ...;

注意:多字段排序时,当第一个字段值相同时,才会根据第二个字段排序,以此类推。

4.4.6.2 排序方式
  • asc:升序(默认值)
  • desc:降序

注意:asc 可以省略。

4.4.7 分页查询

sql 复制代码
select 字段列表 from 表名 limit 起始索引, 查询记录数;

注意:

起始索引从0开始,计算公式 :起始索引 = (查询页码 - 1)* 查询记录数

如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 查询记录数

相关推荐
_Minato_2 小时前
数据库知识整理——数据库设计的步骤
数据库·经验分享·笔记·软考
hssfscv3 小时前
Mysql学习笔记——事务
笔记·学习·mysql
坐吃山猪3 小时前
BrowserUse14-源码-ScreenShot模块-整理
linux·数据库·python
廋到被风吹走3 小时前
【数据库】【MySQL】各种 JOIN 的特点及应用场景
数据库·mysql
@nengdoudou3 小时前
KingbaseES 实现 MySQL 函数 DATEDIFF
数据库·mysql
Knight_AL3 小时前
如何在 MySQL 中优雅统计“只算周一到周五”的到访数据?
数据库·mysql
咸蛋Superman3 小时前
车联网时序数据库靠谱的供应商是哪家
数据库·时序数据库
weixin_462446233 小时前
一键修复 Redis + OpenVAS 权限和启动问题
数据库·redis·bootstrap
咸蛋Superman4 小时前
靠谱的车联网时序数据库服务商有哪些
数据库·时序数据库