【MySQL】基础操作

数据库的操作

查看所有数据库:

SHOW DATABASES;(注意这里是 databases,多了个 s)

mysql 不区分大小写,所以 show databases; 是一样的。
另外,在命令行窗口操作时,可以使用上下方向键调用前面已经使用过的命令。

查看所有数据库


创建数据库:

CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER SET 字符集名] [COLLATE 排序规则名];

其中 [ ] 是可选项
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的校验规则
例如创建学生库 student:

创建数据库

再次使用上面这条语句时,就会发生报错:

所以我们可以在创建数据库时加上 if not exists 避免这种情况:

if not exists

加上后就变成,如果数据库 student 不存在就创建,存在则不会创建。

设置字符集:
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ c。

如果系统没有 db_test 的数据库,则创建一个使用 utf8mb4 字符集的 db_test 数据库,如果有则不创建:

指定字符集

注意:MySQL 的 utf8 编码不是真正的 utf8,没有包含某些复杂的中文字符。MySQL 真正的 utf8 是使用 utf8mb4,建议使用 utf8mb4。


使用数据库:

USE 数据库名;
要对数据库进行后续操作,需要先选择这个数据库。

使用数据库

如果对数据库操作了很多语句,不知道当前使用的是哪个数据库,我们可以使用下面这条语句查看:

database函数


删除数据库:

DROP DATABASE [IF EXISTS] 数据库名;
同理,IF EXISTS 代表数据库存在就删除。

删库

注意:这就是常说的删库跑路,危险很大,谨慎使用。


常用数据类型

在 MySQL 中,有三种主要的类型:Number(数字)、Text(文本)和 Date/Time(日期/时间)类型。

数值类型:

数据类型大小说明对应java类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M,D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
DOUBLE(M,D)8字节Double
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
NUMERIC(M,D)M/D最大值+2和DECIMAL一样BigDecimal

文本类型:

数据类型大小说明
VARCHAR (SIZE)0-65,535字节可变长度字符串
TEXT0-65,535字节长文本数据
MEDIUMTEXT0-16 777 215字节中等长度文本数据
BLOB0-65,535字节二进制形式的长文本数据

日期类型:

数据类型描述
DATE()日期。格式:YYYY-MM-DD
支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’
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-09 03:14:07’
TIME()时间。格式:HH:MM:SS
支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
YEAR()2 位或 4 位格式的年。
4 位格式所允许的值:1901 到 2155。
2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

表的操作

查询当前数据库的所有表: SHOW TABLES;
注意:查询表以及后面对库里的表进行操作时,需要先使用该数据库(use 数据库名;)

查看表


创建表:

格式:

CREATE TABLE 表名(
	   字段1     字段1类型 [COMMENT 字段1注释],
       字段2     字段2类型 [COMMENT 字段2注释],
       字段3     字段3类型 [COMMENT 字段3注释],
       ………………
       字段n     字段n类型 [COMMENT 字段n注释]
)[COMMENT 表注释]

注意: […] 为可选参数,最后一个字段后面没有逗号。

例如创建下面这张 user 表:

创建表


查看表结构: desc 表名;

desc


查询指定表的建表语句: show create table 表名;

查询建表语句


表操作—添加字段:

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

例如,为上面的 user 表添加一个地址 address 字段:

修改表结构


表操作—修改字段:

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

例如将 user 表中的字段 name 替换成 username:

alter -change


表操作—删除字段:

ALTER TABLE 表名 DROP 字段名;

例如,将 user 表中的 address 字段删除:

alter --drop


表操作—修改表名:

ALTER TABLE 表名 RENAME TO 新表名;

例如将 user 表名修改为 users:

修改表名


表操作—删除表:

DROP TABLE [IE EXISTS] 表名;
和删库一个道理,表和表里的数据都会被删除。
还有另外一种,删除指定表,并重新创建该表:
TRUNCATE TABLE 表名;
相当于清空表里的数据,留下表结构。

数据操纵语言

添加数据:

  1. 给指定字段添加数据:

INSERT INTO 表名 (字段1, 字段2, ……) VALUES (值1, 值2, ……);
在这里插入图片描述

  1. 给全部字段添加数据:

INSERT INTO 表名 VALUES (值1, 值2, ……);
在这里插入图片描述

  1. 批量添加数据:

INSERT INTO 表名 (字段1, 字段2, ……) VALUES (值1, 值2, ……), (值1, 值2, ……), (值1, 值2, ……);

INSERT INTO 表名 VALUES (值1, 值2, ……), (值1, 值2, ……), (值1, 值2, ……);
在这里插入图片描述

注意:

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期型数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

修改数据:

UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2, ……[WHERE 条件];
注意: 修改语句的条件可以有,可以没有,如果没有条件,则会修改整张表的所有数据。

例如,把张三的年龄修改成28:

在这里插入图片描述

例如,把李四的年龄改成 31,性别改成女:

在这里插入图片描述

例如,把 user 表中的性别全改成男:

在这里插入图片描述


删除数据:

DELETE FROM 表名 [WHERE 条件];
delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
delete 语句不能删除某一个字段的值(可使用 update)。

例如,删除名叫 赵六 的数据:

在这里插入图片描述

例如,删除所有数据:

在这里插入图片描述


数据查询语言

基础查询:

查询指定字段:select 字段1, 字段2…… from 表名;

例如,查询 name, gender 字段:

在这里插入图片描述

查询所有字段:select * from 表名;
在实际开发中,不建议使用 * 通配符,一是效率不高,二是上面指定字段的直观。

在查询的语句中,我们可以给字段添加别名,使用 AS 关键字,例如:

在这里插入图片描述

在上面的查询结果中,发现有两条重复记录,我们可以使用 distinct 关键字去掉这些重复的数据(只是结果不显示,并不是把表里的数据删除):

在这里插入图片描述


条件查询:

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件:

比较运算符功能逻辑运算符功能
>大于AND 或 &&并且(多个条件同时成立)
>=大于等于OR 或 ||或者(多个条件任意一个成立)
<小于NOT 或 !非,不是
<=小于等于
=等于
<> 或 !=不等于
BETWEEN…AND…在某个区间内,包含两端
IN(…)在 in 之后列表中的值
LIKE 占位符模糊匹配(_ 匹配单个字符,%匹配任意个字符)
IS NULL是 NULL,同样还有 IS NOT NULL

例如,查询年龄大于等于 22 的信息:

在这里插入图片描述

例如,查询年龄在 18 到 28 之间的用户信息:

在这里插入图片描述

例如,查询年龄为 18 ,22 ,28 其中的用户信息:

在这里插入图片描述

例如,查询张开头的用户信息:

在这里插入图片描述

例如,查询名字中包含张字的用户信息:

在这里插入图片描述

% 代表0个和多个字符,_ 代表一个字符,同理查询第二个字为张的名字就可以使用 like “_张%”。


在讲解分组查询前,先看一下聚合函数:

聚合函数就是将一列数据作为一个整体,进行纵向计算。

注意: null 值不参与计算。
常见聚合函数:

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

语法:

SELECT 聚合函数(字段列表)FROM 表名;

例如,查询 user 表有多少用户:

在这里插入图片描述

例如,查询年龄最小的用户:

在这里插入图片描述

例如,统计 user 表的平均年龄:

在这里插入图片描述


分组查询:
格式:

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

注意:where 与 having 区别
执行时机不同: where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤。
判断条件不同: where 不能对聚合函数进行判断,而 having 可以。

例如,根据性别分组,统计男用户和女用户的数量:

在这里插入图片描述

例如,根据性别分组,计算男用户和女用户的平均年龄:

在这里插入图片描述

例如,查询年龄小于 40 的用户,并根据性别分组,返回男用户或女用户 数量大于 3 :

在这里插入图片描述


排序查询:

SELECT 字段列表 FROM 表名 ORDER BY 字段 1 排序方式 1, 字段2 排序方式 2 …;

排序方式:
ASC:升序(默认)
DESC:降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

例如,根据年龄排序:

在这里插入图片描述


分页查询:

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

例如:

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值