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

SQL面试 100 问

主键为员工编号,部门编号字段是引用部门表的外键,职位编号字段是引用职位表的外键,经理编号字段是引用员工表自身的 外键。 1. 什么是 SQL?SQL 有哪些功能?...,LEAST 函数用于返回列表中的最小值。...SQL 中有哪些连接查询? 答案: 连接(join)查询是基于两个表中的关联字段将数据行拼接到一起,可以同时返回两个表中的数据。...另外,数据库还必须保证满足完整性约束,比如账户扣款之后不能出现余额为负数(可以在余额字段上添加检查约 束)。Isolation,隔离性。...另外,Oracle 还支持 DDL 触发器和系统事件触发器。 100. 为员工表创建一个审计表和审计触发器,记录每次修改员工月薪的操作。

2.5K22
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    52条SQL语句性能优化

    2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。...语句用大写,因为oracle 总是先解析sql语句,把小写的字母转换成大写的再执行。...45,在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。...例如, 在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间, 甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。...同样的,如果可以的话, 我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    80310

    52 条 SQL 语句性能优化策略

    使用nolock有3条原则: 查询的结果用于“插、删、改”的不能加nolock; 查询的表属于频繁发生页分裂的,慎用nolock ; 使用临时表一样可以保存“数据前影”,起到类似Oracle...语句用大写,因为Oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。...45、在所有的存储过程和触发器的开始处设置SET NOCOUNT ON,在结束时设置SET NOCOUNT OFF。无需在执行存储过程和触发器的每个语句后向客户端发送DONE_IN_PROC消息。...因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如:在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间。...同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    64760

    52 条SQL语句性能优化策略

    2 应尽量避免在 where 子句中对字段进行 null 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如0,-1 作为默认值。...语句用大写,因为oracle 总是先解析sql语句,把小写的字母转换成大写的再执行。...45 在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。...例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。...同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    55830

    后端程序员必备:SQL高性能优化方案!50条优化,建议马上收藏!

    使用 nolock 有3条原则: 查询的结果用于“插、删、改”的不能加 nolock; 查询的表属于频繁发生页分裂的,慎用 nolock ; 使用临时表一样可以保存“数据前影”,起到类似 Oracle...语句用大写,因为 Oracle 总是先解析 SQL 语句,把小写的字母转换成大写的再执行。...45、在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON,在结束时设置 SET NOCOUNT OFF。...因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如:在定义邮政编码这个字段时,如果将其设置为 CHAR(255),显然给数据库增加了不必要的空间。...同样的,如果可以的话,我们应该使用 MEDIUMINT 而不是 BIGIN 来定义整型字段,应该尽量把字段设置为 NOT NULL,这样在将来执行查询的时候,数据库不用去比较 NULL 值。

    1.1K01

    Mysql性能优化一:SQL语句性能优化

    2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。...语句用大写,因为oracle 总是先解析sql语句,把小写的字母转换成大写的再执行。...45,在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。 ...例如,  在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,  甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。...同样的,如果可以的话,  我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。  应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    1.9K21

    实用排坑帖:SQL语句性能优化操作策略大全

    使用nolock有3条原则: 查询的结果用于“插、删、改”的不能加nolock; 查询的表属于频繁发生页分裂的,慎用nolock ; 使用临时表一样可以保存“数据前影”,起到类似Oracle的undo表空间的功能...语句用大写,因为Oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。...45、在所有的存储过程和触发器的开始处设置SET NOCOUNT ON,在结束时设置SET NOCOUNT OFF。无需在执行存储过程和触发器的每个语句后向客户端发送DONE_IN_PROC消息。...因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如:在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间。...同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    85221

    SQL优化

    应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。...语句用大写,因为oracle 总是先解析sql语句,把小写的字母转换成大写的再执行。...在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。...例如, 在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间, 甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。...同样的,如果可以的话, 我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    70320

    52 条 SQL 语句性能优化策略,建议收藏!

    2 应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。...语句用大写,因为oracle 总是先解析sql语句,把小写的字母转换成大写的再执行。...45 在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。...例如, 在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间, 甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。...同样的,如果可以的话, 我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    93300

    SQL 简易教程 下

    包含视图、函数知识、防止 SQL 注入攻击等内容。 SQL 函数 简介 大多数 SQL 实现支持以下类型的函数。 ❑ 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。...FORMAT() - 格式化某个字段的显示方式 UCASE() - 将某个字段转换为大写 LCASE() - 将某个字段转换为小写 UCASE() 和 LCASE() 函数 SELECT UCASE(...FROM table_name; ROUND() 函数 ROUND() 函数用于把数值字段舍入为指定的小数位数。...在MariaDB、MySQL和Oracle中创建占位符,可使用SAVEPOINT语句。 提示:保留点越多越好可以在SQL代码中设置任意多的保留点,越多越好。为什么呢?...触发器 触发器是特殊的存储过程,它在特定的数据库活动发生时自动执行。触发器可以与特定表上的INSERT、UPDATE 和 DELETE 操作(或组合)相关联。

    2.1K10

    oracle基本面试题_mongodb面试题

    oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL 微观上: 从数据类型,数据库的结构等等回答 2....NOT NULL约束 经常与其他表进行连接的表,在连接字段上应该建立索引; 经常出现在Where子句中的字段且过滤性很强的,特别是大表的字段,应该建立索引; 可选择性高的关键字 ,应该建立索引...Where子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段; E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引...可以简单的将视图理解为sql查询语句,视图最大的好处是不占系统空间 2. 一些安全性很高的系统,不会公布系统的表结构,可能会使用视图将一些敏感信息过虑或者重命名后公布结构 3....Imp/exp将数据库中的数据导入到新的库中 2. 如果是存储迁移直接将存储设备挂到新机器上 26.

    3.3K20

    84-我对网传的一些看法

    使用 nolock 有3条原则: 查询的结果用于“插、删、改”的不能加 nolock; 查询的表属于频繁发生页分裂的,慎用 nolock ; 使用临时表一样可以保存“数据前影”,起到类似 Oracle...tiger: 这个对性能影响微乎其微, 还会影响写SQL的效率. 23、尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。...45、在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON,在结束时设置 SET NOCOUNT OFF。...因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如:在定义邮政编码这个字段时,如果将其设置为 CHAR(255),显然给数据库增加了不必要的空间。...同样的,如果可以的话,我们应该使用 MEDIUMINT 而不是 BIGIN 来定义整型字段,应该尽量把字段设置为 NOT NULL,这样在将来执行查询的时候,数据库不用去比较 NULL 值。

    54220

    面试官:熟悉SQL优化吗?我只知道20种,其实远不止...

    使用 nolock 有3条原则: 查询的结果用于“插、删、改”的不能加 nolock; 查询的表属于频繁发生页分裂的,慎用 nolock ; 使用临时表一样可以保存“数据前影”,起到类似 Oracle...语句用大写,因为 Oracle 总是先解析 SQL 语句,把小写的字母转换成大写的再执行。...45、在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON,在结束时设置 SET NOCOUNT OFF。...因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如:在定义邮政编码这个字段时,如果将其设置为 CHAR(255),显然给数据库增加了不必要的空间。...同样的,如果可以的话,我们应该使用 MEDIUMINT 而不是 BIGIN 来定义整型字段,应该尽量把字段设置为 NOT NULL,这样在将来执行查询的时候,数据库不用去比较 NULL 值。

    50850

    数据库概念相关

    ②.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化。 ③.联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致该表上的触发器被触发。 6....推荐方案:用NOT EXISTS 方案代替 ③.IS NULL 或IS NOT NULL操作(判断字段是否为空) 判断字段是否为空一般是不会应用索引的,因为索引是不索引空值的。...推荐方案:用其它相同功能的操作运算代替,如:a is not null 改为 a>0 或a>’’等。不允许字段为空,而用一个缺省值代替空值,如申请中状态字段不允许为空,缺省为申请。...select id from t where num is null?      可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:?     ...28.在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。

    1.7K110

    ​oracle 笔记

    存储过程和存储函数的区别 触发器 语句级触发器 行级别触发器 触发器实现主键自增 一、 oracle介绍 ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组...但它的所有知识,只 要在一种机型上学习了ORACLE 知识,便能在各种类型的机器上使用它。 ? 1. 数据库 Oracle 数据库是数据的物理存储。...注意:使用简单的写法必须按照表中的字段的顺序来插入值,而且如果有为空的字段使用 null insert into person values(2,'李四',1,null,'北京育新'); 2....,如果是在右 边表的关联条件字段上就是右连接。...子句后面或者是连接条件上的字段建立索引 表中数据修改频率高时不建议建立索引 复合索引中第一列为优先检索列 如果要触发复合索引,必须包含有优先检索列中的原始值。

    89921

    学习SQL Server这一篇就够了

    将数据持久化到本地 提供结构化查询功能 1.2、数据库的常见概念 DB:数据库,存储数据的仓库 DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理数据库,常见的有MySQL、Oracle...在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广...Sybase 则较专注于SQL Server在UNⅨ操作系统上的应用。...定义中的n取值范围是1~53,用于指示其精度和存储大小。 当n在1~24之间时,实际上是定义了一个real型数据,存储长度为4字节,精度为7位有效数字。...不同的数据库管理系统对SQL规范做了某些编改和扩充。例如,微软公司的SQL Server支持的是T-SQL,而甲骨文公司的Oracle数据库所使用的SQL语言则是PL-SQL。

    6.2K30

    MySQL 数据库设计经验总结

    MySQL 官方文档 https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/index.html 基础知识 存储引擎 通常来说,我们做业务开发,指定存储引擎为...如果业务中需要使用 emoji 表情,那么就必须要设置为 utf8mb4 MySQL 可以在 Server 级、Database 级、Table 级、Column 级进行字符集的设置。...尽量保证数据库单表操作,减少关联查询 合理使用索引 合理设计所有字段及表关联 尽量避免在数据库层面实现逻辑 尽量避免使用触发器,视图,储存过程,将业务逻辑与统计逻辑分离 不要在业务库中大量统计计算 尽量避免使用各种数据库函数...尽量避免使用 text 或 blog 字段 确实需要存储的可以考虑拆表,将基本字段与扩展大字段分开。甚至可以考虑采用 MongoDB 之类的数据库才存储大量的文本表。...、违反左匹配原则 如联合索引 a, b 实际查询使用顺序为 b, a 5、索引列中含有 NULL

    1.3K30

    oracle补充

    (hao,hao2); 删除索引的SQL drop index teachername; 序列 序列是Oracle提供的用于产生一系列唯一数字的数据库对象。...设置成只读视图 with read only :设置为只读视图 create [or replace] view t_view(id,name,age,hao) as select...to 保存点名; Oracle 数据备份与还原 exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件 imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中 将数据库中的表导出...Oracle PL/SQL包 包用于在逻辑上组合过程和函数,它由包规范(包头)和包体两部分组成 --包头 create [or replace] package lv_package is procedure...2)将指针指向第一条记录 提取游标数据 fetch 游标名 into 变量1,变量2,……; 关闭游标 close 游标名; 游标属性 游标提供一些属性可以帮助编写PL/SQL 程序,游标属性的使用方法为

    3.1K30
    领券