MySQL知识集合

本文详细介绍了MySQL中的DDL(数据定义语言)和DML(数据操纵语言),包括创建、查看、修改和删除数据库及表的操作,以及插入、更新和删除表记录的方法。此外,还涵盖了简单的DQL查询技巧,如别名使用和条件查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 SQL语句分类

  1. Data Definition Language (DDL 数据定义语⾔), 如:建库建表
  2. Data Manipulation Language(DML 数据操纵语⾔),如:对表中的记录操作增删改
  3. Data Query Language(DQL 数据查询语⾔),如:对表中的查询操作
  4. Data Control Language(DCL 数据控制语⾔),如:对⽤户权限的设置

2 DDL 操作数据库

2.1创建数据库

create database 数据库名;
-- mysql独特写法
create database if not exists数据库名;
create database 数据库名 character set 字符集;
具体操作
create database java2106;

2.2查看数据库

-- 查看所有的数据库
show databases;
-- 查看某个数据库的定义信息
show create database db3;
show create database db1;

2.3修改数据库

-- 将db3数据库的字符集改成utf8
alter database db3 character set utf8;

2.4删除数据库

-- 删除db2数据库
drop database db2;

2.5删使用数据库

-- 查看正在使⽤的数据库
select database();
-- 改变要使⽤的数据库
use db4;

⾯试题
在 MySQL 数据库软件中,有test1、test2、test3三个数据库,登录数据库之后,输⼊语句:
select database test2; 运⾏结果是什么?
● 这是⼀条错误的语句,如果要选中⼀个数据库,应⽤使⽤:use test2;

3 DDL 操作表结构

前提先使⽤某个数据库

3.1创建表

CREATE TABLE 表名 (
 字段名 1 字段类型 1,
 字段名 2 字段类型 2
);

3.2MySQL数据类型

在这里插入图片描述
在这里插入图片描述

3.3查看表

-- 查看day21数据库中的所有表
use day21;
show tables;
-- 查看student表的结构
desc student;
-- 查看day21数据库中的所有表
use day21;
show tables;
-- 查看student表的结构
desc student;
执⾏结果:
CREATE TABLE `student` (
 `id` int DEFAULT NULL,
 `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
 `birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

3.4 快速创建⼀个表结构相同的表

-- 创建s1表,s1表结构和student表结构相同
create table s1 like student;
desc s1;

3.5删除表

-- 直接删除表 s1 表
drop table s1;
-- 判断表是否存在并删除 s1 表
drop table if exists `create`;

3.6修改表结构

添加表列 ADD

-- 为学⽣表添加⼀个新的字段remark,类型为varchar(20)
alter table student add remark varchar(20);

修改列类型 MODIFY

-- 将student表中的remark字段的改成varchar(100)
alter table student modify remark varchar(100);

修改列名 CHANGE在这里插入代码片

-- 将student表中的remark字段名改成intro,类型varchar(30)
alter table student change remark intro varchar(30);

删除列 DROP

-- 删除student表中的字段intro
alter table student change remark intro varchar(30);

修改表名

-- 将学⽣表student改名成student2
rename table student to student2;

修改字符集 character set

-- 将student2表的编码修改成gbk
alter table student2 character set gbk;

DML 操作表中的数据

⽤于对表中的记录进⾏增删改操作

4.1插⼊记录

插⼊全部字段

-- 所有的字段名都写出来
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3...) VALUES (1,2,3);
-- 不写字段名
INSERT INTO 表名 VALUES (1,2,3...);

插⼊部分数据

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

4.2蠕虫复制

将⼀张已经存在的表中的数据复制到另⼀张表中

将表名2中的所有的列复制到表名1INSERT INTO 表名 1 SELECT * FROM 表名 2;
只复制部分列
INSERT INTO 表名 1(1,2) SELECT1,2 FROM student;

4.3更新表记录

UPDATE 表名 SET 列名=[WHERE 条件表达式]
# UPDATE: 需要更新的表名
# SET: 修改的列值
# WHERE: 符合条件的记录才更新
# 你可以同时更新⼀个或多个字段。
# 你可以在 WHERE ⼦句中指定任何条件。
不带条件修改数据
UPDATE 表名 SET 字段名=; -- 修改所有的⾏
带条件修改数据
UPDATE 表名 SET 字段名=WHERE 字段名=; 1
注:如果updatedelete不能执⾏,需要修改数据库安全模式:
SET SQL_SAFE_UPDATES = 0;

4.4删除表记录

DELETE FROM 表名 [WHERE 条件表达式]
# 如果没有指定 WHERE ⼦句,MySQL 表中的所有记录将被删除。
# 你可以在 WHERE ⼦句中指定任何条件
不带条件删除数据
DELETE FROM 表名;
带条件删除数据
DELETE FROM 表名 WHERE 字段名=;
使⽤ truncate 删除表中所有记录
TRUNCATE TABLE 表名; 
//truncate 和 delete 的区别
//truncate 相当于删除表的结构,再创建⼀张表

4 DQL查询表中的数据

查询不会对数据库中的数据进⾏修改,只是⼀种显示数据的⽅式。

SELECT 列名 FROM 表名 [WHERE 条件表达式]
# 1) SELECT 命令可以读取⼀⾏或者多⾏记录。
# 2) 你可以使⽤星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
# 3) 你可以使⽤ WHERE 语句来包含任何条件。

4.1简单查询

查询表所有⾏和列的数据
-- 使⽤*表示所有列
SELECT * FROM 表名;
-- 查询所有的学⽣
select * from student
查询指定列
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
-- 查询 student 表中的 name 和 age 列
select name,age from student;

4.2指定列的别名进行查询

使⽤关键字
使⽤别名的好处:显示的时候使⽤新的名字,并不修改表的结构

-- 对列指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;
-- 对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;

4.3清除重复值

查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;

4.4查询结果参与运算

某列数据和固定值运算
SELECT 列名 1 + 固定值 FROM 表名;
某列数据和其他列数据参与运算
SELECT 列名 1 + 列名 2 FROM 表名;

4.5条件查询

运算符
在这里插入图片描述
逻辑运算符
在这里插入图片描述
●in关键字

SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);
# in ⾥⾯的每个数据都会作为⼀次条件,只要满⾜条件的就会显示
具体操作
-- 查询id是1或3或5的学⽣
select * from student where id in(1, 3, 5);
-- 查询id不是1或3或5的学⽣
select * from student where id not in(1, 3, 5);

●like关键字

# LIKE 表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

●MySQL通配符
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值