《MySQL学习笔记(详尽版)》是一本全面记录和整理MySQL数据库管理系统学习过程与心得的作品。书中涵盖了从基础操作到高级应用的各项知识点,适合不同层次的学习者参考使用。
### MySQL学习笔记(详细)
#### 一、数据库操作
MySQL是一种关系型数据库管理系统,通过一系列命令来进行数据库的管理和数据的处理。以下是一些常见的数据库操作命令:
- **连接MySQL服务器**:
- `mysql -u root -p`
- 输入密码后即可连接。
- **修改用户密码**:
- `update user set password=password(123456) where user=root;`
- `flush privileges;` 刷新权限以便新密码生效
- **显示所有数据库**:
- `show databases;`
- **打开某个数据库**:
- `use dbname;`
- **显示数据库中的所有表**:
- `show tables;`
- **显示表的列信息**:
- `describe user;`
- **创建数据库**:
- `create database name;`
- **选择数据库**:
- `use databasename;`
- **退出MySQL**:
- `exit;`
#### 二、DDL(数据定义语言)
- 定义管理数据对象,包括数据库和表等。
- 常用命令:`CREATE`用于创建数据库或表;`DROP`用于删除数据库或表;以及`ALTER`用于修改数据库或表的结构。
#### 三、DML(数据操作语言)
- 操作数据库中包含的数据。
- 常用命令包括 `INSERT` 插入数据,`UPDATE` 更新数据和 `DELETE` 删除数据。
#### 四、DQL(数据查询语言)
- 查询数据库中的数据。主要使用 `SELECT` 语句进行查询操作。
#### 五、DCL(数据控制语言)
- 管理数据库的语言。
- 常用命令包括:授权 (`GRANT`),撤销权限 (`REVOKE`) ,提交事务 (`COMMIT`) 和回滚事务 (`ROLLBACK`)。
#### 六、MySQL函数
##### 字符串函数
- `CONCAT()` 连接字符串
- `SUBSTRING()` 获取子串
- `UPPER()`, `LOWER()` 转换大小写
- `TRIM()` 去除两端空格
- `LENGTH()` 返回字符串长度
##### 数学函数
- 包括绝对值 (`ABS()`),幂运算(`POW()`)、随机数生成(`RAND()`) 和四舍五入(`ROUND()`)
##### 日期和时间函数
- 当前日期和时间:`NOW()`
- 增加日期: `DATE_ADD()`
- 时间戳差值计算: `TIMESTAMPDIFF()`
##### 其他常用函数
- 条件判断 (`IF`) 和多条件判断(`CASE` 语句)
- 计数(`COUNT()`), 求和(`SUM()`), 平均值(`AVG()`)
#### 七、事务与索引
**事务**
- 特性:原子性 (Atomicity) ,一致性(Consistency),隔离性(Isolation),持久性(Durability)
- 常用命令:
- 开始事务 (`START TRANSACTION`)
- 提交事务(`COMMIT` )
- 回滚事务 (`ROLLBACK` )
**索引**
索引可以提高数据检索速度。类型包括唯一索引、主键索引和全文索引等。
- 创建: `CREATE INDEX index_name ON table_name (column_name);`
- 删除: `DROP INDEX index_name ON table_name;`
#### 八、权限设计
**用户管理**
- 用户创建(`CREATE USER`)
- 密码设置 (`SET PASSWORD FOR user@localhost = PASSWORD(password)`)
- 授予权限(`GRANT ALL PRIVILEGES ON *.* TO username@localhost`)
- 查看权限: `SHOW GRANTS FOR username@localhost;`
**权限级别**
数据库级别的、表级别的和列级的权限。
#### 九、JDBC
Java Database Connectivity (JDBC) 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。
- 主要组件: JDBC驱动(实现接口), Connection表示到数据库连接 , Statement发送SQL语句到数据库 ,ResultSet存储查询结果。
#### 十、列类型及属性
**数值类型**
- `INT` 整数
- `FLOAT`, 浮点数
- `DECIMAL` 定点数
**字符串类型**
- 变长(VARCHAR)和固定长度字符型 (CHAR) 类型的字段。
**日期时间类型**
包括DATE, DATETIME 和 TIMESTAMP。
**数据字段属性**
如无符号声明(`UNSIGNED`),零填充 (`ZEROFILL`), 自动增长 (`AUTO_INCREMENT`), 允许或禁止空值( `NULL`, `NOT NULL`), 默认值( DEFAULT ), 主键 ( PRIMARY