全网最佳IP代理服务商-

4.8元解锁GTP.特价118/年


如果您从事外贸、海外视频博主、海外推广、海外广告投放,欢迎选择我们。
让您轻易使用国外主流的聊天软件、视频网站以及社交网络等等

苹果id地区改成美国能改回来吗

吐血整理了一周SQL面试题,包括了选择题、问答题、实战题。每道题都给大家加了详细的独家解析。几乎每个知识点都涉及到了。

2、在book表中,将工具书类型(tool)的书的书架序号都减少2,下列语句正确的是()

3、为职员表添加列,列名为年末奖金,允许为空值,数据类型为货币数据类型。下列SQL语句正确的是()

4、小李在创建完一张数据表后,发现少创建了一列,此时需要修改表结构,应该用哪个语句进行操作?

正确答案: B 答案解析:grant语句是用来赋予用户权限的,是数据控制语言(DCL)。其他3个都是数据操纵语言(DML) 数据查询语言(DQL):是由SELECT子句,FROM子句,WHERE子句组成的查询块 数据操纵语言(DML): SELECT(查询) INSERT(插入) UPDATE(更新) DELETE(删除) 数据定义语言(DDL):CREATE(创建数据库或表或索引)ALTER(修改表或者数据库)DROP(删除表或索引) 数据控制语言(DCL):GRANT(赋予用户权限) REVOKE(收回权限) DENY(禁止权限) 事务控制语言(TCL):SAVEPOINT (设置保存点)ROLLBACK (回滚) COMMIT(提交)

(多选题)7、在MySql中进行数据查询时,如果要对查询结果的列名重新命名,将sno列重新命名为学号,则下列语句正确的是( )

10、已知数据表STU,现需创建视图view_s,显示所有男同学的信息。下列SQL语句正确的是()

12、将成绩表(grade)按成绩(point)升序排列,下列语句错误的是()

正确答案: C 答案解析:这道题考察的是select语句中group by分组知识点。 where应该放在group by 的前面,排除A group by后面的字段都要在select后面出现,B选择中的sex,没有在select后面出现,排除B Having后面可以跟字段和聚合函数,having后面的字段,也是只能使用在select后面出现的字段。排除D

2、某IT公司人事管理采用专门的人事管理系统来实现。后台数据库名为LF。新来的人事部张经理新官上任,第一件事是要对公司的员工做全面的了解。可是他在访问员工信息表EMPL里的工资和奖金字段的时被拒绝,只能查看该表其他字段。作为LF的开发者你将如何解决这一问题:( )

A、废除张经理的数据库用户帐户对表EMPL里的工资列和奖金列的SELECT权限

D、授予张经理的数据库用户帐户对表EMPL里的工资列和奖金列的SELECT权限。

4、在STUDENT表中按class_type统计数据行数分组情况后,筛选出数据行数为大于10行的组

正确答案:A 答案解析:这道题是根据class_type分组后,找出每组大于10行的数据,考察的知识点是:where和having的区别。 where和having作用差不多,都是用来筛选数据的。 having作用在分组之后,也就是要放在group by的后面,where放在group by的前面。这样就排除了B、C count(*)是聚合函数,意思是查询每组有多少条数据记录。having后面可以跟聚合函数,where后面不能跟聚合函数。排除了D

6、已知某期刊信息库中有作家信息表author(作者编号aid,作者姓名aname,作者笔名ausername,作者邮箱aemail,备注remarks),稿件表manuscript(稿件编号mid,标题mtitle,作者编号aid,交稿时间mtime)现需要设置外键作者编号,下列语句正确的是()

(多选题)7、使用SQL语句建个存储过程proc_stu,然后以student表中的学号Stu_ID为输入参数@s_no,返回学生个人的指定信息。下面创建存储过程语句正确的是:( )

8、请取出 BORROW表中日期(RDATE字段)为当天的所有记录?(RDATE字段为datetime型,包含日期与时间)。SQL语句实现正确的是:( )

(多选题)10、下面有关sql 语句中 delete、truncate的说法正确的是?()

正确答案:D 答案解析:最后表格输出的结果最好的商品id和销量, A选项语法错了,where后面不能跟聚合函数,having后面可以跟 B选项语法错了,group by后面的字段,需要再select后面字段中提到 C选项把商品id字段分类,再对销量取最大值,实际作用是将商品id去重+查询商品id和对应销量,如果分类字段没有重复数据,效果等同‘ select * from 销量表 ’,不符合题意。 D选项是对的,先用子查询找到最大的销量的具体值,在找对应具体值的商品名。

(多选题)13、在SQL中语法规范中,having子句的使用下面描述正确的是:( )

正确答案: A C 答案解析: D选项,group by的作用限定分组条件,不是having E选项:having子句和where子句作用差不多,但是也有区别,并不是等同的。 F选择:没有函数,也可以使用having,但是要注意,having里面包含的字段,必须在select语句中提到。

14、假设创建新用户nkw,现在想对于任何IP的连接,仅拥有user数据库里面的select和insert权限,则列表语句中能够实现这一要求的语句是()

正确答案: B 答案解析:这道题主要考察的是数据库的设计步骤,以及对应的内模式、外模式、逻辑模式 数据库设计步骤主要分为以下几方面: 1)需求分析,需求分析是通过用户需求,将数据流程图、数据字典描述出来 2)数据库设计,这种设计和具体的数据库管理系统没有之间关联,而是抽象出各用户所需要的数据视图,对应外模式概念 3)将用ER模型或对象模型表示的数据视图,转换为关系模式,并对所得关系模式进行优化处理,这就是所谓的数据库逻辑设计(这一步仍然对应于外模式和模式) 4)第四步,在逻辑设计的基础上,将所得的数据模式组织存储到物理介质上,这就是数据库的物理设计(这一步对应于内模式)

现要选取居住地址Address不以’C’或’O’开头的人员信息,下列MySQL查询语句正确的是:

正确答案: A 答案解析:此题考的是SQL里的正则表达式查询: SELECT * FROM Person Address REGEXP ‘^[^CO]’; [^]匹配不在括号中的任何字符,’[^CO]‘匹配任何不包含’C’或’O’的字符,其实就是匹配除了’C’或’O’之外的所有字符。 ^匹配文本的开始字符,’^[^CO]’ 匹配不以’C’或’O’之外开头的所有字符。

20、”确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新”是对下列选项哪一个事务隔离级别的描述()

正确答案:C 答案解析:这道题考察的是4个事务隔离级别,面试中经常考。 确保事务可以多次从一个字段中读取相同的值,就是要保证可重复读取,可重复读取的意思是,一端在读取数据的同时,另一端在修改数据。在高并发环境中,很容易出现,读取数据的一方,两次读取结果不一致的情况。 要防止这种情况,就是要在读取数据事务存续时,禁止写事务,用人话说就是“可读,不可修改”。这样保证重复读取数据的结果是一样的。 这一事务级别就是可重复读取(Repeatable Read)。 具体的4个事务隔离级别,可以查看问答题第12题

(1)对查询进行优化,首先应尽量避免全表扫描,在比较频繁使用的字段上面加上索引。

(2)尽量避免在 where 子句中对索引列使用计算或者进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

(3)Where子句中:where表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量

(1)在 where 子句中使用 or 来连接没有同时使用索引的条件,会使引擎放弃使用索引而进行全表扫描

(3)在 where 子句中,使用以“%”开头的 LIKE 语句,进行模糊匹配

(4)数据类型出现隐式转化(如 varchar 不加单引号的话可能会自动转换为 int 型)

(2)不能将锁的粒度过于细化,不然可能会出现线程的加锁和释放次数过多,反而效率不如一次加一把大锁。

当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。

索引的底层实现原理是B+树,优化是经过优化的 B+树。主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此 InnoDB 建议为大部分表使用默认自增的主键作为主索引。

9、简单描述 MySQL 中索引、唯一索引、主键、联合索引的区别,对数据库的性能有什么影响(从读写两方面)?

索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

苹果id地区改成美国能改回来吗

(1)普通索引的唯一任务是加快对数据的访问速度,允许被索引的数据列包含重复的值。

(2)唯一索引中,每条数据记录都是唯一的,创建唯一索引用关键字 UNIQUE

(3)主键是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY来创建。

数据库事务( transaction)是一个数据库操作序列,这些操作要么全部成功,要么全部失败,是一个不可分割的工作单位。

(1)原子性是指在一个数据库事务中所有的操作要么全部都做完,要么全部都不做。

(2)一致性是指在事务开始之前和事务结束以后苹果id地区改成美国能改回来吗,数据库的完整性约束没有被破坏,比如小明有1500元,小红有100元,小明给小红转账100元,转账完成后,小明和小红一共有1600元这个不能变。

(4)持久化:事务一旦成功提交成功后,所有这个事务对数据库的更改全部被保留下来

(1)未授权读取(Read Uncommitted):允许脏读,脏读的意思是,一个数据还没有提交,就会出现在读取结果中,万一数据因为异常原因没有成功提交,查询结果中就会出现不存在的数据。该隔离级别可以通过“排他写锁”实现。

(2)授权读取(Read Committed):允许不可重复读取,但不允许脏读。不可重复读取的意思是,允许一端在读取数据的同时,另一端在修改数据,读取数据的一方重复读取时,数据结果不同是被允许的。可以通过“瞬间共享读锁”和“排他写锁”实现。

(3)可重复读取(Repeatable Read):禁止不可重复读取和脏读,但是有时可能出现幻读。幻读的意思是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的数据行。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

(4)序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed,它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

视图可以当成表格来用,可以将查询结果存储在视图中,后面可以直接调用这个视图数据,或者继续在视图中查询。

视图可以将原本复杂的 SQL 语句简化。比如前面讲的子查询,我们可以将被嵌套的子查询保存为视图,然后主查询直接在视图中查询就可以了。这样就不会有查询语句的嵌套,SQL语句会更加易读。视图就像模块化编程一样,不仅会使语句结构更加清晰,还提升了代码的复用率。

使用视图可以保护原始数据表的安全性,视图可以对原始表的行和列进行筛选,如果我们禁止了对原始表的访问权限,用户只能通过视图来修改数据,他们就无法修改视图中未返回的那些字段和记录。

如果没有视图,所有的查询直接指向原始数据表,一旦更改原表设计,就要相应的更改该表所有的查询语句。如果有视图,我们只需要修改视图的查询语句,使其能保持原有查询结果即可,基于视图的查询我们就不需要再修改了。

存储过程是一组SQL语句,用作访问数据库的函数。如果将sql代码与Python代码写在一起,或很混乱并且难以维护,用存储过程来代替,管理维护更加方便。

触发器是在插入、更新、删除语句前后自动执行的一堆SQL代码,用于对表执行特定操作。

比如在交易表中添加一条交易,在日志表中就自动添加一条记录,这样就要用到触发器。

比如我们想在每天都执行删除过期日志,就可以创建一个事件,在每天特定时刻来自动执行这一操作。

在数据量比较大的时候,使用distinct函数加索引列,会使索引失效,并扫描全表。

存储方面:CHAR 列长度固定,存储为创建表时声明的长度,如果插入的长度小于定义长度,则可以用空格进行填充。而varchar是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长。

第一范式(1NF):是对属性的原子性约束,要求属性具有原子性,不可再分解;

第二范式(2NF):是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式(3NF):是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

缺点:对于查询需要多个表进行关联,减少写操作的效率和增加读操作的效率,更难进行索引优化

22、MySQL 数据库作发布系统的存储美国苹果id大全没被锁的,一天五万条以上的增量,预计运维三年,怎么优化?

(1)聚合函数是将多条记录聚合为⼀条;窗⼝函数是每条记录都会执行,不会改变记录的行数

over关键字用来指定函数执⾏的窗⼝范围,若后⾯括号中什么都不写,则意味着窗口包含满足WHERE条件的所有行,窗口函数基于所有行进行计算;如果不为空,则⽀持以下4种语法来设置窗⼝。

(1)partition by子句:窗口按照哪些字段进⾏分组,窗⼝函数在不同的分组上分别执⾏

(2)order by子句:按照哪些字段进⾏排序,窗⼝函数将按照排序后的记录顺序进⾏编号

(3)frame子句:frame是当前分区的⼀个子集,子句⽤来定义子集的规则,通常⽤来作为滑动窗⼝使⽤

(4)window_name:给窗口指定⼀个别名。如果SQL中涉及的窗口较多,采用别名可以看起来更清晰易读

所以如果这些语句,需要用到窗口函数作为条件,需要在窗口函数外面套⼀层查询。

26、维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?

首先考虑使用约束,效率最高也最方便,如check,主键,外键,非空字段等。

其次使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。

THE END
喜欢就支持一下吧
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称