首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 常见的面试题及其答案

触发器是一种特殊的存储过程,它可以在数据库特定的操作(插入、更新删除等)发生自动执行。触发器可以用于强制实施业务规则、自动化复杂的业务逻辑等。 11、什么是存储过程?...20、如何在MySQL创建和使用存储过程? 存储过程是一组预编译SQL语句,可以在MySQL服务器上执行。...以下是在MySQL创建和使用存储过程的步骤: 使用CREATE PROCEDURE语句创建存储过程,指定过程名和参数列表。 在存储过程中使用SQL语句,可以执行查询,更新,插入和删除操作。...MySQL实现外键约束的方法: 在创建,使用FOREIGN KEY约束指定外键,指向另一个的主键。 外键约束可以在CREATE TABLEALTER TABLE语句中指定。...如果试图插入与另一个不存在的外键,则会拒绝插入操作。 可以使用CASCADE选项来自动删除更新具有关联记录的外键记录。 24、什么是MySQL存储引擎?MySQL支持哪些存储引擎?

7K31

盘点MySQL数据库的数据类型、库和常见操作、索引、视图、函数等知识点

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值使用"零"值。 TIMESTAMP类型有专有的自动更新特性,将在后面描述。...orders,orderitems QUICK;# QUICK只进行快速扫描 优化OPTIMIZE TABLE,消除删除更新造成的磁盘碎片,从而减少空间的浪费:OPTIMIZE TABLE orders...UPDATE:更新操作触发器,UPDATE操作触发; trigger_event 触发事件,插入时触发、删除触发;DELETE:删除操作触发器,DELETE、REPLACE操作触发;...INSERT、UPDATE、DELETE table_name 触发操作时间的名; 可选参数,如果定义了多个具有相同触发事件和触法时间的触发器:BEFORE...delete:删除数据 drop:删除数据库/ index:创建/删除索引 insert:添加数据 select:查询数据 update:更新数据

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

PostgreSQL 教程

主题 描述 插入 指导您如何将单行插入。 插入多行 向您展示如何在插入多行。 更新 更新的现有数据。 连接更新 根据另一个的值更新的值。 删除 删除的数据。...连接删除 根据另一个的值删除的行。 UPSERT 如果新行已存在于,则插入更新数据。 第 10 节....重命名表 将的名称更改为新名称。 添加列 向您展示如何向现有添加一列多列。 删除列 演示如何删除的列。 更改列数据类型 向您展示如何更改列的数据。 重命名列 说明如何重命名表的一列多列。...了解 PostgreSQL 约束 主题 描述 主键 说明在创建向现有添加主键如何定义主键。 外键 展示如何在创建定义外键约束或为现有添加外键约束。...检查约束 添加逻辑基于布尔表达式检查值。 唯一约束 确保一列一组列的值在整个是唯一的。 非空约束 确保列的值不是NULL。 第 14 节.

47210

MySQL命令,一篇文章替你全部搞定

MySQL的基本操作可以包括两个方面:MySQL常用语句高频率使用的增删改查(CRUD)语句和MySQL高级功能,存储过程,触发器,事务处理等。...新建)数据库 新建数据库:CREATE DATABASE customers; 创建可以使用CREATE TABLE语句: 有这样一些细节: 允许NULL值,则说明在插入行数据允许不给出该列的值...1.4 更新 更新结构信息可以使用ALTER TABLE子句,增加一列:ALTER TABLE vendors ADD vend_name CHAR(20);另外经常用于定义外键,: 重命名表...,需要知道以下两点: 在DELETE触发器代码内,可以引用一个名为OLD的虚拟,来访问被删除的行; OLD的数据只能读,不能被更新,而在INSERT触发器,就可以通过NEW来更新被插入的行数据;...例如,针对customers,当删除一行数据,返回被删除数据的cust_id以及cust_name: 基本上与创建INSERT触发器一样,只不过在DELETE触发器只能使用OLD来访问被删除的行数据

2.6K20

MySQL 教程下

在视图创建之后,可以用与基本相同的方式利用它们。可以对视图执行 SELECT 操作,过滤和排序数据,将视图联结到其他视图,甚至能添加更新数据(添加更新数据存在某些限制。...视图本身不包含数据,因此它们返回的数据是从其他检索出来的。在添加更改这些的数据,视图将返回改变过的数据。 在理解什么是视图(以及管理它们的规则及约束)后,我们来看一下视图的创建。...如果你对视图增加删除行,实际上是对其基增加删除行。但是,并非所有视图都是可更新的。基本上可以说,如果 MySQL 不能正确地确定被更新的基数据,则不允许更新(包括插入和删除)。...临时只在当前连接可见,当关闭连接MySQL 会自动删除并释放所有空间。临时MySQL 3.23 版本添加。...❑ 在导入数据,应该关闭自动提交。你可能还想删除索引(包括FULLTEXT索引),然后在导入完成后再重建它们。 ❑ 必须索引数据库改善数据检索的性能。

1K10

数据库的存储过程、游标、触发器与常用的内置函数

2.2 使用语法 2.3 示例 3 触发器 3.1 什么是触发器 (1)触发器(trigger) (2)触发器的定义语法: (3)MySQL可以创建 6 种触发器 3.2 示例(本节使用MySQL描述...) (1)after insert 触发器,在插入数据之后获得@id变量显示最新的自增长ID (2)after delete 触发器,把被删除的行数据保存在一个存档 (3)before update...3.1 什么是触发器 (1)触发器(trigger) 是一种数据库对象,用于监控某些语句,在满足定义条件触发, 并执行触发器定义的一组语句。...DELETE FROM genre WHERE id=6; 注意:在delete触发器内,可以引用一个名为old的虚拟,访问被删除的行 (3)before update 触发器,确保更新后name字段的值总是大写的...old的虚拟,访问更新前的行;new一个名为的虚拟,访问新更新的值 4 常用的数据库内置函数 MySQL预定义了很多数据处理函数:https://www.cnblogs.com/xuyulin/

1.4K40

MySQL进阶知识(最全)(精美版)

drop procedure p1 MySQL触发器 如果你想要某条语句(某些语句)在事件发⽣⾃动执⾏,怎么办呢?...: 如果触发器 SQL 有语法错误 , 那么整个操作都会报错 -- 创建⼀个删除触发器 , 在 users 删除数据之前 , 往 del_users 添加⼀个数据 -- 1..., 复制当前的⼀个结构 create table del_users like users; -- 2, 创建 删除触发器 注意在创建删除触发器 , 只能在删除之前才能获取到...OLD 的虚拟,访问被删除的⾏ ; OLD 的值全都是只读的,不能更新。...视图本身不包含数据,因此它们返回的数据是从其他检索出来的。 在添加更改这些的数据,视图将返回改变过的数据。 视图的作⽤ 1.

2.5K21

MySQL数据库面试题(2020最新版)必知必会

#update 修改更新 MySQL 的数据 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]...update set 列=新值 where 更新条件; 可以同时更新若干个字段 可以在 where 子句中指定任何条件 当你需要更新数据中指定行的数据 WHERE 子句是非常有用的 可以在一个单独同时更新数据...在使用MySQL官方的MySQL管理工具MySQL Workbench 5.2.47创建数据库,使用的是CREATE SCHEMA来创建数据库的。而这和MS SQL的SCHEMA有很大差别。...创建视图:create view XXX as XXXXXXXXXXXXXX; 对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基进行更新...,以便回滚 TRUNCATE TABLE 一次性地从删除所有的数据,并不把单独的删除操作记录记入日志保存,删除行是不能恢复的,在删除的过程不会激活与有关的删除触发器

1.1K10

MySQL的学习--触发器

创建触发器MySQL创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH...REPLACE 语句一般来说和 INSERT 语句很像,只是在中有 primary key unique 索引,如果插入的数据和原来 primary key unique 索引一致,会先删除原来的数据...,默认的是分号(;),我们可以把它修改为其他符号,:DELIMITER 在这之后的语句,分号结束,解释器不会有什么反应,只有遇到了 一个完整的创建触发器示例 假设系统中有两个: 班级 class...(班级号 classID, 班内学生数 stuCount) 学生 student(学号 stuID, 所属班级号 classID) 要创建触发器来使班级的班内学生数随着学生的添加自动更新,代码如下...; 在 DELETE 型触发器,OLD 用来表示将要已经被删除的原数据; 使用方法: NEW.columnName (columnName 为相应数据某一列名) 另外,OLD 是只读的,而 NEW

4.8K20

配置 | 全方位认识 sys 系统库

否则,该sys 系统库函数和存储过程将使用sys_config的配置选项值(从读取配置选项值之后,会将sys_config的配置选项同时更新到用户自定义配置选项变量,以便在同一会话后续对该值的引用时使用变量值...默认值为64字节 其他选项可以被添加到sys_config。...,且这俩触发器定义指定了DEFINER=mysql.sys@localhost(表示该触发器只能用mysql.sys用户调用),so..该用户必须存在(对MySQL 做安全加固的小朋友要注意了,别直接对...user specified as a definer ('mysql.sys'@'localhost') does not exist),如果不小心删除mysql.sys用户 ,可以使用如下语句重新创建...,所以,强烈不建议删除mysql.sys用户,因为grant创建用户的语法即将废弃,当然,如果在不支持grant语句创建用户的MySQL版本删了mysql.sys用户,也有办法补救,比如:直接insert

1.4K30

Java面试手册:数据库 ④

触发器 触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定列作特定类型的数据修改时执行。...触发器可以查询其他的,而且可以包含复杂的SQL语句他们主要用于强制服从复杂业务的规则要求。 触发器是与表相关的数据库对象,在满足定义条件触发,并执行触发器定义的语句集合。...触发器的这种特性可以协助应用在数据库端确保数据库的完整性。 触发器在数据库定义了一系列的操作,可以在对指定进行插入,更新或者删除的同时自动执行这些操作。...,更新删除执行。...与 CHECK 约束不同,触发器可以引用其它的列。例如,触发器可以使用另一个的 SELECT 比较插入更新的数据,以及执行其它操作,修改数据显示用户定义错误信息。

1.3K30

MY SQL存储过程、游标、触发器--Java学习网

MySQL5 添加了存储过程的支持。 大多数SQL语句都是针对一个多个的单条语句。并非所有的操作都怎么简单。...创建触发器 创建触发器需要给出4条信息 1 唯一的触发器名; //保存每个数据库触发器名唯一 2 触发器关联的; 3 触发器应该响应的活动(DELETE、INSERT...语句的请求操作,此外,如果BEFORE触发器语句本身失败,MySQL将不执行AFTER(之后)触发器 删除触发器 DROP TRIGGER newproduct; 触发器不能更新覆盖...,所以修改触发器只能先删除创建 使用触发器 我们来看看每种触发器以及它们的差别 INSERT 触发器 INSERT触发器在INSERT语句执行之前之后执行。...的虚拟访问新更新的值 2 在BEFORE UPDATE触发器,NEW的值可能被更新,(允许更改将要用于UPDATE语句中的值) 3 OLD的值全都是只读的,不能更新 例子:保证州名的缩写总是大写

1.8K30

Mysql-2

视图是由基本(实)产生的(虚)。       3. 视图的建立和删除不影响基本。       4. 对视图内容的更新添加删除和修改)直接影响基本。       5....当视图来自多个基本,不允许添加删除数据。 2.创建视图 在创建视图,首先要确保拥有CREATE VIEW的权限,并且同时确保对创建视图所引用的也具有相应的权限。 ...6.2利用视图操作基本数据:      由于视图是“虚”,所以对视图数据进行的更新操作,实际上是对其基本数据进行的更新操作。在具体更新视图数据,需要注意以下两点;     1....对视图数据进行添加删除直接影响基本。     2. 视图来自于多个基本,不允许添加删除数据。     视图中的添加数据操作、删除数据操作、更新数据操作的语法同完全相同。...这时,若SQL语句触发器执行失败,MySQL 会回滚事务,有: ①如果 BEFORE 触发器执行失败,SQL 无法正确执行。 ②SQL 执行失败,AFTER 型触发器不会触发。

2.5K50

MySQL Online DDL原理解读

执行DDL操作 COPY算法: 创建临时:首先,MySQL创建一个与原始结构相似的新临时。 数据拷贝:接着,原始的数据会被逐行拷贝到新的临时。...完成与清理 释放资源:DDL操作完成后,系统会释放所有在操作过程中分配的资源,临时、内存等。 更新统计信息:MySQL更新与表相关的统计信息,以便优化器能够更好地制定查询计划。...通知与日志记录:操作完成后,系统会生成相应的日志记录,以便在必要进行恢复审计。同时,也可能通过某种机制(触发器)通知应用程序DDL操作的完成。...四、使用场景与优势 MySQL原生Online DDL适用于多种场景,添加删除列、修改数据类型、添加删除索引等。这些操作都可以在不中断服务的情况下完成,大大提高了数据库的灵活性和可用性。...在执行DDL操作之前,最好查阅MySQL的官方文档了解具体的支持情况。 即使指定了LOCK=NONE,MySQL也可能在必要自动加锁确保数据的一致性。

11510

还不了解MySQLl存储过程与触发器创建使用?

Mysql存储过程与触发器 本篇文章主要是简单解释mysql存储过程的创建、调用以及介绍触发器和如何创建触发器。那么关于存储过程和触发器那些官方理论的介绍我就不在这里啰嗦了。...1数据的准备 下面所有例子中用到的创建脚本。tb_user是下面例子的用户,tb_blog是博客,tb_user_log是用户信息更新日记。...因为我们要在存储过程触发器执行sql语句,所以会用到';',如果不改其它符号而使用';'作为语句结束符的话,mysql遇到';'就当作一条语句完成了,而存储过程触发器的sql语句都没写完全呢,这样只会...其它的就不做解释了,看不懂就需要学一下mysql的条件语句与循环语句了。 4Mysql触发器 触发器是什么? 触发器就是一个函数,当满足某种条件才会触发其执行。 什么情况下使用触发器?...而如果使用触发器,当用户信息修改时触发触发器执行添加一条日记记录,这样也会比在业务代码执行两条sql语句效率要高。 那么如果创建一个触发器呢?

80820

SQL 语法速成手册

子查询通常会在另一个 SELECT 语句的 WHERE 子句中添加。 您可以使用比较运算符, >,<, =。比较运算符也可以是多行运算符, IN,ANY ALL。...; 根据已有的创建 CREATE TABLE vip_user AS SELECT * FROM user; 删除数据 DROP TABLE user; 修改数据 添加列 ALTER TABLE...注意 更新一个包含索引的需要比更新一个没有索引的花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及)上面创建索引。...在这之后的语句,分号结束,解释器不会有什么反应,只有遇到了 NEW 和 OLD MySQL 定义了 NEW 和 OLD 关键字,用来表示触发器的所在,触发了触发器的那一行数据。...; 在 DELETE 型触发器,OLD 用来表示将要已经被删除的原数据; 使用方法: NEW.columnName (columnName 为相应数据某一列名) 创建触发器 提示:为了理解触发器的要点

17.1K40

SQL 语法速成手册

子查询通常会在另一个 SELECT 语句的 WHERE 子句中添加。 您可以使用比较运算符, >,<, =。比较运算符也可以是多行运算符, IN,ANY ALL。...; 根据已有的创建 CREATE TABLE vip_user AS SELECT * FROM user; 删除数据 DROP TABLE user; 修改数据 添加列 ALTER TABLE...注意 更新一个包含索引的需要比更新一个没有索引的花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及)上面创建索引。...在这之后的语句,分号结束,解释器不会有什么反应,只有遇到了 NEW 和 OLD MySQL 定义了 NEW 和 OLD 关键字,用来表示触发器的所在,触发了触发器的那一行数据。...; 在 DELETE 型触发器,OLD 用来表示将要已经被删除的原数据; 使用方法: NEW.columnName (columnName 为相应数据某一列名) 创建触发器 提示:为了理解触发器的要点

16.8K20

数据库相关知识总结

添加更改这些的数据,视图将返回改变过的数据 视图用CREATE VIEW语句来创建。 使用SHOW CREATE VIEW viewname;来查看创建视图的语句。...select * from view_name where cond; 对于视图的更新相当于对其基进行更新,对视图增加删除行,实际上是对其基增加删除行。...): delete insert update 在创建触发器,需要给出4条信息 唯一的触发器名; 触发器关联的触发器应该响应的活动(DELETE、INSERTUPDATE); 触发器何时执行(...需要知道以下两点: 在DELETE触发器代码内,你可以引用一个名为OLD的虚拟,访问被删除的行; OLD的值全都是只读的,不能更新删除的行保存到存档 create trigger deleteorder...注意,这个日志文件是MySQL 5添加的,以前的MySQL版本中使用的是更新日志 缓慢查询日志。顾名思义,此日志记录执行缓慢的任何查询。这个日志在确定数据库何处需要优化很有用。

3.3K10

MySQL触发器的使用

触发器触发器的使用场景以及相应版本: 触发器可以使用的MySQL版本: 版本:MySQL5以上 使用场景例子: 每当增加一个顾客到某个数据库,都检查其电话号码格式是否正确,州的缩写是否为大写 每当订购一个产品...的虚拟访问以前的值,即:update未执行前的值,还可以引用一个名为NEW的虚拟访问新更新的值; 在before update触发器,NEW的值可能也被更新(允许修改将要用于update语句中的值...: 在DELETE触发器在delete语句执行之前之后执行: 在delete触发器代码内,可以引用OLD的虚拟,访问被删除的行; OLD的值全部都是只读,不能更新 例子: 使用old保存将要被删除的行到一个存档...首先先创建一个与orders相似的: CREATE TABLE archive_orders LIKE orders; -- 创建一个删除触发器 CREATE TRIGGER deleteorder...order中行中信息,将删除的信息保存到archive_orders删除中一行: DELETE FROM orders WHERE order_num='20014'; 查看效果: SELECT

3.2K10

何在MySQL实现数据的时间戳和版本控制?

MySQL实现数据的时间戳和版本控制,可以通过以下两种方法来实现:使用触发器和使用存储过程。...MySQL支持触发器功能,可以在数据库创建触发器,以便在特定的数据事件(插入、更新删除)发生自动执行相应的操作。因此,我们可以使用触发器来实现数据的时间戳和版本控制。...1、创建触发器 首先,创建需要进行版本控制的,例如: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name`...我们创建了两个触发器:一个是在插入数据之前自动设置createdAt、updatedAt和version字段;另一个是在更新数据之前自动设置updatedAt和version字段。...在MySQL实现数据的时间戳和版本控制,可以通过使用触发器和存储过程两种方法来实现。无论采用哪种方法,都需要在设计数据模型和业务逻辑充分考虑时间戳和版本控制的需求,并进行合理的设计和实现。

9310
领券