mysql基础

[必会]mysql常用函数

max()

min()

sum()

avg()

count()

RAND()

返回0~1的随机数

RAND(x)

返回0~1的随机数,x值相同时返回的随机数相同

CONTACT(s1,s2,…)

将字符串s1,s2等多个字符串合并为一个字符串

CURDATE(),CURRENT_DATE()

返回当前日期,如2016-07-30

CURTIME(),CURRENT_TIME()

返回当前时间,如22:13:41

NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP()

返回当前日期和时间

参考网址: https://blog.csdn.net/zhangjintao2012/article/details/52072231

[必会]Mysql数据库的引擎

1、Mysql数据库的引擎有很多种,

最重要的就是他的事务型引擎(innerDB)和非事务型引擎(MyIsam),我们一般都采用他的事务型引擎,

因为增删改操作必须要用到事务;

非事务引擎,可以在做主从复制、读写分离后的从数据库上使用,因为从数据库一般仅仅是读的操作,

不需要事务,这样会更快。

相关录音

[必会]MySQL数据库介绍

MySQL是一款开源的关系型数据库,由瑞典MySQL AB开发,现在属于Oracle旗下产品,

是目前最流行的数据库之一。MySQL可以运行于多个系统,支持多种语言。

相关录音

[必会]数据库锁

行锁,表锁,页锁;乐观锁,悲观锁

行锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高

表锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低

悲观锁:

就是考虑问题很悲观,每次去拿数据的时候都认为别人会修改,        所以每次在拿数据的时候都会上锁;        实现:sql语句后边加上forupdate例子:Selectid,namfrombiaoforupdate

乐观锁: 假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。不能解决脏读问题

        白话版 : 就是考虑问题很乐观,每次去拿数据的时候都认为别人不会修改,

            所以不会上锁

实现:在表里边加一个vesion 例子:Selectmax(nub) ,versionfrombiaoUpdatebiaosetnub=nub+1,version=vsersion+1whereid=idandversion=version

[熟悉]char 和 varchar的区别

char 为定长的字符数据结构(0~255), varchar为可变的字符结构,(0~65535)

例如: 同样设置30长度的 char 字段 和 varchar 字段

如果存储的字符长度为3对于char来说  会通过空补齐剩余空间    而varchar 来说 存储长度就是3,  最大长度为30

相关录音

[必会]MyISAM和InnoDB的区别

InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;

InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;

InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

锁机制不同: InnoDB 为行级锁,myisam 为表级锁。

[必会]数据库查询结果怎么去重

使用distinct关键字

相关录音

[熟悉]Mysql的慢查询

什么是mysql的慢查询

mysql支持慢查询日志功能,开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

如何开启慢查询

修改配置文件my.cnf,在[mysqld]下的下方加入

slow_query_log = ON //开启慢查询

slow_query_log_file = /usr/local/mysql/data/slow.log //慢查询日志文件存放位置

long_query_time = 1 //大于多长时间的

设置后 重启MySql的服务

[熟悉]什么是关系型数据库

关系型数据库时建立在关系模型基础上,数据以表格的形式出现,每行为各种记录的名称,

每列为记录名称所对应的数据域,多个行和列组成一个表,多个表组成一张表

相关录音

[熟悉]谈一谈对MySQL InnoDB的认识

特点是:

1、具有较好的事务支持:支持4个事务隔离级别,支持多版本读

2、行级锁定:通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响

3、读写阻塞与事务隔离级别相关

4、具有非常高效的缓存特性:能缓存索引,也能缓存数据

5、整个表和主键以Cluster方式存储,组成一颗平衡树

6、所有Secondary Index都会保存主键信息

适用场景:

1、需要事务支持(具有较好的事务特性)

2、行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成

3、数据更新较为频繁的场景

4、数据一致性要求较高

5、硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO

相关录音

[必会]varchar2、varchar、char有什么区别?

Char的长度是固定的,而varchar2的长度是可以变化的

比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,

而同样的varchar2(20)只占了3个字节,20只是最大值,当你存储的字符小于20时,按实际长度存储。 -

char的效率要被varchar2的效率高。

目前varchar是varchar2的同义词 工业标准的varchar类型可以存储空字符串,但是oracle不能这样做,尽管它保留以后这样做的权利。 Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,他将在数据库中varchar列可以存储空字符串的特性改为存储null值,如果你想有向后兼容的能力,oracle建议使用varchar2而不是varchar

相关录音

[熟悉]如何定位到有问题的sql?

当程序运行慢的时候,我们会根据接口访问的时间(这个我们是通过Aop实现的),

定位到超时时间的接口,然后分析接口的业务,如果接口的业务中有sql的话,在拿出相应的sql做分析。若不是sql的问题,

而是数据的并发量导致数据库慢的话,可以采用mysql的读写分离来解决,因为大多数的场景都是读多,写少的场景,这样主库的写的压力就会减轻很多。

相关录音

[熟悉]mysql的最大连接数

MYSQL慢查询配置

慢查询有什么用? 它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化.

相关录音

[必会]mysql的数据库导入导出

我们主要使用navcat 对数据库进行导入导出,

如果要导出一个数据库,可以用navcat连接数据库后,转存为一个 XXX.sql的文件,这里面存储了该数据库的所有sql语句。

在另一个数据中需要导入的时候, 右键运行 XXX.sql进行导入

[熟悉]数据库范式

第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。 2 第二范式(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

第三范式(3NF) 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。(我的理解是消除冗余)

相关录音

[了解]数据库设计

一般在项目中,设计数据库是按这样的顺序,

先从业务中抽象出实体事物,

然后判定实体和实体之间的关联关系, 最后,就可以根据关联关系,设计表

比如一对一,

可以设计A表,B表,

通过主键关联,也可以在B表使用外键aid来关联 比如一对多,

可以设计成A表,B表,B表使用外键aid来关联 比如多对多,可以设计成A表,B表,中间表,中间表是aid,bid. 还有自关联,像部门子部门,分类子分类,菜单子菜单等等,可以使用子关联,放一个pid 另外,在设计表的时候,可能还要注意唯一性字段,排序字段,冗余字段等等,一般在系统也会设计一些基础数据表,系统配置项表,日志表等等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,433评论 1 8
  • 数据库简介关系型数据库MySQL安装和使用SQL语言 一、数据库简介 (一)数据库的发展 文件系统:磁盘文件存储数...
    哈喽别样阅读 439评论 0 1
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,732评论 0 30
  • 原文链接:http://blog.csdn.net/qq_22329521/article/details/538...
    越长越圆阅读 831评论 3 16
  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 2,919评论 0 8