MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用程序中。这份笔记涵盖了MySQL的基本操作和一些典型案例,对于初学者或者需要复习MySQL知识的人来说非常有价值。
笔记提到了Oracle开启监听器的命令`Lsnrctl start`,这在MySQL中并不适用,因为MySQL使用的是不同的服务管理工具,例如`mysqld`或`mysqld_safe`来启动服务器。然而,这里可能是在对比Oracle和MySQL的操作差异。
在MySQL中,我们不使用`rownum`进行分页,而是使用`LIMIT`关键字配合`OFFSET`。例如,如果我们想从第5页开始,每页显示3条记录,可以使用如下语句:
```sql
SELECT * FROM table_name ORDER BY some_column LIMIT 3 OFFSET (5 - 1) * 3;
```
在MySQL中,创建数据库和使用数据库的命令分别为:
```sql
CREATE DATABASE database_name;
USE database_name;
```
创建表的语法如下,展示了如何定义主键和自增列:
```sql
CREATE TABLE dept (
Deptno INT PRIMARY KEY AUTO_INCREMENT,
Dname VARCHAR(20),
Loc VARCHAR(20)
);
```
查看表结构可以使用`DESCRIBE`命令:
```sql
DESCRIBE table_name;
```
插入数据时,确保列名和对应的值一一对应:
```sql
INSERT INTO dept (Dname, Loc) VALUES ('DepartmentName', 'Location');
```
在MySQL中,获取当前日期和时间可以使用`CURRENT_DATE()`或`NOW()`函数:
```sql
SELECT CURRENT_DATE();
SELECT NOW();
```
执行批处理脚本,我们可以使用`source`命令:
```sql
SOURCE filename.sql;
```
对于分页查询,笔记中给出了两种方法。一种是直接使用`LIMIT`和`OFFSET`,另一种是通过子查询实现。例如:
```sql
-- 直接分页
SELECT * FROM dept ORDER BY deptno DESC LIMIT 3 OFFSET 3;
-- 子查询分页
SELECT * FROM (
SELECT * FROM dept ORDER BY deptno DESC
) AS subquery LIMIT 3 OFFSET (current_page - 1) * per_page;
```
预处理语句在MySQL中用于提高效率和安全性,避免SQL注入。以下是预处理的例子:
```sql
PREPARE stmt FROM 'INSERT INTO dept(dname, loc) VALUES (?, ?)';
SET @dname = 'li';
SET @loc = 'xin';
EXECUTE stmt USING @dname, @loc;
DEALLOCATE PREPARE stmt;
```
在MySQL中,调用存储过程不需要`AS`或`IS`,只需直接写过程名:
```sql
CALL procedure_name(parameters);
```
关于字符串操作,MySQL中的`SUBSTRING`函数是从1开始计数的,类似Oracle中的`INSTR`函数,但它们的作用不同。`SUBSTRING`用于提取字符串的一部分,而`INSTR`用于查找子字符串在字符串中的位置。
笔记中提到的`CREATE PROCEDURE`创建了一个存储过程,展示了如何声明变量和处理循环。在MySQL中,这样的过程可以帮助我们进行复杂的逻辑操作。
总结来说,这份笔记包含了MySQL的基本操作,如数据库和表的创建、数据插入、查询、分页、存储过程以及字符串处理等,为学习和复习MySQL提供了一套全面的指南。