1.数据库是什么?

数据库(datebase)是按照数据结构来组织、存储和管理数据的仓库

2.写出表的增删改查SQL语法

表的创建:create table表名(列名1类型 约束,列名2 类型 约束…)
表的删除:drop table 表名
表的更改 :结构的更改,不是记录的更新:alter table表名 add|drop 列名|约束名
插入记录:insert into 表名 …values…
更新记录:update 表名 set 列名=值 where 条件
删除记录:delete from 表名 where 条件

3.SQL的表连接方式有哪些?

内连接、外连接(左连接、右连接)交叉连接(笛卡儿乘积)

4.什么是三范式?

1NF:表中的字段都是单一属性,不可再分
2NF:在1NF的基础上,表中所有的非主属性必须完全依赖于任意一组候选键,不能依赖于候选键中的某个属性
3NF:在2NF的基础上,表中所有的书信都不能依赖其他非主属性不存在对主键部分依赖,3NF表示不存在的非主属性对主的依赖传递

5. mysql存储原理

储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成,当希望在不同程序或平台上执行相同的函数,或者封装特定功能时,村存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式,存储过程通常有以下几个优点:
1.存储过程能实现较快的执行速度
2.存储过程允许标准组件是编程
3.存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的判断和较复杂的运算
4.存储过程可被作为一种安全制来充分利用
存储过程能够减少网络流量

6.事务的特性

1.原子性(Atomicity):事务中的全部操作在数据库中不可分割,要么全部完成,要么均不执行
2.一致性(Consistency):几个执行结果必须与按某一顺序串行执行的结果一致
3.隔离性:事务的执行不受其他事务 的干扰,事务执行的中间结果对其他事务必须是透明的
4.持久性:对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障

7.简述什么是存储过程和触发器

存储过程:是数据库中的一个对象,Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理(可以理解为C语言中的函数,有参数、返回值等函数特性)触发器是一种特殊类型的存储过程,当使用下面一种或多种数据修改操作在指定表终端对数据进行修改时,触发器会生效:UPDATE,INSERT,或DELETE

8.什么是数据库索引

数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据表中的数据,索引的实现通常使用B_TREE,B_TRBBB索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据:相反,他从跟节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据

9.数据库怎么优化查询效率?

1.储存引擎选择:如果数据表需要事务处理,应该考虑使用innoDB,因为她完全符合ACID特性,如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的
2.分表分库,主从
3.对查询进行优化,要尽量避免全表扫描,首先应考虑Where及orderby涉及 的列上建立索引
4.应尽量避免在Where子句中对字段进行null值判断,否则将导致引擎的放弃使用索引而进行全表扫描
5.应尽量避免子啊where子句中使用or连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描
7.update语句,如果只更改1,2个字段,不要update全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志
8.对于多张大数据量(这里几百条就算大了)的表join,要先分页在join,否则逻辑读会很高,性能很差

10.你用的mysql引擎是哪个,个引擎之间有什么区别?

主要MyISAM与InnoDB两个引擎,其主要区别如下:InnoDB支持事务,MySAM不支持,这一点是非常重要的,事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了
MyISAM适合查询以及插入为主的应用,InooDB适合频繁修改以及涉及到安全性较高的应用
innoDB支持外键,MyISAM不支持
MyISAM是默认引擎,InnoDB需要指定:InnoDB不支持FULLTEXT类型的索引
InnoDB中不保存表的行数,如select count()from table 时,innoDB:需要扫描一遍整个表来计算多少行,但是MyISAM只要简单的读出保存好的行数即可,注意到是,当count()语句包含where条件时MyISAM也需要扫描整个表
对于自增长的字段InnoDB中必须包括只有该字段的索引,但是在MyISAM中可以和其他字段一起联合索引:清空整个表时,InnoDB是一行一行的删除效率慢,MyISAM则会重建表,InnoDB支持行锁(某些情况下还是锁整表,如uopdate tabkle set a=1 where like’%lee%‘

11.如何对查询命令进行优化?

(1)应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引
(2)应尽量避免在where子句中对字段进行null值判断,避免使用!=或<>操作符,避免使用or连接条件,或在where子句中使用参数、对字段进行表达式或函数操作否则会导致权标扫描
(3)不要在where子句中的”=“左边进行函数算数运算或者其他表达式运算,否则系统将可能无法正确使用索引
(4)使用索引字段作为条件时,如果该索引是符合索引,那么必须使用该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引不会被使用
(5)很多时候可考虑用EXISTS代替in
(6)尽量使用数字型字段
(7)尽可能使用varchar/nvarchar代替char/nchar
(8)任何地方都不要使用select from t 用具体的字段代替”“,不要返回用不到的任何字段,尽量使用变量来代替临时表
(9)避免频繁创建和删除临时表,以减少系统表资源的消耗
(10)尽量避免使用游标,因为游标的效率较差
(11)在所有存储过程和触发器的开始处设置SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF
(12)尽量避免大事务操作,提高系统并发能力
(13)尽量避免像客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理

12.注入是如何产生的,如何防止?

程序开发中不注意规范书写sql语句和特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。产生SQL注入,下面是防止办法:
(1)过滤掉一些常见的数据库操作关键字,或者通过系统函数来进行过滤
(2)在PHP配置文件中将Register_globals=off;设置为关闭状态
(3)SQL语句书写的时候尽快不要省略小引号(tab 键上面那个)和单引号
(4)提高数据库命名技巧,对于一些重要字段根据程序的特点命名,取不易被猜到的
(5)对于常用的方法进行封装,避免直接暴漏SQL语句
(6)开启PHPAA安全模式:safe_mode=on
(7)打开magic_quotes_gpc来防止SQL注入
(8)控制使用错误信息:关闭错误提示信息,将错误信息写到系统日志
(9)使用mysql或pdo预处理

13.Mysql数据库中怎么实现分页?

select*from table limit(start-1)*limit,limit;
其中start是页码,limit是每页显示的条数

14.存储过程和函数的区别?

存储过程和函数都是为了可重复的执行操作数据库sql语句的集合
(1)存储过程和函数都是一次编译,都会被缓存起来,下次使用就直接命中已经编译好的sql语句,不需要重读使用,减少网络交互,减少网络访问流量
不同点:标识符不同,函数标识符function,存储过程是proceduce
(1)函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或返回值
(2)存储函数使用select调用,存储过程需要使用call调用
(3)select语句可以在存储过程中调用,但是除了select…into之外的select语句都不能在函数中使用
(4)通过in out参数,过程相关函数更加灵活,可以返回多个结果

mysql基础面试题大全相关推荐

  1. 30道MySQL基础面试题

    每天晚上 00:00 执行 mysql 数据备份,请写出 crontab 配置项 答案: 0 0 * * * mysqldump -uroot -p123456 --flush-logs 数据库名 & ...

  2. 人类高质量Java基础面试题大全,又是一篇三万字的总结!

    点击主页访问更多精彩文章:https://blog.csdn.net/weixin_45692705?spm=1001.2101.3001.5343 Java基础面试题目录 共勉 ! Java概述 1 ...

  3. C/C++基础面试试题大全

    第一章 面试基础 一年一度招聘开始了,又有很多人可能像我当初一样,开始搜寻面试题,故本人将自己的学习经验(c面试题库整理)进行分享,希望可以帮助到看到的同行!简要说明:本文第一章是一些C/C++的一些 ...

  4. Mysql基础面试题及查询联系

    一. 基础知识 1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 2. 什么是关系型数据库,主键,外键,索引分别是什么? 关系型数据库是由多张能互相联接的二维 ...

  5. 软件测试mysql基础面试题_【松勤软件测试】数据库常见面试题总结

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 数据库在笔试题的时候会让你写,但是在面试的时候,面试官不会说出题目给你,让你口头回答这道题这么做,有时候他可能会问删除用什么命名或者啥的,虽然基础,但是真 ...

  6. 前端基础面试题大全-极乐科技(一)-JS部分

    2019独角兽企业重金招聘Python工程师标准>>> #JS部分 ###1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined. ...

  7. 软件测试mysql基础面试题_测试面试题合集之数据库

    1.数据库增删改查?平时使用场景? INSERT INTO [TABLE_NAME] (column1, column2, column3,...columnN) VALUES (value1, va ...

  8. mysql中只运行一部分数据_MySQL(一)——MySQL基础和部分面试题

    MySQL基础: 数据库的创建与删除 CREATE DATABASE ;//创建数据库 DROP DATABASE ;//删除数据库 数据库表的创建与删除 CREATE TABLE (column_n ...

  9. MySQL常见面试题及答案汇总1000道(春招+秋招+社招)

    MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...

  10. 2020 Dubbo面试题大全

    Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大 ...

最新文章

  1. Linux服务器编程之:truncate()函数+案例说明
  2. 计算机重装系统知识,电脑重装系统基础知识扫盲贴
  3. Yii2性能优化之:缓存依赖
  4. 贷中风控调额方法与策略详解
  5. 信用卡交易数据异常检测
  6. 一:【博客分享】优秀的有趣的博客
  7. Inno Setup打包添加和去除管理员权限
  8. seo优化如何写出高质量的文章
  9. 我的价值观和人才观(狭得不能再狭的狭义)
  10. 利用 Map-Reduce 从文件中找到出现频率最高的 10 个 URL(2021 VLDB Summer School Lab0)
  11. 【计算机视觉】图像配准(Image Registration)
  12. 图书信息管理系统 数据结构 C语言版
  13. clang diagnostic用例
  14. Python3读写txt文件
  15. 计算机人事管理参考文献,计算机人事管理系统毕业论文设计.doc
  16. 什么样的男生值得交往一生
  17. 基于Leaflet的leaflet-sidebar侧边栏组件集成
  18. VSC C++ 配置
  19. Linux学习记录 Day1(常用命令)
  20. Unity中如何给你的场景模型mesh减面——【一】

热门文章

  1. HiveSql 日期格式转换
  2. Android Studio问题解决:Location specified by ndk.dir () did not contain a valid NDK and so couldn‘t sati
  3. 【听课笔记】入行电商产品经理
  4. Python excel转图片保存
  5. 【java入门】超基础的java入门知识,细节拉满
  6. Java入门基础知识之函数
  7. yjk计算书_用户手册
  8. 计算机所建造全过程,Midas桥梁建模计算,全过程图文解析!
  9. android 蓝牙与单片机通信原理图,单片机结合蓝牙模块串口通信
  10. linux centos用户修改密码,centos怎么修改用户密码