mysql常见问题汇总

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xjh163/article/details/98756705

安装时如何选择服务器的类型?

Development Machine(开发机器):该选项代表典型个人用桌面工作站。假定机器上运行 着多个桌面应用程序。将 MySQL 服务器配置成使用最少的系统资源。
MySQL服务器配置成使用所有可用系统资源。作为初学者,建议选择【DevelopmentMachine】(开发者机器)选项,这样占用系统的资源 比较少。

表删除操作须谨慎

表进行操作时,无论是 删除,更新或者修改啊,都要先进行备份

create table T_BAK(备份表名) as select * from T(原表)

注意备份的 T_BAK 主键以及外键关系均不会保留。

每个表都可以任意选择存储引擎吗?

外键约束(FOREIGN KEY)不能跨引擎使用。外键约束是用来保证数据的参照完整性,如果表之间 需要关联外键,却指定了不同的存储引擎,这些表之间是不能创建外键约束的。所以说,存储引擎的选择也不完全是随意的。

MySQL 中如何执行区分大小写的字符串比较?

在 Windows 平台下,MySQL 是不区分大小的,因此字符串比较函数也不区分大小写。如果 想执行区分大小写的比较,可以在字符串前面添加BINARY关键字。

例如默认情况下,’a’=‘A’ 返回结果为1,如果使用 BINARY 关键字,BINARY’a’=‘A’ 结果为 0,在区分大小写的情况下,’a’ 与’A’并不相同。

SELECT 'A'='a'
--->1
 select BINARY  'A'='a'
 --->0

DISTINCT可以应用于所有的列吗?

查询结果中,如果需要对列进行降序排序,可以使用 DESC,这个关键字只能对其前面的列 进行降序排列。例如,要对多列都进行降序排序,必须要在每一列的列名后面加 DESC 关键字。而 DISTINCT 不同,DISTINCT 不能部分使用。换句话说,DISTINCT 关键字应用于所有列而不 仅是它后面的第一个指定列。例如,查询 3 个字段 s_id,f_name,f_price,如果不同记录的这3个字段的组合值都不同,则所有记录都会被查询出来。

MySQL 存储过程和函数有什么区别?

在本质上它们都是存储程序。函数只能通过 return 语句返回单个值或者表对象;而存储过程 不允许执行 return,但是可以通过 out 参数返回多个值。函数限制比较多,不能用临时表,只能用表变量,还有一些函数都不可用等等;而存储过程的限制相对就比较少。函数可以嵌入在 SQL 语句中使用,可以在 SELECT 语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。

存储过程中的代码可以改变吗?

目前,MySQL 还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用 DROP 语句删除之后,再重新编写代码,或者创建一个新的存储过程。

存储过程中可以调用其他存储过程吗?

存储过程包含用户定义的 SQL 语句集合,可以使用 CALL 语句调用存储过程,当然在存储 过程中也可以使用 CALL 语句调用其他存储过程,但是不能使用 DROP 语句删除其他存储过程。

存储过程的参数不要与数据表中的字段名相同

在定义存储过程参数列表时,应注意把参数名与数据库表中的字段名区别开来,否则将出 现无法预期的结果。

存储过程的参数可以使用中文吗

一般情况下,可能会出现存储过程中传入中文参数的情况,例如某个存储过程根据用户的 名字查找该用户的信息,传入的参数值可能是中文。这时需要在定义存储过程的时候,在后面加上 character set gbk,不然调用存储过程使用中文参数会出错,比如定义 userInfo 存储过程,代码 如下:

CREATE PROCEDURE useInfo(IN u_name VARCHAR(50) character set gbk, OUT u_age INT)

猜你喜欢

转载自blog.csdn.net/xjh163/article/details/98756705