
MySQL
mysql
Stannis
小白
展开
-
mysql默认不允许创建函数,修改以下内容
报错信息ERROR 1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)修改如下:SET GLOBAL log_bin_trust_function原创 2022-03-16 14:31:59 · 1047 阅读 · 0 评论 -
数据库面试题汇总
1、SQL 中 on 条件与 where 条件的区别数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用 left join 时,on 和 where 条件的区别如下:1)on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。2)where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。tbl_a原创 2022-03-04 10:06:01 · 11138 阅读 · 0 评论 -
SQL行列转换问题
1、列转行建表语句DROP TABLE IF EXISTS `t_student`;CREATE TABLE `t_student` ( `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键 id', `name` varchar(50) DEFAULT NULL COMMENT '姓名', `course` varchar(50) DEFAULT NULL COMMENT '课程', `score` int(3) DEFAULT NUL原创 2021-12-03 14:47:11 · 265 阅读 · 0 评论 -
MySQL导出、备份、导入数据
1、在MySQL中,可以使用SELECT…INTO OUTFILE语句将查询结果数据导出到文本文件 # 查看默认路径 show variables like '%secure_file_priv%';secure_file_priv取值说明:null–表示不允许导入导出空–表示没有任何限制指定路径–表示导入导出只能在指定路径下完成 SELECT * FROM user_range INTO OUTFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.原创 2021-09-16 17:55:37 · 1005 阅读 · 0 评论 -
mysql复制表的三种方式
1、只复制表结构,包括主键、索引,但不会复制表数据 create table tb1 like tb2;2、复制表的大体结构及全部数据,不会复制主键、索引等 create table tb1 select * from tb2;3、分两步完成,先复制表结构,再插入数据 create table tb1 like tb2; insert into tb1 select * from tb2;...原创 2021-09-16 16:59:02 · 4941 阅读 · 0 评论 -
MySQL存储过程
存储过程示例:根据用户id和邮件内容content给用户发邮件drop table if exists user_info;drop table if exists email_info;create table user_info( id int not null auto_increment primary key, name varchar(30), email varchar(50));insert into user_info(id, name, email) values..原创 2021-09-16 16:19:30 · 157 阅读 · 0 评论 -
MySQL预处理
从MySQL 4.1开始,就支持预处理语句(Prepared statement),这大大提高了客户端和服务器端数据传输的效率。当创建一个预定义SQL时,客户端向服务器发送一个SQL语句的原型;服务器端接收到这个SQL语句后,解析并存储这个SQL语句的部分执行计划,返回给客户端一个SQL语句处理句柄,以后每次执行这条SQL,客户端都指定使用这个句柄。即时SQL和预处理SQL对比 1、即时SQL:一次编译、一次运行 2、预处理SQL:一次编译、多次运行预处理优势: 1、高效执行重原创 2021-09-16 16:08:47 · 2114 阅读 · 0 评论 -
MySQL分区表操作
定义: 分区表就是按照某种规则将同一张表的数据分段划分到多个位置存储。对数据的分区存储提高了数据库的性能,被分区存储的数据在物理上是多个文件,但在逻辑上仍然是一个表,对表的任何操作都跟没分区之前一样。在执行增、删、改、查等操作时,数据库会自动找到对应的分区,然后执行操作。 1、MySQL从5.1.3开始支持分区(Partition) 2、在MySQL 8.0中,只有InnoDB和NDB两个存储引擎支持分区分区表的好处 1、可以存储更多数据 2、便于管理 3、提升查询效率 .原创 2021-09-16 10:12:58 · 355 阅读 · 0 评论 -
MySQL事务特性
定义: 事务(Transaction)是指作为一个逻辑单元执行的一系列操作,这些操作要么全部成功,要么全部失败。事务确保对多个数据的修改作为一个单元来处理。 1、在MySQL中,只有InnoDB存储引擎的数据库支持事务 2、事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都失败 3、事务用于管理UPDATE、INSERT、DELETE事务的特性: 1、原子性(A):事务中的操作,要么都做,要么都不做 2、一致性(C):事务完成后,要保证所有数据保持一致状态.原创 2021-09-16 09:47:14 · 303 阅读 · 0 评论 -
MySQL索引
定义: 特殊的数据结构,“目录”常见索引种类:1、普通索引: 最基本的索引,没有任何限制,仅加速查询CREATE INDEX indexName ON tableName(columnName(length));2、唯一索引: 索引列的值必须唯一,但是允许有空值CREATE UNIQUE INDEX indexName ON tableName(columnName(length));3、主键索引: 一种特殊的唯一索引,不允许有空值,一般在建表的同时自动创建主键索引4、.原创 2021-09-15 11:41:03 · 132 阅读 · 0 评论 -
MySQL索引常见问题
降序索引 MySQL8.0之前,索引都是按照升序(ASC)创建的,虽然语法上支持DESC,但是创建的仍然是升序索引;如果某个查询需要对多个列进行排序(有降序、也有升序),并且排序条件与索引列不一致,或没有 对排序列创建索引,数据库都会进行额外的排序filesort,此时就可以考虑使用降序索引进行优化。like使用索引问题 &nb原创 2021-09-14 15:47:23 · 166 阅读 · 0 评论 -
MySQL索引结构之B+Tree
创建索引语法CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [index_type] ON tbl_name (key_part,...) [index_option] [algorithm_option | lock_option] ... key_part: {col_name [(length)] | (expr)} [ASC | DESC] index_option: { KEY_BLOCK_.原创 2021-09-13 16:31:20 · 241 阅读 · 0 评论 -
length()和char_length()区别
1、char_length()(1)计算单位:字符(2)不管汉字还是数字或者是字母都算是一个字符2、length()(1)计算单位:字节(2)utf8编码:一个汉字三个字节,一个数字或字母一个字节。(3)gbk编码:一个汉字两个字节,一个数字或字母一个字节。...原创 2021-02-03 10:12:46 · 519 阅读 · 0 评论