数据库面试
Ⅰ java面试题中一般数据库会问什么内容
数据库基础(面试常见题)
一、数据库基础
1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式
2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control)
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等
数据操纵:Select ,insert,update,delete,
数据控制:grant,revoke
3. SQL常用命令:
CREATE TABLE Student(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL);//建表
CREATE VIEW view_name AS
Select * FROM Table_name;//建视图
Create UNIQUE INDEX index_name ON TableName(col_name);//建索引
INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插入
INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入视图实际影响表
UPDATE tablename SET name=’zang 3’ condition;//更新数据
DELETE FROM Tablename WHERE condition;//删除
GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT OPTION];//授权
REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权
列出工作人员及其领导的名字:
Select E.NAME, S.NAME FROM EMPLOYEE E S
WHERE E.SUPERName=S.Name
4. 视图:
5. 完整性约束:实体完整性、参照完整性、用户定义完整性
Ⅱ 面试中常问:mysql数据库做哪些优化也提高mysql性能
在开始演示之前,我们先介绍下两个概念。
概念一,数据的可选择性基数,也就是常说的cardinality值。
查询优化器在生成各种执行计划之前,得先从统计信息中取得相关数据,这样才能估算每步操作所涉及到的记录数,而这个相关数据就是cardinality。简单来说,就是每个值在每个字段中的唯一值分布状态。
比如表t1有100行记录,其中一列为f1。f1中唯一值的个数可以是100个,也可以是1个,当然也可以是1到100之间的任何一个数字。这里唯一值越的多少,就是这个列的可选择基数。
那看到这里我们就明白了,为什么要在基数高的字段上建立索引,而基数低的的字段建立索引反而没有全表扫描来的快。当然这个只是一方面,至于更深入的探讨就不在我这篇探讨的范围了。
概念二,关于HINT的使用。
这里我来说下HINT是什么,在什么时候用。
HINT简单来说就是在某些特定的场景下人工协助MySQL优化器的工作,使她生成最优的执行计划。一般来说,优化器的执行计划都是最优化的,不过在某些特定场景下,执行计划可能不是最优化。
比如:表t1经过大量的频繁更新操作,(UPDATE,DELETE,INSERT),cardinality已经很不准确了,这时候刚好执行了一条SQL,那么有可能这条SQL的执行计划就不是最优的。为什么说有可能呢?
来看下具体演示
譬如,以下两条SQL,
A:
- select * from t1 where f1 = 20;
B:
- select * from t1 where f1 = 30;
- mysql> desc t1;+------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+------------+--------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || rank1 | int(11) | YES | MUL | NULL | || rank2 | int(11) | YES | MUL | NULL | || log_time | datetime | YES | MUL | NULL | || prefix_uid | varchar(100) | YES | | NULL | || desc1 | text | YES | | NULL | || rank3 | int(11) | YES | MUL | NULL | |+------------+--------------+------+-----+---------+----------------+7 rows in set (0.00 sec)
- mysql> select count(*) from t1;+----------+| count(*) |+----------+| 32768 |+----------+1 row in set (0.01 sec)
SQL C:
- select * from t1 where rank1 = 1 or rank2 = 2 or rank3 = 2;
SQL D:
- select * from t1 where rank1 =100 and rank2 =100 and rank3 =100;
- mysql> explain format=json select * from t1 where rank1 =1 or rank2 = 2 or rank3 = 2G*************************** 1. row ***************************EXPLAIN: { "query_block": { "select_id": 1, "cost_info": { "query_cost": "3243.65" }, "table": { "table_name": "t1", "access_type": "ALL", "possible_keys": [ "idx_rank1", "idx_rank2", "idx_rank3" ], "rows_examined_per_scan": 32034, "rows_proced_per_join": 115, "filtered": "0.36", "cost_info": { "read_cost": "3232.07", "eval_cost": "11.58", "prefix_cost": "3243.65", "data_read_per_join": "49K" }, "used_columns": [ "id", "rank1", "rank2", "log_time", "prefix_uid", "desc1", "rank3" ], "attached_condition": "((`ytt`.`t1`.`rank1` = 1) or (`ytt`.`t1`.`rank2` = 2) or (`ytt`.`t1`.`rank3` = 2))" } }}1 row in set, 1 warning (0.00 sec)
- mysql> explain format=json select /*+ index_merge(t1) */ * from t1 where rank1 =1 or rank2 = 2 or rank3 = 2G*************************** 1. row ***************************EXPLAIN: { "query_block": { "select_id": 1, "cost_info": { "query_cost": "441.09" }, "table": { "table_name": "t1", "access_type": "index_merge", "possible_keys": [ "idx_rank1", "idx_rank2", "idx_rank3" ], "key": "union(idx_rank1,idx_rank2,idx_rank3)", "key_length": "5,5,5", "rows_examined_per_scan": 1103, "rows_proced_per_join": 1103, "filtered": "100.00", "cost_info": { "read_cost": "330.79", "eval_cost": "110.30", "prefix_cost": "441.09", "data_read_per_join": "473K" }, "used_columns": [ "id", "rank1", "rank2", "log_time", "prefix_uid", "desc1", "rank3" ], "attached_condition": "((`ytt`.`t1`.`rank1` = 1) or (`ytt`.`t1`.`rank2` = 2) or (`ytt`.`t1`.`rank3` = 2))" } }}1 row in set, 1 warning (0.00 sec)
不加HINT,
- mysql> explain format=json select * from t1 where rank1 =100 and rank2 =100 and rank3 =100G*************************** 1. row ***************************EXPLAIN: { "query_block": { "select_id": 1, "cost_info": { "query_cost": "534.34" }, "table": { "table_name": "t1", "access_type": "ref", "possible_keys": [ "idx_rank1", "idx_rank2", "idx_rank3" ], "key": "idx_rank1", "used_key_parts": [ "rank1" ], "key_length": "5", "ref": [ "const" ], "rows_examined_per_scan": 555, "rows_proced_per_join": 0, "filtered": "0.07", "cost_info": { "read_cost": "478.84", "eval_cost": "0.04", "prefix_cost": "534.34", "data_read_per_join": "176" }, "used_columns": [ "id", "rank1", "rank2", "log_time", "prefix_uid", "desc1", "rank3" ], "attached_condition": "((`ytt`.`t1`.`rank3` = 100) and (`ytt`.`t1`.`rank2` = 100))" } }}1 row in set, 1 warning (0.00 sec)
加了HINT,
- mysql> explain format=json select /*+ index_merge(t1)*/ * from t1 where rank1 =100 and rank2 =100 and rank3 =100G*************************** 1. row ***************************EXPLAIN: { "query_block": { "select_id": 1, "cost_info": { "query_cost": "5.23" }, "table": { "table_name": "t1", "access_type": "index_merge", "possible_keys": [ "idx_rank1", "idx_rank2", "idx_rank3" ], "key": "intersect(idx_rank1,idx_rank2,idx_rank3)", "key_length": "5,5,5", "rows_examined_per_scan": 1, "rows_proced_per_join": 1, "filtered": "100.00", "cost_info": { "read_cost": "5.13", "eval_cost": "0.10", "prefix_cost": "5.23", "data_read_per_join": "440" }, "used_columns": [ "id", "rank1", "rank2", "log_time", "prefix_uid", "desc1", "rank3" ], "attached_condition": "((`ytt`.`t1`.`rank3` = 100) and (`ytt`.`t1`.`rank2` = 100) and (`ytt`.`t1`.`rank1` = 100))" } }}1 row in set, 1 warning (0.00 sec)
如果f1的值刚好频繁更新的值为30,并且没有达到MySQL自动更新cardinality值的临界值或者说用户设置了手动更新又或者用户减少了sample page等等,那么对这两条语句来说,可能不准确的就是B了。
这里顺带说下,MySQL提供了自动更新和手动更新表cardinality值的方法,因篇幅有限,需要的可以查阅手册。
那回到正题上,MySQL 8.0 带来了几个HINT,我今天就举个index_merge的例子。
示例表结构:
表记录数:
这里我们两条经典的SQL:
表t1实际上在rank1,rank2,rank3三列上分别有一个二级索引。
那我们来看SQL C的查询计划。
显然,没有用到任何索引,扫描的行数为32034,cost为3243.65。
我们加上hint给相同的查询,再次看看查询计划。
这个时候用到了index_merge,union了三个列。扫描的行数为1103,cost为441.09,明显比之前的快了好几倍。
我们再看下SQL D的计划:
对比下以上两个,加了HINT的比不加HINT的cost小了100倍。
总结下,就是说表的cardinality值影响这张的查询计划,如果这个值没有正常更新的话,就需要手工加HINT了。相信MySQL未来的版本会带来更多的HINT。
Ⅲ 前几天面试,面试官问会不会用数据库,完全不懂这数据库指的是什么
简单来说数据库就是个电脑中用于储存数据的软件工具;
你说的文案类的工作,可能就只版是要求一些权简单的数据库操作,因为数据库中可以用特定的方法,对储存的数据进行查询,更新及插入操作(也就是对储存数据的维护)
例如:
如果公司的人事资料在数据库中建立储存,就可以通过数据库查询人员的相关信息(例如入职日期,学历,出生年月等),也可以统计在1个月中入职多少,离职多少的信息
有问题,请继续追问,没问题,请采纳,谢谢~
Ⅳ 数据库面试题
createdatabaseaaa;createtableusers(idintNOTNULLAUTO_INCREMENT,user_namechar(10),moneychar(10),add_timedatetimePRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;3.insertintousersvalues(2,'a1','a11',current_date),(3,'a1','a11',current_date),(4,'a1','a11',current_date),(5,'a1','a11',current_date),(6,'a1','a11',current_date),(7,'a1','a11',current_date),(8,'a1','a11',current_date),(9,'a1','a11',current_date),(10,'a1','a11',current_date),(11,'a1','a11',current_date);4.参考第二步5.参考第三步6.selecta.username,a.money,b.email,b.user_phone,b.weighfromusersa,user_infobwherea.id=b.idanda.id=XXX(你指定的);7.mysqlmp-uroot-paaa>/tmp/aaa.sql(需要输入密码)我用的是mysql上的写法
Ⅳ 数据库存储过程有哪些,面试题
数据库存储过程有哪些
/*
系统存储过程很多,有些常用,有些不常用
常用:
sp_attach_db 附加数据库到一个服务器中
sp_columns 返回在当前环境中列的信息
sp_databases 列出当前系统中的数据库
sp_configure 显示或修改当前服务器的全局配置
sp_depends 显示数据库对象的依赖信息
sp_executesql 执行动态的T-SQL语句
sp_help 报告有关数据库对象的信息
sp_helpdb 返回指定数据库或全部数据库的信息
sp_helptext 显示规则、默认值、存储过程、触发器、视图等的未加密的文本定义信息
sp_indexes 返回指定远程表的索引信息
sp_lock 返回有关锁的信息
sp_password 增加或者修改指定login的口令
sp_rename 更改用户创建的数据库对象名称
sp_renamedb 更改数据库名称
sp_spaceused 显示数据库的空间使用情况
sp_tables 返回在当前环境中可以被查询的对象的列表
sp_who 提供当前用户和进程的信息
不常用:
sp_addlinkedserver 创建一个允许执行分布式查询的链接服务器
sp_addlinkedsrvlogin 在本地服务器和远程服务器之间创建login帐户的映射关系
sp_addlogin 创建一个新的login帐户
sp_add_agent_parameter 在代理文件中增加一个参数
sp_add_agent_profile 为复制代理增加一个代理文件
sp_add_alert 创建一个警报
sp_add_category 在服务器上,增加一种作业、警报或者操作员的特定分类
sp_add_data_file_recover_suspect_db 当数据库复原不能完成时,向文件组增加一个数据文件
sp_add_file_recover_suspect_db 对于复原有问题的数据库增加一个文件
sp_add_job 增加一个sql server agent可以执行的作业
sp_add_jobschele 为作业创建调度
sp_add_jobserver 把指定的作业增加到指定服务器上
sp_add_jobstep 在作业中增加一步或一个操作
sp_add_log_file_recover_suspect_db 当数据库复原不能完成时,向文件组增加一个日志文件
sp_add_notification 为警报创建一个通知
sp_add_operator 为警报或者作业创建一个操作员
sp_add_targetservergroup 增加指定的服务器组
sp_add_targetsvrgrp_member 在指定的目标服务器组增加一个目标服务器
sp_addalias 在数据库中为login帐户增加一个别名
sp_addapprole 在数据库中增加一个特殊的应用程序角色
sp_addarticle 创建文章,并把该文章添加到出版物中
sp_adddistpublisher 创建一个使用本地分布服务器的出版服务器
sp_adddistributiondb 在分布服务器上创建一个新的distribution数据库
sp_adddistributor 增加一个分布服务器
sp_addextendedproc 在系统中增加一个扩展存储过程
sp_addgroup 在当前数据库中增加一个组
sp_addmergearticle 为一个已有的合并出版物创建一个文章
sp_addmergefilter 为了连接另外一个表,创建一个合并过滤器
sp_addmergepublication 创建一个新的合并出版物
sp_addmergepullsubscription 增加一个拉回类型的订阅物
sp_addmergepullsubscription_agent 在订阅服务器上,为合并拉回订阅物创建一个代理
sp_addmergesubscription 创建一个推出或者拉回类型的订阅物
sp_addmessage 在系统中增加一个新的错误消息
sp_addpublicaton 创建一个快照复制或者事务复制出版物
sp_addpublicaton_snapshot 创建一个快照代理
sp_addpullsusscription 在当前订阅服务器的数据库中增加一个拉回或者匿名订阅物
sp_addpullsusscription_agent 在订阅服务器的数据库中增加一个新的代理
sp_addremotelogin 在本地服务器上增加一个远程login帐户,允许执行远程存储过程调用
sp_addrole 在当前数据库中增加一个角色
sp_addrolemember 为当前数据库中的一个角色增加一个安全性帐户
sp_addserver 添加一个远程或者本地服务器
sp_addsrvrolemember 为固定的服务器角色增加一个成员
sp_addsubscriber 增加一个新的订阅服务器
sp_addsubscriber_schele 为分布代理和合并代理增加一个调度
sp_addsubscription 订阅文章并且设置订阅服务器的状态
sp_addsynctrigers 在订阅服务器上创建一个立即修改触发器
sp_addtabletocontents 在合并跟踪表中插入一个参考
sp_addtype 创建一个用户定义的数据类型
sp_admpdevice 增加一个备份设备
sp_adser 在当前数据库中为一个新用户增加一个安全性帐户
sp_altermessage 修改错误信息的状态
sp_addly_job_to_targets 把作业应用到一个或者多个目标服务器
sp_approlepassword 在当前数据库中改变应用程序角色的口令
sp_aarticle_validation 为指定的文章初始化确认请求
sp_aarticlecolumn 指定在文章中使用的列
sp_aarticlefilter 创建一个用于水平过滤数据的过滤器
sp_articleview 当表被过滤时,为文章创建一个同步化对象
sp_attach_single_file_db 在当前服务器中,附加一个只有一个数据文件的数据库
sp_aautostats 对于一个指定的索引或统计,自动显示update statistics的状态
sp_bindefault 把默认值绑定到列或用户定义的数据类型上
sp_bindrule 把规则绑定到列或用户定义的数据类型上
sp_bindsession 绑定或解除绑定与实例中的其它事务的连接
sp_browsereplcmds 在分布数据库中返回一种可读格式的结果集
sp_catalogs 返回指定连接服务器中的系统目录列表,在本地服务器中等价于数据库列表
sp_certify_removable 确认在可移动介质上用于分布的数据库是否正确配置
sp_change_agent_parameter 修改复制代理配置使用的参数
sp_change_agent_profile 修改复制代理配置使用的配置参数
sp_change_users_login 修改login与当前数据库中用户之间的关系
sp_changearticle 改变文章的属性
sp_changedbowner 改变当前数据库的所有者
sp_changedistpublisher 改变分布出版服务器的属性
sp_changedistributor_password 改变分布服务器的口令
sp_changedistributor_property 改变分布服务器的属性
sp_changedistribtutiondb 改变分布数据库的属性
sp_changegroup 改变安全性帐户所属的角色
sp_changemergearticle 改变合并文章的属性
sp_changemergefilter 改变一些合并过滤器的属性
sp_changemergepublication 改变合并出版物的属性
sp_changemergepullsubscription 改变合并拉回出版物的属性
sp_changemergesubscription 改变合并的推出或者拉回出版物的属性
sp_changeobjectowner 改变对象的所有者
sp_changepublication 改变出版物的属性
sp_changesubscriber 改变用于订阅服务器的选项
sp_changesubscriber_schele 改变用于分布式代理和事务代理的订阅服务器的调度
sp_changesubstatus 改变订阅服务器的状态
sp_column_privileges 返回列的权限信息
sp_column_privileges_ex 返回在链接服务器上指定表的列的权限信息
sp_columns_ex 返回在链接服务器上列的信息
sp_create_removable 创建一个可移动介质数据库
sp_createstats 创建单列的统计信息
sp_cursor 用于请求定位更新
sp_cursor_list 报告当前打开的服务器游标属性
sp_cursorclose 关闭和释放游标
sp_cursorfetch 从游标中取出数据行
sp_cursoropen 定义与游标和游标选项相关联的 SQL 语句,然后填充游标
sp_cursoroption 用于设置各种游标选项
sp_cycle_errorlog 关闭错误日志文件重新开始错误记录
sp_datatype_info 返回当前环境支持的数据类型信息
sp_dbfixedrolepermission 显示每一个固定数据库角色的许可
sp_dboption 显示或修改数据库选项
sp_dbremove 删除数据库和与该数据库相关的所有文件
sp_defaultdb 设置登录帐户的默认数据库
sp_defaultlanguage 设置登录帐户的默认语言
sp_delete_alert 删除警报
sp_delete_backuphistory 删除备份和恢复的历史信息
sp_delete_category 删除指定类型的作业、警报和操作员
sp_delete_job 删除一个作业
sp_delete_jobschele 删除作业的调度
sp_delete_jobserver 删除指定的目标服务器
sp_delete_jobstep 从作业中删除指定的作业步骤
sp_delete_notfication 删除发送给某个操作员的所有通知
sp_delete_operator 删除操作员
sp_delete_targetserver 从可以使用的目标服务器列表中删除指定的服务器
sp_delete_targetservergroup 删除指定的目标服务器组
sp_delete_targetsvrgrp_member 从目标服务器组中删除一个目标服务器
sp_deletemergeconflictrow 删除冲突表中的记录行
sp_denylogin 防止window用户或群组连接到 sql server
sp_describe_cursor 报告服务器游标的属性
sp_describe_cursor_columns 报告在服务器游标的结果集中列的属性
sp_describe_cursor_tables 报告服务器游标参考的基表信息
sp_detach_db 分享服务器中的数据库
sp_drop_agentparameger 删除配置文件中的一个或者多个参数
sp_drop_profile 删除配置文件
sp_dropalias 删除一个帐户的别名
sp_dropapprole 删除当前数据库中的应用程序角色
sp_droparticle 从出版物中删除一篇文章
sp_dropdevice 删除数据库或者备份设备
sp_dropdistpublisher 删除出版服务器
sp_dropdistributiondb 删除分布数据库
sp_dropdistributor 删除分布服务器
sp_dropdropextendedproc 删除一个扩展存储过程
sp_dropgroup 从当前数据库中删除角色
sp_droplinkedsrvlogin 删除一个本地服务器和连接服务器的映射帐户
sp_droplogin 删除一个登录帐户
sp_dropmergearticle 从合并出版物中删除一篇文章
sp_dropmergefilter 删除一个合并过滤器
sp_dropmergepublication 删除一个合并出版物和与其相关的快照复制
sp_dropmergepullsubscription 删除一个合并拉回订购物
sp_dropmergesubscription 删除一个订阅物
sp_dropmessage 删除一个消息
sp_droppublication 删除出版物和与其相关的文章
sp_droppullsubscription 删除当前订阅服务器数据库中的订阅物
sp_dropremotelogin 删除一个远程登录帐户
sp_droprole 从当前数据库中删除一个角色
sp_droprolemember 从当前数据库中的一个角色中删除一个安全性帐户
sp_dropserver 删除一个远程或者连接服务器列表中的服务器
sp_dropsrvrolemember 从一个固定的服务器角色中删除一个帐户
sp_dropsubscriber 删除一个订阅服务器
sp_dropsubscription 删除订阅物
sp_droptype 删除一种用户定义的数据类型
sp_dropuser 从当前数据库中删除一个用户
sp_dropdropwebtask 删除以前版本定义的web任务
sp_dsninfo 从一个与当前服务器相关的分布服务器返回ODBC和OLE DB数据源的信息
sp_mpparamcmd 返回存储在分布数据库中的参数化命令的详细信息
sp_enumcodepages 返回一个字符集和代码页的列表
sp_enumcustomresovers 返回所有可用的定制解决方案表表
sp_enumdsn 返回所有可用的odbc和ole db数据源列表
sp_enumfullsubscribers 返回订阅服务器的列表
sp_expired_subscription_cleanup 周期性地检查订阅物的状态是否失效
sp_fkeys 返回当前环境的外键信息
sp_foreignkeys 返回参照连接服务器的表的主键的外键
sp_fulltext_catalog 创建和删除全文本目录
sp_fulltext_column 指定某一个列是否参加全文本索引
sp_fulltext_database 从当前数据库中初始化全文本索引
sp_fulltext_service 改变Microsoft Search Service属性
sp_fulltext_table 标记用于全文本索引的表
sp_generatefilters 在外键表上创建一个过滤器
sp_get_distributor 确定一个分布服务器是否安装在某个服务器上
sp_getbindtoken 创建一个绑定的连接文本
sp_getmergedeletype 返回合并删除的类型
sp_grant_publication_access 在出版物的访问列表中增加一个用户
sp_grantdbaccess 在当前数据库中增加一个安全性帐户
sp_grantlogin 允许Windows用户或群组连接到 SQL Server
sp_help_agent_default 检索作为参数传送的代理类型的默认配置的标识号
sp_help_agent_parameter 返回代理配置的所有参数
sp_help_agent_profile 返回指定代理的配置
sp_help_alert 报告有关警报的信息
sp_help_category 提供有关作业、警报、操作员的指定种类的信息
sp_help_downloadlist 列出有关作业的信息
sp_help_fulltext_catalogs 返回有关全文本索引表的信息
sp_help_fulltext_columns 返回标记全文本索引的列信息
sp_help_fulltext_columns_cursor 使用游标检索标记为全文本的索引列
sp_help_fulltext_tables 返回标记为全文本索引的表
sp_help_fulltext_tables_cursor 使用游标返回标记为全文本索引的表
sp_help_job 返回有关作业的信息
sp_help_jobhistory 提供有关作业的历史信息
sp_help_jobschele 返回作业的调度信息
sp_help_jobserver 返回给定作业的服务器信息
sp_help_jobstep 返回作业的步骤信息
sp_help_operator 返回有关操作员的信息
sp_help_publication_access 返回可以访问指定出版物的帐户列表
sp_help_targetserver 列出全部目标服务器
sp_help_targetservergroup 列出指定服务器组中的全部目标服务器
sp_helparticle 显示有关文章的信息
sp_helpconstraint 返回有关约束的类型、名称等信息
sp_helpdbfixedrole 返回固定的服务器角色的列表
sp_helpdevice 返回有关数据库文件的信息
sp_helpdistpublisher 返回充当分布服务器的出版服务器的属性
sp_helpdistributiondb 返回分布数据库的属性信息
sp_helpdistributor 列出分布服务器、分布数据库、工作目录等信息
sp_helpextendproc 显示当前定义的扩展存储过程信息
sp_helpfile 返回与当前数据库相关的物理文件信息
sp_helpfilegroup 返回与当前数据库相关的文件组信息
sp_helpgroup 返回当前数据库中的角色信息
sp_helpindex 返回有关表的索引信息
sp_helplanguage 返回有关语言的信息
sp_helplinkedsrvlogin 返回链接服务器中映射的帐户信息
sp_helplogins 返回有关login和与其相关的数据库用户信息
sp_helpmergearticle 返回有关合并文章的信息
sp_helpmergearticleconflicts 返回有关冲突的出版物中的文章信息
sp_helpmergeconflictrows 返回在指定冲突表中的行
sp_helpmergefilter 返回有关合并过滤器的信息
sp_helpmergepublication 返回有关合并出版物的信息
sp_helpmergepullsubscription 返回有关拉回订阅物的信息
sp_helpmergesubscription 返回有关推出订阅物的信息
sp_help_notification 报告对于给定操作员的警报信息
sp_helppublication 返回有关出版物的信息
sp_helprole 返回当前数据库中的角色信息
sp_helprolemember 返回当前数据库中角色成员的信息
sp_helprotect 返回有关用户许可的信息
sp_helpserver 显示特定远程或者复制服务器的信息
sp_helpsort 显示系统的排列顺序和字符集的信息
sp_helpsrvrole 显示系统中的固定服务器角色列表
sp_helpsrvrolemember 显示系统中的固定服务器角色成员的信息
sp_helpsubscrberinfo 显示有关订阅服务器的信息
sp_helpsubscription 显示有特定出版物等有关的订阅物信息
sp_helpsubscription_properties 检索安全性信息
sp_helptrigger 显示触发器的类型
sp_helpuser 显示当前数据库中的用户、Windows NT用户和组、角色等信息
sp_indexoption 为用户定义的索引设置选项
sp_link_publication 设置立即修改订阅服务器的同步化触发器使用的配置和安全性信息
sp_linkedservers 返回在本地服务器上定义的链接服务器的列表
sp_makewebtask 创建一个执行html文档的任务
sp_manage_jobs_by_login 删除或者重新指定属于login的作业
sp_mergemmyupdate 制作用于合并复制的修改备份
sp_mergesubscription_cleanup 删除元数据
sp_monitor 显示系统的统计信息
sp_msx_defect 从多个服务器操作中删除当前服务器
sp_msx_enlist 增加当前服务器到可用的目标服务器列表中
sp_pkeys 返回某个表的主键信息
sp_post_msx_operation 插入一些目标服务器可以执行的信息
sp_primarykeys 返回主键列的信息
sp_processmail 使用扩展存储过程修改邮件信息
sp_procoption 设置或者显示过程选项
sp_publication_validation 初始化文章校验请求
sp_purge_jobhistory 删除作业的历史记录
sp_recompile 使存储过程和触发器在下一次运行时重新编译
sp_refreshsubscriptions 在拉回出版物中增加订阅物到文章中
sp_refreshview 刷新指定视图的元数据
sp_reinitmergepullsubscription 标记一个合并拉回订阅
sp_reiniteergesubscription 标记一个合并订阅
sp_reinitpullsubscription 标记一个事务订阅或者匿名订阅
sp_reinitsubscription 重新初始化订阅
sp_remoteoption 显示或者修改远程登录帐户的选项
sp_remove_job_from_targets 从给定的目标服务器中删除指定的作业
sp_removedbreplication 从数据库中删除所有的复制对象
sp_replcounters 返回复制的统计信息
sp_repldone 修改服务器做的分布事务的统计信息
sp_replflush 处理文章的高速缓冲存储区
sp_replication_agent_checkup 检查每一个分布数据库
sp_replicationdboption 在当前数据库中设置复制数据库的选项
sp_replsetoriginator 用于在事务复制中检测循环登录
sp_replshowcmds 返回标记复制的事务命令
sp_repltrans 返回在出版数据库事务日志中的所有事务的结果集
sp_resetstatus 重新设置异常数据库的形态
sp_resync_targetserver 重新同步所有的多服务器作业
sp_revoke_publication_access 从出版数据库的访问列表中删除login帐户
sp_revokedbaccess 从当前数据库中删除安全性帐户
sp_revokelogin 删除系统的login帐户
sp_script_synctran_commands 生成一个可以用于立即修改订阅物的脚本
*/
Ⅵ 面试时问我数据库连接机制是什么
连接复池的实现是以空间换时间。制
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
Ⅶ 数据库存储过程有哪些,面试题
对于一个php入门的人来说;
数据库:
用户数据表:id,fid,user,password,username
每一个会员专增加一个数据表,以属wen_$id作为表名,内容包括id,文章名,文章内容
系统框架:
管理权限->
超级管理员:数据库的所有管理功能。
用户管理员:审核会员博客内容,删除日志
普通用户:对自己的博客进行增加,修改,删除
会员列表->
超级界面:
按用户管理员分类,每个用户管理员下近期的操作
用户管理员界面:
所管辖普通用户的操作
用户界面:
对自己日志的操作.
网络架构
会员登录判断
登录后->
显示信息界面,可操作.
未登录->
显示博客信息界面,不可操作.
哎呀,自己想的,从来没有考虑过,时间也段,自己也挺晕的,什么公司做这样的博客啊,楼主看看,我能面试上吗.
Ⅷ 面试的时候被问到说一下你熟悉的数据库该怎么回答
面试的时候被问到说一下你熟悉
Ⅸ Oracle数据库 面试时问:什么是数据库事务,怎么回答,请明白的人给个答案,谢谢
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列,也就是完成某一功能的一组SQL语句。事务具有:原子性、一致性、分离性、持久性。
Ⅹ 数据库的面试会问什么样的问题
目前在职场中很难找到非常合格的数据库开发人员。有人说:“sql开发是一门语言,它很容易学,但是很难掌握。”
在面试应聘的sql Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当你问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。
你能向我简要叙述一下sql Server 2000中使用的一些数据库对象吗?
你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。
null是什么意思?
null(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。
null这个值表示unknown(未知):它不表示“”(空字符串)。假设您的sql Server数据库里有ANSI_nullS,当然在默认情况下会有,对null这个值的任何比较都会生产一个null值。您不能把任何值与一个 unknown值进行比较,并在逻辑上希望获得一个答案。您必须使用IS null操作符。
什么是索引?sql Server 2000里有什么类型的索引?
任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在sql Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。
什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
什么是触发器?sql Server 2000有什么不同类型的触发器?
让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的
触发器是一种专用类型的存储过程,它被捆绑到sql Server 2000的表格或者视图上。在sql Server 2000里,有INSTEAD-OF和after两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation Language,dml)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。
after触发器要在dml语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。
您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里?
这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。
另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。
对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?
你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。
你可以用什么来确保表格里的字段只接受特定范围里的值?
这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。
<b?返回参数和output参数之间的区别是什么?>如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。
返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是int数据类型。
OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。
什么是相关子查询?如何使用这些查询?
经验更加丰富的开发人员将能够准确地描述这种类型的查询。
相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。</b?返回参数和output参数之间的区别是什么?>