(课堂笔记)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 等连接信息主机名node100主机服务器192.168.5.100用户root密码123456点击“测试连接”没问题之后点击“连接”弹出框点击“确认”Mysql 常用版本Mysql 5.7老版本兼容性较好函数不是很齐全不支持开窗Mysql 8.0新版本函数会比较全支持开窗函数Mysql 作为传统关系型数据库语法层面跟 Oracle 基本上大同小异基础语法OracleMysqlSELECT * FROM SCOTT.EMP;SCOTT 叫用户名/模式名/SchemaSELECT * FROM lee.t_id;lee 叫数据库名sqlSHOW DATABASES; -- 查看所有数据库 CREATE DATABASE 数据库名; -- 创建数据库 USE 数据库名; -- 切换到目标数据库 SHOW TABLES; -- 查看当前数据库下所有的表 CREATE TABLE 表名( 字段名1 字段类型1, 字段名2 字段类型2... ); -- 创建表数据类型数值INT 整型、FLOAT 浮点型、DOUBLE 双精度浮点型字符串VARCHAR(X) 可变长度、CHAR(X) 固定长度日期DATE / TIMESTAMP示例创建一张学生信息表sqlUSE A2608; CREATE TABLE T_STUDENT( SNO INT, SNAME VARCHAR(100), CLASS VARCHAR(100), SCORE FLOAT );增删改查增INSERT—— 不需要提交/回滚sqlINSERT 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—— 不需要提交/回滚sqlUPDATE T_STUDENT SET SCORE SCORE 10, SNO 102 WHERE CLASS yuwen;删DELETE—— 不需要提交/回滚sqlDELETE FROM T_STUDENT WHERE SNO 101; TRUNCATE TABLE T_STUDENT; DROP TABLE T_STUDENT;查SELECTsqlSELECT * FROM T_STUDENT;区别点1. Mysql 没有对应的伪列 / 伪表sqlSELECT ROWID, ROWNUM FROM T_STUDENT; -- 没有的 SELECT ABC;2. 数据类型差异OracleMysqlVARCHAR2(X)VARCHAR(X)NUMBER(X,Y)INT / FLOAT / DOUBLEDATEDATE / TIMESTAMP3. 函数差异OracleMysqlSYSDATENOW() / CURRENT_DATE()无UNIX_TIMESTAMP()无FROM_UNIXTIME()TO_DATE / TO_CHARDATE_FORMAT日期A - 日期BDATEDIFF(日期A, 日期B)日期A - 天数DATE_SUB(日期, INTERVAL N DAY)日期A 天数DATE_ADD(日期, INTERVAL N DAY)REGEXP_SUBSTRSUBSTRING_INDEXWM_CONCATGROUP_CONCAT|| / CONCATCONCAT(X,Y,Z)分页查询 ROWNUMLIMIT M,NsqlSELECT 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~100sqlDELIMITER $$$ 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;程序块的分隔符自定义的$$$ 可以重复使用