PHP⾯试题5--SQL,事务,优化,视图SQL语⾔包括哪⼏个部分?每部分都有哪些操作关键字?
常见的关系型数据库产品有:Oracle, MySQL, SQL Server,ACCESS等
SQL语句包括数据定义(DDL), 数据操纵(DML),数据控制(DCL),和数据查询(DQL)四个部分。
数据定义:Create table, Alter table, Drop table, Create Index/Drop index等
数据操纵:Select, Insert, Update, Delete
数据控制:grant, revoke
数据查询:Select
完整性约束包括哪些?
数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)
jsoup 动态页面(1). 实体完整性:规定表的每⼀⾏在表中是唯⼀的实体
(2). 域完整性:是指表中的列必须满⾜某种特定的数据类型约束,其中约束⼜包括取值范围,精度等规定
(3). 参照完整性:是指两个表的主关键字和外关键字的数据应⼀致,保证了表之间的数据的⼀致性,防⽌数据丢失或⽆意义的数据在数据库中扩散
(4). ⽤户定义的完整性:不同的关系数据库系统根据其应⽤环境的不同,往往还需要⼀些特殊的约束条件。⽤户定义的完整性即是针对某个特定关系数据库的约束条件,它反应某⼀具体应⽤必须满⾜的语义要求。
什么是事务?及其特性?
事务:是⼀系列的数据库操作,是数据库应⽤的基本逻辑单位。
特性:
(1). 原⼦性:即不可分割性,事务要么全部被执⾏,要么全部不执⾏
(2). ⼀致性或可串性:事务的执⾏使得数据库从⼀种正确状态转换成另⼀种正确状态
(3). 隔离性:在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务
(4). 持久性:事务正确提交之后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存
简单理解:在事务⾥的操作,要么全部成功,要么全部失败。cookie和session的作用和区别
什么叫视图?什么叫游标?
视图是⼀种虚拟的表,具有和物理表相同的功能。可以对视图进⾏增,改,查,操作,视图通常是由⼀个表或者多个表的⾏或列的⼦集。对视图的修改不影响基本表。它使得我们获取数据更容易,相⽐多表查询。
游标:是对查询出来的结果集在作为⼀个单元来有效的处理。游标可以定在该单元中的特定⾏,从结果集的当前⾏检索⼀⾏或多⾏,可以对结果集当前⾏做修改。⼀般不使⽤游标,但是需要逐条处理数据时,游标显得⼗分重要。
什么是存储过程?⽤什么来调⽤
存储过程是⼀个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建⼀次,以后在该程序中就可以调⽤多次。如果某次操作需要执⾏多次SQL,使⽤存储过程⽐单纯SQL语句执⾏要快,可以⽤⼀个命令对象来调⽤存储过程。
如何通俗地理解三个范式?
第⼀范式:1NF是对属性的原⼦性约束,要求属性具有原⼦性,不可再分解
第⼆范式:2NF是对记录的唯⼀性约束,要求记录有唯⼀标⽰,即实体的唯⼀性
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派⽣出来,它要求字段没有冗余
mysql面试题sql语句多表联查视图的优点
1. 视图能够简化⽤户的操作怎么下载chatgpt
2. 视图是⽤户能以多种⾓度看待同⼀数据
3. 视图为数据提供了⼀定程度的逻辑独⽴性
4. 视图能够对机密数据提供安全保护
NULL 是什么意思
NULL这个值表⽰UNKNOWN,不表⽰""。对NULL这个值的任何⽐较都会产⽣⼀个NULL值。不能把任何值与⼀个NULL值进⾏⽐较,并在逻辑上希望获得⼀个答案。使⽤IS NULL来进⾏NULL判断。
主键,外键,索引的区别
1. 定义:
主键:唯⼀标识⼀条记录,不能有重复,不能为空
外键:表的外键是另⼀个表的主键,外键可以有重复的,可以是空值
索引:该字段没有重复值,但可以有⼀个空值
2. 作⽤:
主键:⽤来保证数据完整性
外键:⽤来和其他表建⽴联系⽤的
索引:是提⾼查询排序的速度
3. 个数
主键:只能有⼀个
外键:⼀个表可以有多个外键
索引:⼀个表可以有多个索引
⽤什么来确保表⾥的字段值接受特定范围的值?
check限制
1. 创建表时设置检查约束的语法:CHECK(<;检查约束>)
2. 修改表时设置检查约束的语法:ALTER TABLE <;数据表名> ADD CONSTRAINT <;检查约束名> CHECK(<;检查约束>)
3. 删除表的检查约束的语法:ALTER TABLE <;数据表名> DROP CONSTRAINT <;检查约束名>
SQL优化的⽅法
1. where⼦句:where表之间的连接必须写在其他where条件之前,哪些可以过来掉最⼤数量记录的条件必须写在where⼦句的末尾having最后
2. ⽤exists替代in, ⽤not exists替代not in
3. 避免在索引列上使⽤计算
4. 避免在索引列上使⽤IS NULL和IS NOT NULL
5. 对查询进⾏优化,应尽量避免全表扫描,⾸先考虑在where及order by涉及的列上建⽴索引
6. 应尽量避免在where⼦句中对字段进⾏null值判断,否则将导致引擎放弃使⽤索引⽽进⾏全表扫描
7. 应尽量避免在where⼦句中对字段进⾏表达式操作,这将导致引擎放弃使⽤索引⽽进⾏全表扫描
SQL语句中‘相关⼦查询’与’⾮相关⼦查询’有什么区别
1. ⾮相关⼦查询是独⽴于外部查询(⽗查询)的⼦查询,⼦查询总共执⾏⼀次,执⾏完毕后将值传递给外部查询(⽗查询)。
2. 相关⼦查询的执⾏依赖于与外部查询(⽗查询)的数据,外部查询(⽗查询)执⾏⼀⾏,⼦查询就执⾏⼀次。
因此⾮相关⼦查询⽐相关⼦查询的效率⾼
MySQL的存储引擎,MyISAM和InnoDB的区别
MyISAM是⾮事务的存储引擎;适合⽤于频繁查询的应⽤;表锁,不会出现死锁;不⽀持事务;适合⼩数据,⼩并发。
InnoDB是⽀持事务的存储引擎;适合于插⼊和更新操作⽐较多的应⽤;设计合理的话是⾏锁(最⼤区别就是在锁的级别上);适合⼤数据,⼤并发。
数据表的类型有哪些
MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。
MyISAM:成熟、稳定、易于管理,快速读取。⼀些功能不⽀持(事务等),表级锁。
InnoDB:⽀持事务、外键等特性、数据⾏锁定。空间占⽤⼤,不⽀持全⽂索引等。
web应用集成框架对于⼤流量的⽹站,采⽤什么样的⽅法来解决各页⾯访问量统计问题?
1. 确认服务器是否能⽀撑当前访问量
2. 优化数据库访问
3. 禁⽌外部访问连接(盗链),⽐如图⽚盗链
4. 控制⽂件下载
5. 做负载均衡,使⽤不同主机分流
6. 使⽤浏览统计软件,了解访问量,有针对性的进⾏优化
MySQL数据库做发布系统的存储,⼀天五万条以上的增量,预计运维三年,怎么优化?
1. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提⾼效率access集团融资
2. 选择合适的表字段数据类型和存储引擎,适当的添加索引
3. 做mysql主从复制读写分离
4. 对数据表进⾏分表,减少单表中的数据量,提⾼查询速度
5. 添加缓存机制,⽐如redis, Memcached等
6. 对不经常改动的页⾯,⽣成静态页⾯(⽐如做ob缓存)
7. 书写⾼效率的SQL。⽐如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论