### MySQL基础知识及操作指南 #### 一、MySQL配置与启动 **配置文件**: 在MySQL的配置过程中,`my.ini` 文件扮演着至关重要的角色。它主要用于定义MySQL服务器的各种配置选项。 - **`[mysqld]`**: 这是服务端配置的部分。 - **`port:3306`**: 指定了MySQL服务器监听的端口号,默认情况下是3306。 - **`basedir=安装目录`**: 定义了MySQL的安装目录路径。 - **`datadir=数据存放目录`**: 数据库的数据文件存储位置。 - **`character-set-server=utf8`**: 设置服务器使用的字符集,这里设置为UTF-8。 - **`default-storage-engine=INNODB`**: 默认存储引擎设置为InnoDB。 - **`max_connections=最大连接数`**: 最大连接数的设定,用于限制同时连接到MySQL服务器的客户端数量。 **启动与停止MySQL服务**: - `net stop/start mysql服务名`: 分别用于停止和启动MySQL服务。 - `mysql -h localhost -P 3306 -u username -p`: 连接到MySQL服务的命令,其中 `-h` 表示主机名,`-P` 是端口,`-u` 用户名,`-p` 后面跟的是密码输入提示符。 #### 二、基本MySQL操作命令 - **查看数据库列表**: `show databases;` - **选择数据库**: `use 数据库名;` - **列出当前数据库中的所有表**: `show tables;` 或者 `show tables from 数据库名;` - **查看当前所在的数据库**: `select database();` - **获取MySQL版本信息**: `select version();` - **退出MySQL命令行**: `exit;` #### 三、MySQL中的运算符与函数 **运算符**: 在MySQL中,`+` 的作用取决于操作数的类型。 - 如果两个操作数都是数值型,则执行加法运算。 - 如果其中一个操作数是字符型,则尝试将其转换为数值型。转换成功则继续进行加法运算;转换失败则将字符型数值视为0。 - 如果任一操作数为`NULL`,则结果也为`NULL`。 **函数**: - **字符函数**: - `Length()`: 返回字符串的长度。 - `Concat()`: 连接两个或多个字符串。 - `Upper()`: 将字符串转换为大写。 - `Lower()`: 将字符串转换为小写。 - `Substr()`: 提取字符串的一部分。 - `Instr()`: 查找子字符串在字符串中的位置。 - `Trim()`: 删除字符串两端的空格。 - `Lpad()`: 左填充字符串。 - `Rpad()`: 右填充字符串。 - `Replace()`: 替换字符串中的某部分。 - **数学函数**: - `Round()`: 四舍五入。 - `Ceil()`: 向上取整。 - `Floor()`: 向下取整。 - `Truncate()`: 固定小数位数。 - `Mod()`: 求模运算。 - **日期函数**: - `Now()`: 获取当前日期和时间。 - `Curdate()`: 获取当前日期。 - `Curtime()`: 获取当前时间。 - `Year()`: 提取年份。 - `Month()`: 提取月份。 - `Day()`: 提取日期中的天数。 - `Hour()`: 提取小时数。 - `Minute()`: 提取分钟数。 - `Second()`: 提取秒数。 - `Monthname()`: 获取月份名称。 - `Str_to_date()`: 字符串转日期。 - `Date_format()`: 格式化日期。 - `Date_diff()`: 计算两个日期之间的差值。 **其他函数**: - `Version()`: 获取MySQL版本信息。 - `Database()`: 获取当前所选数据库的名称。 - `User()`: 获取当前用户的详细信息。 **分组函数**: - `Sum()`: 计算数值总和。 - `Avg()`: 计算平均值。 - `Max()`: 获取最大值。 - `Min()`: 获取最小值。 - `Count()`: 计算记录数。 - 特别注意: 所有的分组函数都会忽略`NULL`值。 **流程控制函数**: - `If()`: 根据条件执行不同的操作。 - `Case` 表达式: 提供更复杂的条件判断。 #### 四、查询操作 **联合查询** (`UNION`): - 用于将多个查询结果合并为一个结果集。 - 要求每个查询语句的列数必须相同。 - 默认情况下会自动去除重复行。如果希望保留所有行,可以使用`UNION ALL`。 - 应用场景: 当需要从多个表中获取一致的信息,但这些表之间没有直接的关系时。 #### 五、数据操作语言 (DML) **插入语句** (`INSERT`): - 语法: `INSERT INTO 表名 (列名,...) VALUES (值1,...);` - 插入的值必须与列的类型相匹配或兼容。 - 可以指定具体的列名并设置对应的值。 **更新语句** (`UPDATE`): - 语法: `UPDATE 表名 SET 列=新值, 列=新值… WHERE 筛选条件;` **删除语句** (`DELETE` 和 `TRUNCATE TABLE`): - `DELETE FROM 表名 WHERE 筛选条件;` - `TRUNCATE TABLE 表名;` - `DELETE` 可以结合`WHERE`子句来删除特定记录,而`TRUNCATE TABLE`则清空整个表。 - `TRUNCATE TABLE` 不支持`WHERE`子句。 - `TRUNCATE TABLE` 操作通常更快,因为它不触发日志记录或索引更新等操作。 - `DELETE` 可以被回滚,而`TRUNCATE TABLE`则不可以。 #### 六、数据定义语言 (DDL) **库的管理**: - 创建: `CREATE DATABASE [IF NOT EXISTS] 库名;` - 修改: `ALTER DATABASE 库名 CHARACTER SET utf8;` - 删除: `DROP DATABASE IF EXISTS 库名;` **表的管理**: - 创建: `CREATE TABLE 表名 (列名 列的类型 [(长度)] [约束] COMMENT '描述');` - 修改: `ALTER TABLE 表名 ADD|DROP|MODIFY|CHANGE COLUMN 列名 [列类型 约束];` - 删除: `DROP TABLE 表名;` - 复制: `CREATE TABLE 新表名 LIKE 原表名;` (仅复制表结构) 或 `CREATE TABLE 新表名 SELECT * FROM 原表名;` (复制结构和数据)。 #### 七、常见的数据类型 **数值型**: - **整型**: 包括 `TINYINT`, `SMALLINT`, `MEDIUMINT`, `INT/INTEGER`, `BIGINT` 等。 - 默认情况下,这些整型字段是有符号的。若要定义无符号字段,需添加 `UNSIGNED` 关键字。 - 插入的整数值超出范围时,MySQL会插入该类型的边界值。 - 若未指定整型字段的具体长度,MySQL会为其分配一个默认长度。 - **小数型**: 例如 `DECIMAL`, `FLOAT`, `DOUBLE` 等。 以上是MySQL中一些常用的操作和概念的详细介绍,涵盖了从基础配置到复杂查询等多个方面。这些知识点对于理解和掌握MySQL非常关键,无论是初学者还是有一定经验的开发者都应熟练掌握。
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 冯尔康320240941121.zip
- 基于Java和CSS的bookStore项目源码学习Git和SSH框架实践
- 基于Qt6.2.4的数据库应用课程设计-景点门票管理系统的设计与实现.zip
- 基于Java后端与Vue前端技术的在线商城设计源码
- 基于Qt创建的Linux系统下的浏览器.zip
- UBNT-ER-x 固件刷机.zip学习资源
- Prophet时间序列预测入门.ipynb
- 一款由Java写的射击游戏.zip算法资源
- 一些java的小游戏项目,贪吃蛇啥的.zip用户手册
- 在线实时的斗兽棋游戏,时间赶,粗暴的使用jQuery + websoket 实现实时H5对战游戏 + java.zip课程设计