### MySQL常见问题及解答 #### 1. MySQL 数据类型简介 - **`CHAR`、`VARCHAR`、`TEXT`:** 这些都是用来存储文本数据的数据类型。 - `CHAR`:固定长度字符串,适合存储长度固定的字符串,如电话号码。 - `VARCHAR`:可变长度字符串,适合存储长度不定的字符串,如姓名。 - `TEXT`:用于存储较大的文本,例如文章或备注。 - **BLOB 和 TEXT 的区别:** BLOB 类型用于存储二进制数据(如图片或文档),而 TEXT 用于存储文本数据。 #### 2. MySQL 数据类型与 SQL 标准 - **`BOOL` 和 `BOOLEAN`:** 在 MySQL 中,这两个关键字实际上是别名,表示 `TINYINT(1)` 类型,这意味着它们只能存储 0 或 1,分别代表 false 和 true。 - **注意:** 尽管 `BOOL` 和 `BOOLEAN` 在 SQL 标准中被定义为布尔类型,但 MySQL 实际上将其视为整数类型的一个特殊实例。 #### 3. 存储 JPG 图片或 MP3 文件 - **存储方式:** 不建议直接在数据库中存储图片或音频文件,因为这可能会降低性能。通常的做法是将文件保存在文件系统中,并在数据库中只存储文件的路径或 URL。 - **使用 BLOB 存储大文件:** 如果确实需要在数据库中存储这些文件,可以使用 `BLOB`(Binary Large Object)类型来存储。 #### 4. 查看默认存储引擎 - **命令:** 使用 `SHOW VARIABLES LIKE 'storage_engine';` 来查看当前数据库系统的默认存储引擎是什么。 - **用途:** 了解当前设置的存储引擎有助于选择合适的表结构,以及进行必要的优化工作。 #### 5. 查看支持的存储引擎 - **命令:** 使用 `SHOW ENGINES;` 命令可以查看 MySQL 支持的所有存储引擎。 - **作用:** 这对于了解当前系统能够使用的不同存储引擎选项非常有用。 #### 6. 修改默认存储引擎 - **方法:** 修改 MySQL 的配置文件 `my.ini` 中的 `[mysqld]` 部分,添加 `default-storage-engine=INNODB`,然后重启 MySQL 服务。 - **验证更改:** 使用 `SHOW VARIABLES LIKE 'storage_engine';` 检查是否已经成功更改默认存储引擎。 #### 7. 关键字解析 - **`PRIMARY KEY`:** 主键,用于唯一标识一条记录,且不允许有重复值。 - **`FOREIGN KEY`:** 外键,用于建立表之间的关联关系。 - **`NOT NULL`:** 表示该字段不能为空。 - **`UNIQUE`:** 唯一性约束,确保字段中的每个值都是唯一的。 - **`AUTO_INCREMENT`:** 自动增长属性,用于自动生成唯一编号,常用于主键。 - **`DEFAULT`:** 默认值约束,指定字段如果没有显式赋值时的默认值。 #### 8. 定义复合主键 - **复合主键示例:** `PRIMARY KEY (12n)`,其中 12n 可以是多个字段组合起来作为主键。 - **用途:** 当单个字段不足以唯一确定一条记录时,可以使用复合主键来确保记录的唯一性。 #### 9. 外键约束 - **定义外键关系:** 外键约束定义了两个表之间的一种联系。 - `CONSTRAINT FOREIGN KEY (1.1, 1.2, ..., 1.n) REFERENCES (2.1, 2.2, ..., 2.n)` - 其中 1.1, 1.2, ..., 1.n 是当前表的字段; - 2.1, 2.2, ..., 2.n 是参照表的字段。 - **示例创建外键:** ```sql CREATE TABLE example ( id INT PRIMARY KEY, stu_id INT, course_id INT, CONSTRAINT c_fk FOREIGN KEY (stu_id, course_id) REFERENCES example2 (stu_id, course_id) ); ``` - **注意事项:** 当外键的字段类型不一致时,例如一个是 INT 而另一个是 CHAR,会引发错误。 #### 10. 自动增长字段 - **定义自动增长字段:** `AUTO_INCREMENT` 属性可以让 MySQL 在插入新记录时自动为字段分配一个唯一的数值。 - **示例:** ```sql CREATE TABLE example6 ( id INT PRIMARY KEY AUTO_INCREMENT, stu_id INT UNIQUE, name VARCHAR(20) NOT NULL ); ``` #### 11. 设置默认值 - **定义默认值:** 使用 `DEFAULT` 关键字可以为字段设置默认值。 - **示例:** ```sql CREATE TABLE example7 ( id INT PRIMARY KEY AUTO_INCREMENT, stu_id INT UNIQUE, name VARCHAR(20) NOT NULL, English VARCHAR(20) DEFAULT 'zero', Math FLOAT DEFAULT 0, Computer FLOAT DEFAULT 0 ); ``` #### 12. 查看表结构 - **使用 DESCRIBE:** `DESCRIBE table_name` 或 `desc table_name` 用来快速查看表的基本结构。 - **使用 SHOW CREATE TABLE:** `SHOW CREATE TABLE table_name` 用于查看表的完整定义,包括所有约束和默认值等细节。 #### 13. 总结 本文提供了 MySQL 中一些常用的语法和概念的简要介绍。从数据类型的使用到关键字的定义,再到表结构的操作,这些内容对初学者来说非常实用。掌握这些基本操作可以帮助用户更高效地管理和查询数据。此外,通过理解如何使用外键约束和自动增长字段等高级特性,可以构建更加复杂和灵活的关系数据库结构。
MySQL中,CHAR、VARCHAR和TEXT等字符串类型都可以存储路径。但是,如果路径中使用“\”符号时,这个符号会被过滤。解决的方法是,路径中用“/”或“\\”来代替“\”。这样,MySQL就不会自动过滤路径的分隔字符,可以完整的表示路径。
2.MySQL中如何使用布尔类型?
在SQL标准中,存在BOOL和BOOLEAN类型。MySQL为了支持SQL标准,也是可以定义BOOL和BOOLEAN类型的。但是,BOOL和BOOLEAN类型最后转换成的是TINYINT(1)。也就是说,在MySQL中,布尔类型等价于TINYINT(1)。因此,创建表的时候将一个字段定义成BOOL和BOOLEAN类型,数据库中真实定义的是TINYINT(1)。
3.MySQL中如何存储JPG图片和MP3音乐?
一般情况下,数据库中不直接存储图片和音频文件。而是存储图片和音频文件的路径。如果实在需要在MySQL数据库中存储图片和音频文件,就选择BLOB类型。因为,BLOB类型可以用来存储二进制类型的文件。
4.查看默认存储引擎
在创建数据库之前,先查看一下系统默认的存储引擎是什么。使用SHOW语句的查询显示如下:
SHOW VARIABLES LIKE 'storage_engine';
5.查看该数据库系统支持的存储引擎的类型,代码如下:
SHOW ENGINES;
6.如何修改默认存储引擎?
在MySQL的安装目录下能找到一个名为my.ini的配置文件。该文件中的mysqld部分存在“default-storage-engine=INNODB”语句。将该语句的“INNODB”改为需要的存储引擎。注意,该配置文件只有重启服务后才会生效。执行SHOW VARIABLES LIKE 'storage_engine'查看默认存储引擎是否修改成功。
完整性约束条件表
约束条件 说明
PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组
FOREIGN KEY 标识该属性为该表的外键,是与之联系的某表的主键
NOT NULL 标识该属性不能为空
UNIQUE 标识该属性的值是唯一的
AUTO_INCREMENT 标识该属性的值自动增加,这是MySQL的SQL语句的特色
DEFAULT 为该属性设置默认值
7.多字段主键
主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:
PRIMARY KEY(属性名1,属性名2,...,属性名n)
8.设置表的外键
外键是表的一个特殊字段。如果字段sno是一个表A的属性,且依赖于表B的主键。那么,称表B为父表,表A为子表,sno为表A的外键。通过sno字段将父表B和子表A建立关联关系。设置表的外键指在创建表设置某个字段为外键。本小节主要讲解外键设置的原则和外键的作用和设置外键的方法。
设置外键的原则就是必须依赖于数据库中已存在的父表的主键;外键可以为空值。
外键的作用是建立该表与其父表的关联关系。父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变。例如,stu_id是student表的主键,stu_id是grade表的外键。当stu_id为'123'同学退学了,需要从student表中删除该学生的信息。那么,grade表中stu_id为'123'同学退学了,需要从student表中删除该学生的信息。那么,grade表中stu_id为'123'的所有信息也应该同时删除。这样可以保证信息的完整性。
设置外键的基本语法规则如下:
CONSTRAINT 外键别名 FOREIGN KEY(属性1.1,属性1.2,...,属性1.n)
REFERENCES 表名(属性2.1,属性2.2,...,属性2.n)
其中,“外键别名”参数是为外键的代号;“属性1”参数列表是子表中设置的外键;“表名”参数是指父表的名称;“属性2”参数列表是父表的主键。
下面在example3表中设置stu_id和course_id为外键。与之相关联的是example1表中的主键stu_id和course_id。SQL代码如下:
CREATE TABLE example(id INT PRIMARY KEY,
stu_id INT,
course_id INT,
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 114
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip