免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DBA 数据库管理员数据库管理员 JAVA 程序员架构师必看程序员架构师必看 1 如何查找和删除数据库中的重复数据如何查找和删除数据库中的重复数据 法一 用 Group by 语句 此查找很快的 select count num max name from student 查找表中 num 列重复的 列出重复的记录数 并列出他 的 name 属性 group by num having count num 1 按 num 分组后找出表中 num 列重复 即出现次数大于一次 delete from student 上面 Select 的 这样的话就把所有重复的都删除了 慎重 法二 当表比较大 例如 10 万条以上 时 这个方法的效率之差令人无法忍受 需要另想办法 执行下面 SQL 语句后就可以显示所有 DRAWING 和 DSNO 相同且重复的记录 SELECT FROM EM5 PIPE PREFAB WHERE ROWID SELECT MAX ROWID FROM EM5 PIPE PREFAB D D 相当于 First Second WHERE EM5 PIPE PREFAB DRAWING D DRAWING AND EM5 PIPE PREFAB DSNO D DSNO 执行下面 SQL 语句后就可以刪除所有 DRAWING 和 DSNO 相同且重复的记录 DELETE FROM EM5 PIPE PREFAB WHERE ROWID SELECT MAX ROWID FROM EM5 PIPE PREFAB D WHERE EM5 PIPE PREFAB DRAWING D DRAWING AND EM5 PIPE PREFAB DSNO D DSNO 2 说一下数据表设计要遵守的三范式是什么 除了这些你觉得数据表的设计还要注意哪些规则 说一下数据表设计要遵守的三范式是什么 除了这些你觉得数据表的设计还要注意哪些规则 1 无重复列 实际上就是一个表中一个列不允许有多值属性 复合属性或者嵌套的表 即列的值域必须 是原子值 表必须有主键 2 属性完全依赖于主键 消除部分子函数依赖 第二范式其实是在第一范式上的扩展 所以第二范式必 须符合第一范式 表中列不存在部分函数依赖 3 属性不依赖于其它非主属性 消除传递依赖 第三范式是在第二范式的基础上进行的扩展 所以必须 符合第二范式且表中不存在传递依赖 数据量大的情况下如 百万级数据肯定不能按第三范式来了 必须适当增加冗余数据 减少查询的关联次 数 当然做好索引是大前提 还可以考虑使用分区表 还不行的话那就换个牛叉点的 database 3 写一个 SQL 存储过程 建立一个表 USER 字段是姓名 年龄 职位 权限 然后向里面插入 6 条数据 然后查询出年龄大于 18 的所有信息 Create table user Name varchar 20 Age int Position varchar 20 Quanxian varchar 20 Insert into user values 111 11 11111 1111111 Insert into user values 112 12 11112 1111112 Insert into user values 113 13 11113 1111113 Insert into user values 114 14 11114 1111114 Insert into user values 115 15 11115 1111115 Insert into user values 116 16 11116 1111116 Create procedure selectUser As Select from user where age 18 4 1 你对哪种数据库最熟悉 使用该数据库多少年 简单描述对该数据库的理解 答 SQL 适合中小型企业使用 2 对其它较熟悉的商业数据库的了解及使用年限 3 如何将数据库 实例 备份和还原 针对自己最熟悉的 答 SQL 在企业管理器上右点要备份或还原的数据 从所有任务选择备份或还原 4 如何知道一个表或视图的结构 答 查询系统表 sysobjects 5 描述 INNER JOIN 的功能和已在何种情况下使用 INNER JOIN 答 内联接是用比较运算符比较要联接列的值的联接 连接的 2 个表都要满足 5 存储过程和 存储过程和 SQL 语句的优缺点语句的优缺点 存储过程的优缺点 优点 1 由于应用程序随着时间推移会不断更改 增删功能 T SQL 过程代码会变得更复杂 StoredProcedure 为封装此代码提供了一个替换位置 2 执行计划 存储过程在首次运行时将被编译 这将产生一个执行计划 实际上是 Microsoft SQL Server 为在存储过程中获取由 T SQL 指定的结果而必须采取的步骤的记录 缓存改善性能 但 sql server 新版本 执行计划已针对所有 T SQL 批处理进行了缓存 而不管它们是否在存储过 程中 所以没比较优势了 3 存储过程可以用于降低网络流量 存储过程代码直接存储于数据库中 所以不会产生大量 T sql 语句的 代码流量 4 使用存储过程使您能够增强对执行计划的重复使用 由此可以通过使用远程过程调用 RPC 处理服务 器上的存储过程而提高性能 RPC 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行 计划 并只需插入更新的参数值 5 可维护性高 更新存储过程通常比更改 测试以及重新部署程序集需要较少的时间和精力 6 代码精简一致 一个存储过程可以用于应用程序代码的不同位置 7 更好的版本控制 通过使用 Microsoft Visual SourceSafe 或某个其他源代码控制工具 您可以轻松 地恢复到或引用旧版本的存储过程 8 增强安全性 a 通过向用户授予对存储过程 而不是基于表 的访问权限 它们可以提供对特定数据的访问 b 提高代码安全 防止 SQL 注入 但未彻底解决 例如 将数据操作语言 DML 附加到输入参数 c SqlParameter 类指定存储过程参数的数据类型 作为深层次防御性策略的一部分 可以验证用户提供 的值类型 但也不是万无一失 还是应该传递至数据库前得到附加验证 缺点 1 如果更改范围大到需要对输入存储过程的参数进行更改 或者要更改由其返回的数据 则您仍需要更新 程序集中的代码以添加参数 更新 GetValue 调用 等等 这时候估计比较繁琐了 2 可移植性差 由于存储过程将应用程序绑定到 SQL Server 因此使用存储过程封装业务逻辑将限制应用程序的可移植 性 如果应用程序的可移植性在您的环境中非常重要 则将业务逻辑封装在不特定于 RDBMS 的中间层中 可能是一个更佳的选择 Sql 语句灵活 可移植性强 查询速度比存储过程慢些 6 为数据库创建索引都需要注意些什么 为数据库创建索引都需要注意些什么 1 索引能提高速度的关键就是索引所占的空间要比表小得多 2 注意索引的大小 有一些表可以建成索引组织表 3 索引的列不要太多 要选择一些 selective 比较低的列建 B tree 索引 选择 selective 高的列建 bitmap 索 引 在更新比较多的表不不要建 bitmap 索引 4 将 selective 较低的列放在前面 5 在更新不多的表上建索引时 可以考虑用 compress 选择 以节约索引的空间 7 一组 一组 SQL 相关操作面试题相关操作面试题 1 在表 A 中有数据 ID MO 1 Y 2 N 请用一个 SELECT 语句写出 如果 MO 的值为 Y 返回 YES 为 N 返回 NO 效果如下 ID MO 1 YES 2 NO SELECT ID MO CASE WHEN MO Y THEN YES WHEN MO N THEN NO END FROM Az 2 在表 A 中查询出自动增长列中 31 到 40 之间的数据 注意可能不是连续的 select from A where id between 31 and 40 3 有一个表 table 中有一个自动增长字段 ID 如果在存储过程中向这个表插入一条记录后 如何获得新记录 的 ID 写出获取新记录 ID 的函数即可 CREATE FUNCTION c currentId RETURNS int AS BEGIN declare lastId int select lastId max cid from c RETURN lastId END select tempdb dbo c currentId as 当前 C 表中最新的编号 4 having 的用法 是用来做什么的 having 用来对 group by 分组后的记录进行过滤 5 sql 中的什么函数可以转换为时间 select convert datetime 2000 01 01 select cast 2001 02 02 as datetime 6 查询数据放入一张临时表 select into A from Test select from A 8 如何使用 如何使用 SQL 进行模糊查询进行模糊查询 LIKE 条件一般用在指定搜索某字段的时候 通过 通配符的作用实现模糊查找功能 通配符可以 在前面也可以在后面或前后都有 搜索以 mian 开头 SELECT FROM teble WHERE title LIKE mian 搜索以 mian 结束 SELECT FROM teble WHERE title LIKE mian 搜索包含 mian SELECT FROM teble WHERE title LIKE mian 注释 表示 0 个或多个字符构成的字符串 表示单个字符 9 9 说一下说一下 mysql mysql oracleoracle 等常见数据库的分页实现方案 等常见数据库的分页实现方案 1 Oracle select from select row rownum rownum from query SQL row where rownum min 2 SQL Server select top pagesize from tablename where id not in select top pagesize page 1 id from tablename order by id order by id 3 MySQL select from tablename limit position counter 4 DB2 select from select rownumber as ROW NEXT from tablename where ROW NEXT between min and max 1 分页方案一 利用 Not In 和 SELECT TOP 分页 效率次之 语句形式 SELECT TOP 10 FROM TestTable WHERE ID NOT IN SELECT TOP 20 id FROM TestTable ORDERBY id ORDERBYID SELECT TOP 页大小 FROM TestTable WHERE ID NOT IN SELECT TOP 每页大小 1 待查询页数 1 id FROM 表 ORDERBY id ORDERBYID 思路 先查询出待查询页之前的全部条数的 id 查询 ID 不在这些 ID 中的指定数量条数 2 分页方案二 利用 ID 大于多少和 SELECT TOP 分页 效率最高 语句形式 SELECT TOP 10 FROM TestTable WHERE ID SELECT MAX id FROM SELECT TOP20 id FROM TestTable ORDERBYid AS T ORDERBY ID SELECT TOP 页大小 FROM TestTable WHERE ID SELECT MAX id FROM SELECT TOP 每页大小 待查询页数 1 id FROM 表 ORDERBY id AS T ORDERBY ID 思路 先获得待查询页的之前全部条数 id 获得它们当中最大的 ID 号 以此最大 ID 号为标志 查找比这个 ID 号大的指定条数 3 分页方案三 SELECT TOP PageSize FROM SELECT TOP nPage PageSize from YOURTABLE order by id as a order by id desc SELECT TOP 每页条数 FROM SELECT TOP 待查询页 每页条数 from YOURTABLE order by id as a order by id desc 思路 先正排序查询出待查询页之前 包括当前页 的全部条数 然后将其倒排序 取指定条数 1010 几道 几道 SQLSQL 面试题面试题 1 解释一下 SQL 里面的 null 答案 null 代表一个 unknown 的值或者一个不存在的值 2 如何用 SQL 判断一个值是不是 null 答案 可以用 is null 来判断一个值是不是 null 3 所有包含 null 的计算表达式的返回结果都是 null 这句话正确吗 比如 5 null 返回 null 答案 正确 4 所有与 null 得比较运算都返回 unknown 正确吗 答案 正确 5 unknown or true true 正确吗 答案 正确 6 unknown or false unknown 正确吗 答案 正确 7 unknown or unknown unknown 正确吗 答案 正确 8 true and unknown unknown 正确吗 答案 正确 9 false and unknown false 正确吗 答案 正确 10 unknown and unknown unknown 正确吗 答案 正确 11 not unknown unknown 正确吗 答案 正确 1111 介绍一下游标 介绍一下游标 游标是从数据表中提取出来的数据 以临时表的形式存放在内存中 在游标中有一个数据指针 在初始状 态下指向的是首记录 利用 fetch 语句可以移动该指针 从而对游标中的数据进行各种操作 然后将操作 结果写回数据表中 由 SELECT 语句返回的行集包括所有满足该语句 WHERE 子句中条件的行 由语句所返回的这一完整的行 集被称为结果集 应用程序 特别是交互式联机应用程序 并不总能将整个结果集作为一个单元来有效地 处理 这些应用程序需要一种机制以便每次处理一行或一部分行 游标就是提供这种机制的结果集扩展 游标通过以下方式扩展结果处理 允许定位在结果集的特定行 从结果集的当前位置检索一行或多行 支持对结果集中当前位置的行进行数据修改 为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持 提供脚本 存储过程和触发器中使用的访问结果集中的数据的 Transact SQL 语句 1212 介绍一下 介绍一下 SQLSQL ServerServer 的全文索引的全文索引 全文索引可以对存储在 SQL Server 数据库中的文本数据执行快速检索功能 同 LIKE 谓词不同 全文索引 只对字符模式进行操作 对字和语句执行搜索功能 全文索引对于查询非结构化数据非常有效 一般情况 下 可以对 char varchar 和 nvarchar 数据类型的列创建全文索引 同时 还可以对二进制格式的列创 建索引 如 image 和 varbinary 数据类型列 对于这些二进制数据 无法使用 LIKE 谓词 为了对表创建全文索引 表必须包含单个 唯一 非空列 当执行全文检索的时候 SQL Server 搜索引 擎返回匹配搜索条件的行的键值 一般情况 使用 sql server 中的全文索引 经过大体 4 个步骤 安装全文索引服务 为数据表建立全文索引目录 使全文索引与数据表内容同步 使用全文索引进行查询 1313 什么是唯一索引 什么是唯一索引 唯一索引可以确保索引列不包含重复的值 在多列唯一索引的情况下 该索引可以确保索引列中每个值组 合都是唯一的 例如 如果在 last name first name 和 middle initial 列的组合上创建了唯一索引 full name 则该表中任何两个人都不可以具有相同的全名 聚集索引和非聚集索引都可以是唯一的 因此 只要列中的数据是唯一的 就可以在同一个表上创建一个 唯一的聚集索引和多个唯一的非聚集索引 只有当唯一性是数据本身的特征时 指定唯一索引才有意义 如果必须实施唯一性以确保数据的完整性 则应在列上创建 UNIQUE 或 PRIMARY KEY 约束 而不要创建唯一索引 例如 如果打算经常查询雇员表 主键为 emp id 中的社会安全号码 ssn 列 并希望确保社会安全号码的唯一性 则在 ssn 列上创 建 UNIQUE 约束 如果用户为一个以上的雇员输入了同一个社会安全号码 则会显示错误 1414 几道数据库笔试题 几道数据库笔试题 1 张表 学生表 S 课程 C 学生课程表 SC 学生可以选修多门课程 一门课程可以被多个学生选修 通过 SC 表关联 SQL 1 写出建表语句 答 建表语句如下 mysql 数据库 create table s id integer primary key name varchar 20 create table c id integer primary key name varchar 20 create table sc sid integer references s id cid integer references c id primary key sid cid 2 写出 SQL 语句 查询选修了所有选修课程的学生 答 SQL 语句如下 select stu id stu name from s stu where select count from sc where sid stu id select count from c 3 写出 SQL 语句 查询选修了至少 5 门以上的课程的学生 答 SQL 语句如下 select stu id stu name from s stu where select count from sc where sid stu id 5 2 数据库表 Test 结构如下 SQL IDNAMEAGEMANAGER 所属主管人 ID 106A30104 109B19104 104C20111 107D35109 112E25120 119F45NULL 要求 列出所有年龄比所属主管年龄大的人的 ID 和名字 答 SQL 语句如下 select employee name from test employee where employee age select manager age from test manager where manager id employee manager 3 有 3 个表 15 分钟 SQL Student 学生表 学号 姓名 性别 年龄 组织部门 Course 课程表 编号 课程名称 Sc 选课表 学号 课程编号 成绩 表结构如下 1 写一个 SQL 语句 查询选修了 计算机原理 的学生学号和姓名 3 分钟 答 SQL 语句如下 select stu sno stu sname from Student stu where select count from sc where sno stu sno and cno select cno from Course where cname 计算机原理 0 2 写一个 SQL 语句 查询 周星驰 同学选修了的课程名字 3 分钟 答 SQL 语句如下 select cname from Course where cno in select cno from sc where sno select sno from Student where sname 周星驰 3 写一个 SQL 语句 查询选修了 5 门课程的学生学号和姓名 9 分钟 答 SQL 语句如下 select stu sno stu sname from student stu where select count from sc where sno stu sno 5 1515 ORACLEORACLE 面试题面试题 1 解释 FUNCTION PROCEDURE 和 PACKAGE 区别 答 function 和 procedure 是 PL SQL 代码的集合 通常为了完成一个任务 procedure 不需要返回任何 值而 function 将返回一个值在另一方面 Package 是为了完成一个商业功能的一组 function 和 procedure 的集合 2 取某个序列的当前值的 PL SQL 语句怎么写 答 SELECT 序列名 CURRVAL FROM DUAL 3 说明 ORACLE 数据库实例与 ORACLE 用户的关系 答 实例可以包含多个用户 一个用户只能在一个实例下 4 创建数据库时 自动建立的 tablespace 名称 答 SYSTEM tablespace 5 创建用户时 需要赋予新用户什么权限才能使它连上数据库 答 CONNECT 6 IMPORT 和 SQL LOADER 这 2 个工具的不同点 答 这两个 ORACLE 工具都是用来将数据导入数据库的 区别是 IMPORT 工具只能处理由另一个 ORACLE 工具 EXPORT 生成的数据 而 SQL LOADER 可以导入不同的 ASCII 格式的数据源 7 解释冷备份和热备份的不同点以及各自的优点 答 热备份针对归档模式的数据库 在数据库仍旧处于工作状态时进行备份 而冷备份指在数据库关闭后 进行备份 适用于所有模式的数据库 热备份的优点在于当备份时 数据库仍旧可以被使用并且可以将数 据库恢复到任意一个时间点 冷备份的优点在于它的备份和恢复操作相当简单 并且由于冷备份的数据库 可以工作在非归档模式下 数据库性能会比归档模式稍好 因为不必将 archive log 写入硬盘 8 比较 truncate 和 delete 命令 答 两者都可以用来删除表中所有的记录 区别在于 truncate 是 DDL data defining language 数据 定义语言 它移动 HWK 不需要 rollback segment 处理事务回滚操作 而 Delete 是 DML data manufacturing language 数据操作语言 操作 需要 rollback segment 处理事务回滚操作 且花费较 长时间 9 给出数据的相关约束类型 答 主键约束 外键约束 非空约束 唯一约束 检查约束 10 说明索引的类型与作用 答 索引类型上分为聚集索引 非聚集索引其作用是加快查询速度 11 解释归档和非归档模式之间的不同和它们各自的优缺点 答 归档模式是指你可以备份所有的数据库 transactions 并恢复到任意一个时间点 非归档模式则相反 不能恢复到任意一个时间点 但是非归档模式可以带来数据库性能上的少许提高 12 解释 ORACLE HOME 和 ORACLE BASE 的区别 答 ORACLE BASE 是 oracle 的根目录 ORACLE HOME 是 oracle 产品的目录 13 获取某个字符字段的最后 3 个字符的函数是什么 答 select substr 字段 length 字段 3 from 表 14 取当前系统时间点日期 不包括年月 的 SQL 写法是怎样的 答 Select substr to char sysdate YYYYMMDDh24hh MM SS 5 from dual 15 返回大于等于 N 的最小整数值 答 select ceil N from dual 16 将根据字符查询转换后结果 规则为 A 转换为 男 B 转换为 女 其他字符转换为 未知 请用一个 SQL 语句写出 答 select decode 字符 A 男 B 女 未知 from dual 17 如何搜索出前 N 条记录 答 select from 表 where Rownum N 18 如何搜索出第 N M 条记录 答 select from 表 where Rownum M Minus select from 表 where Rownum N 19 有一个数据表 TEST 字段如下 ID number PARENT ID number NAME Varchar 20 请使用 PL SQL 来按父子层次关系查询出该表的所有数据 答 Select from test a test b Where a parent id b id 20 怎样用 SQL 语句实现查找一列中的第 N 大值 答 select from select from 表 order by 列名 Desc where Rownum N Minus select from select from 表 order by 列名 Desc where Rownum sysdate 30 进行查找 当数据量小的时候看不出来 数据量大一些就会发现执行很慢 但日期 型字 段上也是有索引的 为什么会慢呢 原来是 Oracle 在进行查找的时候不断地去取 sysdate 这个不 断变化的值 而不是我们想象中的一次产生一个条件语句然后进行查找 为了加快速度 我 们可以先把 当天的日期取出来 然后转成字符串后再用如下语句查 select from eventtable where eventdate to date 2001 12 1 yyyy mm dd 速度相差几十倍 2525 主键主键 Primary Primary Key Key 约束和唯一性约束和唯一性 UNIQUE UNIQUE 约束有什么区别 约束有什么区别 一个表只能由一个主键 一个表可以有很多个唯一键 UNIQUE Key 主键不允许有 null 值 UNIQUE 允许 null 值 2626 OracleOracle 中中 delete delete truncatetruncate 和和 dropdrop 的区别 的区别 Delete 命令用来删除表的全部或者一部分数据行 执行 delete 之后 用户需要提交 commmit 或者回滚 rollback transaction 来执行删除或者撤销删除 delete 命令会触发这个表上所有的 delete 触发器 Truncate 删除表中的所有数据 这个操作不能回滚 也不会触发这个表上的触发器 TRUNCATE 比 delete 更快 占用的空间更小 Drop 命令从数据库中删除表 所有的数据行 索引和权限也会被删除 所有的 DML 触发器也不会被触发 这个命令也不能回滚 2727 MYSQLMYSQL 面试题 简单叙述一下面试题 简单叙述一下 MYSQLMYSQL 的优化的优化 1 数据库的设计 尽量把数据库设计的更小的占磁盘空间 1 尽可能使用更小的整数类型 mediumint 就比 int 更合适 2 尽可能的定义字段为 not null 除非这个字段需要 null 3 如果没有用到变长字段的话比如 varchar 那就采用固定大小的纪录格式比如 char 4 表的主索引应该尽可能的短 这样的话每条纪录都有名字标志且更高效 5 只创建确实需要的索引 索引有利于检索记录 但是不利于快速保存记录 如果总是要在表的组合字 段上做搜索 那么就在这些字段上创建索引 索引的第一部分必须是最常使用的字段 如果总是需要用到 很多字段 首先就应该多复制这些字段 使索引更好的压缩 6 所有数据都得在保存到数据库前进行处理 7 所有字段都得有默认值 8 在某些情况下 把一个频繁扫描的表分成两个速度会快好多 在对动态格式表扫描以取得相关记录时 它可能使用更小的静态格式表的情况下更是如此 2 系统的用途 1 尽量使用长连接 2 explain 复杂的 SQL 语句 3 如果两个关联表要做比较话 做比较的字段必须类型和长度都一致 4 LIMIT 语句尽量要跟 order by 或者 distinct 这样可以避免做一次 full table scan 5 如果想要清空表的所有纪录 建议用 truncate table tablename 而不是 delete from tablename 6 能使用 STORE PROCEDURE 或者 USER FUNCTION 的时候 7 在一条 insert 语句中采用多重纪录插入格式 而且使用 load data infile 来导入大量数据 这比 单纯的 indert 快好多 8 经常 OPTIMIZE TABLE 来整理碎片 9 还有就是 date 类型的数据如果频繁要做比较的话尽量保存在 unsigned int 类型比较快 3 系统的瓶颈 1 磁盘搜索 并行搜索 把数据分开存放到多个磁盘中 这样能加快搜索时间 2 磁盘读写 IO 可以从多个媒介中并行的读取数据 3 CPU 周期 数据存放在主内存中 这样就得增加 CPU 的个数来处理这些数据 4 内存带宽 当 CPU 要将更多的数据存放到 CPU 的缓存中来的话 内存的带宽就成了瓶颈 2828 一套经典的 一套经典的 SQLSQL 面试题面试题 1 一道 SQL 语句面试题 关于 group by 表内容 2005 05 09 胜 2005 05 09 胜 2005 05 09 负 2005 05 09 负 2005 05 10 胜 2005 05 10 负 2005 05 10 负 如果要生成下列结果 该如何写 sql 语句 胜 负 2005 05 09 2 2 2005 05 10 1 2 create table tmp rq varchar 10 shengfu nchar 1 insert into tmp values 2005 05 09 胜 insert into tmp values 2005 05 09 胜 insert into tmp values 2005 05 09 负 insert into tmp values 2005 05 09 负 insert into tmp values 2005 05 10 胜 insert into tmp values 2005 05 10 负 insert into tmp values 2005 05 10 负 1 select rq sum case when shengfu 胜 then 1 else 0 end 胜 sum case when shengfu 负 then 1 else 0 end 负 from tmp group by rq 2 select N rq N 勝 M 負 from select rq 勝 count from tmp where shengfu 胜 group by rq N inner join select rq 負 count from tmp where shengfu 负 group by rq M on N rq M rq 3 select a col001 a a1 胜 b b1 负 from select col001 count col001 a1 from temp1 where col002 胜 group by col001 a select col001 count col001 b1 from temp1 where col002 负 group by col001 b where a col001 b col001 2 请教一个面试中遇到的 SQL 语句的查询问题 表中有 A B C 三列 用 SQL 语句实现 当 A 列大于 B 列时选择 A 列否则选择 B 列 当 B 列大于 C 列时选择 B 列否则选择 C 列 select case when a b then a else b end case when b c then b esle c end from table name 3 面试题 一个日期判断的 sql 语句 请取出 tb send 表中日期 SendTime 字段 为当天的所有记录 SendTime 字段为 datetime 型 包含日期与 时间 select from tb where datediff dd SendTime getdate 0 4 有一张表 里面有 3 个字段 语文 数学 英语 其中有 3 条记录分别表示语文 70 分 数学 80 分 英 语 58 分 请用一条 sql 语句查询出这三条记录并按以下条件显示出来 并写出您的思路 大于或等于 80 表示优秀 大于或等于 60 表示及格 小于 60 分表示不及格 显示格式 语文 数学 英语 及格 优秀 不及格 select case when 语文 80 then 优秀 when 语文 60 then 及格 else 不及格 as 语文 case when 数学 80 then 优秀 when 数学 60 then 及格 else 不及格 as 数学 case when 英语 80 then 优秀 when 英语 60 then 及格 else 不及格 as 英语 from table 5 在 sqlserver2000 中请用 sql 创建一张用户临时表和系统临时表 里面包含两个字段 ID 和 IDValues 类型都是 int 型 并解释下两者的区别 用户临时表 create table xx ID int IDValues int 系统临时表 create table xx ID int IDValues int 区别 用户临时表只对创建这个表的用户的 Session 可见 对其他进程是不可见的 当创建它的进程消失时这个临时表就自动删除 全局临时表对整个 SQL Server 实例都可见 但是所有访问它的 Session 都消失的时候 它也自动删除 6 sqlserver2000 是一种大型数据库 他的存储容量只受存储介质的限制 请问它是通过什么方式实现这 种无限容量机制的 它的所有数据都存储在数据文件中 dbf 所以只要文件够大 SQL Server 的存储容量是可以扩大的 SQL Server 2000 数据库有三种类型的文件 主要数据文件 主要数据文件是数据库的起点 指向数据库中文件的其它部分 每个数据库都有一个主要数据文件 主要 数据文件的推荐文件扩展名是 mdf 次要数据文件 次要数据文件包含除主要数据文件外的所有数据文件 有些数据库可能没有次要数据文件 而有些数据库 则有多个次要数据文件 次要数据文件的推荐文件扩展名是 ndf 日志文件 日志文件包含恢复数据库所需的所有日志信息 每个数据库必须至少有一个日志文件 但可以不止一个 日志文件的推荐文件扩展名是 ldf 7 请用一个 sql 语句得出结果 从 table1 table2 中取出如 table3 所列格式数据 注意提供的数据及结果不准确 只是作为一个格式向 大家请教 如使用存储过程也可以 table1 月份 mon 部门 dep 业绩 yj 一月份 01 10 一月份 02 10 一月份 03 5 二月份 02 8 二月份 04 9 三月份 03 8 table2 部门 dep 部门名称 dname 01 国内业务一部 02 国内业务二部 03 国内业务三部 04 国际业务部 table3 result 部门 dep 一月份 二月份 三月份 01 10 null null 02 10 8 null 03 null 5 8 04 null null 9 1 select a 部门名称 dname b 业绩 yj as 一月份 c 业绩 yj as 二月份 d 业绩 yj as 三月 份 from table1 a table2 b table2 c table2 d where a 部门 dep b 部门 dep and b 月份 mon 一月份 and a 部门 dep c 部门 dep and c 月份 mon 二月份 and a 部门 dep d 部门 dep and d 月份 mon 三月份 and 2 select a dep sum case when b mon 1 then b yj else 0 end as 一月份 sum case when b mon 2 then b yj else 0 end as 二月份 sum case when b mon 3 then b yj else 0 end as 三月份 sum case when b mon 4 then b yj else 0 end as 四月份 sum case when b mon 5 then b yj else 0 end as 五月份 sum case when b mon 6 then b yj else 0 end as 六月份 sum case when b mon 7 then b yj else 0 end as 七月份 sum case when b mon 8 then b yj else 0 end as 八月份 sum case when b mon 9 then b yj else 0 end as 九月份 sum case when b mon 10 then b yj else 0 end as 十月份 sum case when b mon 11 then b yj else 0 end as 十一月份 sum case when b mon 12 then b yj else 0 end as 十二月份 from table2 a left join table1 b on a dep b dep 8 华为一道面试题 一个表中的 Id 有多个记录 把所有这个 id 的记录查出来 并显示共有多少条记录数 select id Count from tb group by id having count 1 select from select count ID as count from table group by ID T where T count 1 2929 为什么为什么 groupgroup byby 和和 orderorder byby 会使查询变慢会使查询变慢 group by 和 order by 操作通常需要创建一个临时表来处理查询的结果 所以如果查询结果很多的话会 严重影响性能 3030 SQLSQL 一些基础语法一些基础语法 1 1 增加字段增加字段 alteralter tabletable docdspdocdsp addadd dspcodedspcode char 200 char 200 2 2 删除字段删除字段 ALTERALTER TABLETABLE table NAMEtable NAME DROPDROP COLUMNCOLUMN column NAMEcolumn NAME 3 3 修改字段类型修改字段类型 ALTERALTER TABLETABLE table nametable name ALTERALTER COLUMNCOLUMN column namecolumn name new data typenew data type 4 sp rename4 sp rename 改名改名 更改当前数据库中用户创建对象 如表 列或用户定义数据类型 的名称 更改当前数据库中用户创建对象 如表 列或用户定义数据类型 的名称 语法语法 sp renamesp rename objname objname object name object name newname newname new name new name objtype objtype object type object type 如 如 EXECEXEC sp renamesp rename newname PartStock newname PartStock 5 sp help5 sp help 显示表的一些基本情况显示表的一些基本情况 sp helpsp help object name object name 如 如 EXECEXEC sp helpsp help PartStock PartStock 6 6 判断某一表判断某一表 PartStockPartStock 中字段中字段 PartVelocityPartVelocity 是否存在是否存在 ifif existsexists select select fromfrom syscolumnssyscolumns wherewhere id object id PartStock id object id PartStock andand name PartVelocity name PartVelocity printprint PartVelocity PartVelocity exists exists elseelse printprint PartVelocity PartVelocity notnot exists exists 另法 另法 判断表的存在性 判断表的存在性 selectselect count count fromfrom sysobjectssysobjects wherewhere type U type U andand name name 你的表名你的表名 判断字段的存在性 判断字段的存在性 selectselect count count fromfrom syscolumnssyscolumns wherewhere idid select select idid fromfrom sysobjectssysobjects wherewhere type U type U andand name name 你的表名你的表名 andand namename 你要判断的字段名你要判断的字段名 一个小例子一个小例子 假设要处理的表名为假设要处理的表名为 tbtb 判断要添加列的表中是否有主键判断要添加列的表中是否有主键 ifif exists selectexists select 1 1 fromfrom sysobjectssysobjects wherewhere parent obj object id tb parent obj object id tb andand xtype PK xtype PK beginbegin printprint 表中已经有主键表中已经有主键 列只能做为普通列添加列只能做为普通列添加 添加添加 intint 类型的列类型的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中世纪欧洲庄园经济的组织形式
- 2026年建筑维修资金合同
- 护理三基考试试题库(附答案)
- 1.2互联网应用的基本特征教学教案-第1册信息科技同步教学河北大学版2024新教材
- 2025年医院护理三基培训考试试题(附答案)
- 高中语文4.1 望海潮(东南形胜)教案及反思
- 2024年反假货币知识线上答题活动考试题库含答案
- 2025年家政服务员职业技能鉴定考试试卷及答案
- 人教版八年级历史与社会上册教学设计:2-3日本的大化改新
- 初中人教版(2024)第三单元 物质构成的奥秘教案
- 居家生活安全课件
- 《设计概论》高职艺术设计类课程全套教学课件
- 电力系统自动化专业知识要点
- 2025年生产安全事故应急救援演练计划
- 金融学期末试题及答案
- GB/T 3091-2025低压流体输送用焊接钢管
- DB32-T 5082-2025 建筑工程消防施工质量验收标准
- 人教版六年级上册道德与法治全册教案教学设计
- 2025年高考英语二轮复习测试02 非谓语动词+语法填空(测试)(解析版)
- 项目式课程幼儿园培训
- 教育惩戒的场合分析与尺度
评论
0/150
提交评论