(课堂笔记)MySQL 基础(对比 Oracle 学习)

本文介绍了MySQL客户端工具(SQLYog/Navicat/Dbeaver)的连接配置方法(主机192.168.5.100,用户root,密码123456),对比了MySQL 5.7和8.0版本特性差异。


详细说明了MySQL基础操作:数据库/表创建、增删改查语法,以及与Oracle在数据类型、函数(如日期处理、分页查询)、程序块语法等方面的主要区别。


重点包括:MySQL使用LIMIT分页而非ROWNUM,日期函数如NOW()替代SYSDATE,存储过程使用DELIMITER定义分隔符等特性差异。
关联阅读推荐


MySQL 函数速查表:快速通过在线SQL测试


Oracle 查看表结构的方法(MySQL vs Oracle 查看表结构对比)


Mysql


客户端

提供开发环境给开发者连接 Mysql 写代码的

SQLYog、Navicat、Dbeaver 等


下载并安装 SQLYog

连接信息

主机名:node100

主机服务器:192.168.5.100

用户:root

密码:123456

点击"测试连接",没问题之后点击"连接"(弹出框点击"确认")


Mysql 常用版本

  • Mysql 5.7:老版本,兼容性较好(函数不是很齐全,不支持开窗)

  • Mysql 8.0:新版本,函数会比较全(支持开窗函数)

Mysql 作为传统关系型数据库,语法层面跟 Oracle 基本上大同小异


当前连接到的 Mysql 服务器中,默认只有系统数据库:information_schemamysqlperformance_schemasys


笔记中 lee 只是示例数据库名,你需要根据自己的实际环境创建或使用对应的数据库


SELECT * FROM 数据库名.表名 这种写法要求该数据库必须存在

基础语法

Oracle Mysql
SELECT * FROM SCOTT.EMP;(SCOTT 叫用户名/模式名/Schema) SELECT * FROM lee.t_id;(lee 叫数据库名)
sql 复制代码
-- 1. 创建数据库
CREATE DATABASE lee;

-- 2. 切换到 lee 数据库
USE lee;

-- 3. 创建 t_id 表
CREATE TABLE t_id (
    id INT
);

-- 4. 插入测试数据
INSERT INTO t_id VALUES (1), (2), (3);

-- 5. 查询
SELECT * FROM lee.t_id;

数据类型

  • 数值:INT 整型、FLOAT 浮点型、DOUBLE 双精度浮点型

  • 字符串:VARCHAR(X) 可变长度、CHAR(X) 固定长度

  • 日期:DATE / TIMESTAMP

示例:创建一张学生信息表

sql

sql 复制代码
USE A2608;
CREATE TABLE T_STUDENT(
    SNO INT,
    SNAME VARCHAR(100),
    CLASS VARCHAR(100),
    SCORE FLOAT
);

增删改查

增(INSERT)------ 不需要提交/回滚

sql

sql 复制代码
INSERT INTO T_STUDENT VALUES 
(101,'zhangsan','yuwen',100),
(101,'zhangsan','shuxue',79.5),
(101,'zhangsan','yingyu',88);

INSERT INTO T_STUDENT SELECT * FROM T_STUDENT;

改(UPDATE)------ 不需要提交/回滚

sql

sql 复制代码
UPDATE T_STUDENT
SET SCORE = SCORE + 10,
    SNO = 102
WHERE CLASS = 'yuwen';

删(DELETE)------ 不需要提交/回滚

sql

sql 复制代码
DELETE FROM T_STUDENT WHERE SNO = 101;
TRUNCATE TABLE T_STUDENT;
DROP TABLE T_STUDENT;

查(SELECT)

sql

sql 复制代码
SELECT * FROM T_STUDENT;

区别点

1. Mysql 没有对应的伪列 / 伪表

sql

sql 复制代码
SELECT ROWID, ROWNUM FROM T_STUDENT;  -- 没有的
SELECT 'ABC';

2. 数据类型差异

Oracle Mysql
VARCHAR2(X) VARCHAR(X)
NUMBER(X,Y) INT / FLOAT / DOUBLE
DATE DATE / TIMESTAMP

3. 函数差异

Oracle Mysql
SYSDATE NOW() / CURRENT_DATE()
UNIX_TIMESTAMP()
FROM_UNIXTIME()
TO_DATE / TO_CHAR DATE_FORMAT
日期A - 日期B DATEDIFF(日期A, 日期B)
日期A - 天数 DATE_SUB(日期, INTERVAL N DAY)
日期A + 天数 DATE_ADD(日期, INTERVAL N DAY)
REGEXP_SUBSTR SUBSTRING_INDEX
WM_CONCAT GROUP_CONCAT
|| / CONCAT CONCAT(X,Y,Z)
分页查询 ROWNUM LIMIT M,N

sql

sql 复制代码
SELECT NOW(),
       CURRENT_DATE(),
       UNIX_TIMESTAMP(),
       DATE_FORMAT(NOW(),'%Y/%m/%d'),
       FROM_UNIXTIME(1);

SELECT SUBSTRING_INDEX('A-B-C','-',2);
SELECT * FROM T_STUDENT LIMIT 0,1;

4. 程序块的区别

示例:往 LEE.T_ID 表全量插入 1~100

sql

sql 复制代码
DELIMITER $$$
DROP PROCEDURE IF EXISTS P_AAA;
CREATE PROCEDURE P_AAA()
BEGIN

    TRUNCATE TABLE LEE.T_ID;

    SET @A = 1;
    WHILE @A <= 100 DO
        INSERT INTO LEE.T_ID VALUES(@A);
        SET @A = @A + 1;
    END WHILE;

END$$$
DELIMITER ;

-- 调用
CALL LEE.P_AAA();

-- 验证
SELECT * FROM LEE.T_ID;

程序块的分隔符(自定义的)$$$ 可以重复使用

相关推荐
MY_TEUCK3 小时前
【2026最新版Linux安装Mysql】CentOS 7 安装 MySQL 8.4.9 完整流程(RPM 手动安装+避坑+面试)
linux·mysql·centos
六月雨滴3 小时前
Oracle 数据库 RMAN 架构与核心概念
数据库·oracle·dba
川石课堂软件测试3 小时前
接口测试常见面试题及答案
python·网络协议·mysql·华为·单元测试·prometheus·harmonyos
oradh3 小时前
Oracle数据库控制文件的概述
数据库·oracle·控制文件·oracle控制文件·oracle基础知识·oracle数据库控制文件概述
江湖中的阿龙4 小时前
【MySQL 深度进阶】从底层架构到实战调优:全面打通核心机制与底层原理
mysql·innodb
zxrhhm4 小时前
Oracle INSERT ALL 多表多行插入语法详解
数据库·oracle
zhulangfly4 小时前
# Spring Boot + MinIO + MySQL + Vue 实现视频管理与流式播放
vue.js·spring boot·mysql
罗超驿4 小时前
14.MySQL索引底层原理:从数据结构到B+树的深度解析
数据结构·b树·mysql
罗超驿4 小时前
15.面试高频考点:MySQL索引底层原理与实战要点全梳理
mysql·面试·职场和发展