Mysql

1.数据删除delete, truncate, drop

1. DROP :  drop table 表名
            删除表数据,释放空间, 并清除表结构

2. TRUNCATE :truncate table 表名
            删除表数据,释放空间,但保留表结构
            
3. DELETE:  delete from 表名 (where 列名 = 值)
           与truncate类似,但delete可以自定义指定行
区别一: DELETE 可以加筛选条件,  TRUNCATE不可以
区别二: DELETE 效率低, 因为TRUNCATE是直接把表清空
区别三: 表中有自增长列时, DELETE后插入新数据从断点开始, TRUNCATE从1开始
区别四: DELETE返回删除行数, TRUNCATE无返回值
区别五: DELETE可以回滚,TRUNCATE不能回滚

2. char(m)和varchar(m)的区别

 char:   
 1. 固定长度,长度值范围是1到255
 2. 当输入字符不满足长度,其余就用空格填充,耗费空间
 3. 固定长度,效率较高
 4. 检索CHAR值时需删除尾随空格

varchar:
 1. 可变长度
 2. 当输入字符不满足长度,就会用实际长度,节省空间
 3. 可变长度,效率低

3. mysql的锁有哪几种

3.1 颗粒度

  • 行级锁:mysql中粒度最小的一种锁,只针对当前操作的行进行加锁。行级锁能够大大减少数据操作时发生的冲突,但实现起来的开销也最大。行级锁分为共享锁和排他锁
  • 表级锁:表级锁是mysql中粒度最大的一种锁,在操作数据库时,会将整张表锁住。表级锁实现起来就比较简单,开销也比较小
  • 页级锁:页级锁是mysql中比较折中的一种锁,他能够对数据行相邻的一组数据进行加锁
  • 行级锁开销大,冲突少,表级锁开销小,冲突大,页级锁就是比较折中的一种锁,

3.2 按级别划分

  • 共享锁:共享锁又称读锁,其他事务可以并发读取,但是不能修改。加了共享锁的数据,其他事务也只能加共享锁,不能加排他锁。使用select … lock in share mode,MySQL就会对查询出来的每一行数据加共享锁,如果其中一行数据被加了排他锁,则会被阻塞
  • 排他锁:排他锁又称写锁或独占锁。加了排他锁的数据,其他事务不能再对其加任何锁,获取排他锁的事务可以读取数据和修改数据。使用select … for update,MySQL就会对查询出来的每一行数据加排他锁,当没有其他事务干预这些数据时,就可以加锁成功,否则被阻塞
  • 意向锁:意向锁是表级锁,是MySQL自动添加的,无需用户自己操作,MySQL中的意向锁又分为两种,意向共享锁和意向排他锁。innodb会自动对insert、update、delete加意向排他锁,对于一般的select语句,innodb不会对其加任何锁,可以显式添加锁

5. MySQL在并发中事务会产生的问题

5.1 脏读:

  • 读到了其他事务未提交的数据,第一次读取时,事务还未提交,第二次读取,事务已被回滚

5.2 不可重复读

  • 一个事务读取了两次数据,两次读到的数据不一致,发生的过程是事务1去读数据,读到的是A,然后事务2把那条数据改成了B,事务1再去读一次,结果发现变成了B,就造成了两次读取数据不一致的问题。

5.3 幻读

  • 在一个事务的操作里面发现了未被操作的数据,发生的过程是,事务1将所有符合条件的数据(如:select * from xxx where )都做了修改,然后事务2又插入了一批符合条件的数据,事务1就发现还有符合条件的数据没有被修改成功,感觉像是出现了幻觉一样。

6 InnoDB引擎支持的事务隔离级别和各自的区别

  • DEFAULT,默认的隔离级别,MySQL的默认隔离级别是可重复读
  • READ-UNCOMMITTED,读未提交,其他事务可以读取当前事务还未提交的数据。这个级别的事务隔离无法解决脏读、幻读和不可重复读问题,因此一般不使用
  • READ-COMMITED,读已提交,其他事务只能读到当前事务已经提交的数据
  • REPEATABLE-READ,可重复读,事务在查询到了数据之后会加锁,其他事务无法修改,这样就解决了脏读和不可重复读的问题,但幻读问题依然存在
  • SERIAZIABLE,串行化,最高的事务隔离级别,所有事务只能挨个执行,要等到上一个事务完全执行结束,下一个事务才能执行,这样就完全解决了脏读、幻读和不可重复读的问题,但同样带来的是效率的降低
  • 隔离级别设置越高,隔离效果越好,但同时效率也越低,因此在开发中要根据自己的实际场景来进行选择,在一般的场景中,READ-COMMITED(读已提交)就能够满足开发需求

6. MySQL的索引

6.1 索引类型

  • 普通索引:最基本的索引,没有任何限制
  • 唯一索引:索引列的值只能唯一,但允许为空,如果是组合索引,则组合的值只能唯一
  • 主键索引:是特殊的唯一索引,值不允许为空,且只能有一个主键索引
  • 组合索引:在多个字段上创建索引,只有在查询条件中使用了创建索引的第一个字段索引才会生-效。使用组合索引时,需遵循最左前缀匹配原则
  • 全文索引: 主要用来查询文本中的关键字,而不是直接与索引中的值进行对比
  • 创建索引的原则:最频繁使用,用以缩小查询范围的字段;频繁使用,需要排序的字段

6.2 索引失效

  • 组合索引中,查询条件使用的字段不包含创建组合索引使用的第一个字段
  • like条件中,%在前
  • OR语句前后没有同时使用索引
  • 对索引列使用计算表达式或者函数
  • 字段定义类型为varchar,查询时条件字段类型用number,比如No='111111’写成No=111111
  • 使用not in和not exist关键字
  • 条件中使用or关键字,应该使用in
  • 将字段与null值比较,比如使用is null或者is not null
  • 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)

7. MySQL优化

  • 对频繁使用的查询字段建立索引
  • 防止索引失效,避免全表扫描,可以参考上述会导致索引失效的条件
  • 避免使用select *,返回无用字段会降低查询效率

8. 悲观锁和乐观锁

  • 悲观锁:对事物采取一种悲观的态度,每次操作数据时都认为其他事务会修改数据,于是在操作之前将数据加锁,一般是使用数据库提供的锁机制,如果是读操作,则使用共享锁,其他事务只能读不能改,如果是写操作,则使用排他锁,其他事务不能读也不能写。悲观锁大多数情况下需要依靠数据库本身提供的锁机制,以达到操作时最大程度的独占性,但随之而来的就是造成数据库的大量开销,特别是对于长事务,这种开销往往无法承受,则需要使用下面的乐观锁。
  • 乐观锁:对事物采取一种乐观的态度,不使用数据库提供的锁机制,一般使用数据版本机制,即给数据表添加一个版本(version)标识,每次更新时将版本+1,如果更新时的版本号不大于数据库里面的版本号,则认为是过期数据

9. 分库分表

  • 分库:按照功能将不同的数据库放在不同的服务器上,比如用户功能模块的数据表和商品功能模块的数据表分别存储,一般这种在微服务架构中已经实现
  • 分表:
  • 垂直分表:顾名思义,垂直是按照列来分,即字段,按照功能将表中的部分字段放到重新创建的数据表中,比如用户的基本信息和其他信息,解决的是列过多的问题
  • 水平分表:水平是按照行来分的,即数据行,数据量超过设置的阈值时,就重新创建一张结构一样的表进行存储,或者根据日期来分表,将多个或者一个自然日的数据放在同一张表中,解决的是数据量过大的问题

4. mysql数据库的MyISAM和InnoDB的区别

  • 最大的区别在于对于事务的支持,MyISAM不支持事务,而InnoDB支持事务
  • 行级锁,MyISAM不支持行级锁,InnoDB支持
  • 外键, MyISAM不支持外键,InnoDB支持
  • mysql5.5版本之后,默认的引擎是InnoDB

MyISAM:

不支持事务,但是每次查询都是原子的;

支持表级锁,即每次操作是对整个表加锁;

存储表的总行数;

一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;

采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

InnoDb:

支持ACID的事务,支持事务的四种隔离级别;

支持行级锁及外键约束:因此可以支持写并发;

不存储总行数;

一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;

主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

  • read uncommited :读到未提交数据
  • read committed:脏读,不可重复读
  • repeatable read:可重读
  • serializable :串行事物

主键和候选键有什么区别?

  • 表格的每一行都由主键唯一标识,一个表只有一个主键
  • 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?

  • 它会停止递增,任何进一步的插入都将产生错误

怎样才能找出最后一次插入时分配了哪个自动增量?

LAST_INSERT_ID将返回由Auto_increment分配的最后一个值,并且不需要指定表名称。

LIKE声明中的%和_是什么意思?

%对应于0个或更多字符,_只是LIKE语句中的一个字符。

BLOB和TEXT有什么区别?

  • BLOB是一个二进制对象,可以容纳可变数量的数据。TEXT是一个不区分大小写的BLOB

数据存储

  • 每个MyISAM表格以三种格式存储在磁盘上:

·“.frm”文件存储表定义

·数据文件具有“.MYD”(MYData)扩展名

索引文件具有“.MYI”(MYIndex)扩展名

Mysql如何优化DISTINCT?

DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。

1

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

可以使用多少列创建索引?

  • 任何标准表最多可以创建16个索引列。

什么是非标准字符串类型?

  • TINYTEXT
  • TEXT
  • MEDIUMTEXT
  • LONGTEXT

是通用SQL函数?

  • CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。
  • FORMAT(X, D)- 格式化数字X到D有效数字。
  • CURRDATE(), CURRTIME()- 返回当前日期或时间。
  • NOW() – 将当前日期和时间作为一个值返回。
  • MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() – 从日期值中提取给定数据。
  • HOUR(),MINUTE(),SECOND() – 从时间值中提取给定数据。
  • DATEDIFF(A,B) – 确定两个日期之间的差异,通常用于计算年龄
  • SUBTIMES(A,B) – 确定两次之间的差异。
  • FROMDAYS(INT) – 将整数天数转换为日期值。

MYSQL支持事务吗?

  • 在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。

  • 但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SETAUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。

mysql里记录货币用什么字段类型好

NUMERIC和DECIMAL类型被Mysql实现为同样的类型,这在SQL92标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定。

例如:

salary DECIMAL(9,2)

在这个例子中,9(precision)代表将被用于存储值的总的小数位数,而2(scale)代表将被用于存储小数点后的位数。

因此,在这种情况下,能被存储在salary列中的值的范围是从-9999999.99到9999999.99。

mysql有关权限的表都有哪几个?

Mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。

3 列的字符串类型可以是什么?

  • SET
  • BLOB
  • ENUM
  • CHAR
  • TEXT

MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

  • 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
  • 选择合适的表字段数据类型和存储引擎,适当的添加索引。
  • mysql库主从读写分离。
  • 找规律分表,减少单表中的数据量提高查询速度。
  • 添加缓存机制,比如memcached,apc等。
  • 不经常改动的页面,生成静态页面。
  • 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

实践中如何优化MySQL

最好是按照以下顺序优化:

  1. SQL语句及索引的优化
  2. 数据库表结构的优化
  3. 系统配置的优化
  4. 硬件的优化

优化数据库的方法

  • 选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例如’省份’、’性别’,最好适用ENUM
  • 使用连接(JOIN)来代替子查询
  • 适用联合(UNION)来代替手动创建的临时表
  • 事务处理
  • 锁定表、优化事务处理
  • 适用外键,优化锁定表
  • 建立索引
  • 优化查询语句

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

  • 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
  • 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
    普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。
  • 主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。
  • 索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这就是联合索引。
  • 索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

数据库中的事务是什么?

  • 事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

事务特性:

(1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。

(2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态

(3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,

(4) 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

SQL注入漏洞产生的原因?如何防止?

  • SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

存储时期

  • Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒,占用8个字节得存储空间,datatime类型与时区无关
  • Timestamp:以时间戳格式存储,占用4个字节,范围小1970-1-1到2038-1-19,显示依赖于所指定得时区,默认在第一个列行的数据修改时可以自动得修改timestamp列得值
  • Date:(生日)占用得字节数比使用字符串.http://datatime.int储存要少,使用date只需要3个字节,存储日期月份,还可以利用日期时间函数进行日期间得计算
  • Time:存储时间部分得数据
  • 注意:不要使用字符串类型来存储日期时间数据(通常比字符串占用得储存空间小,在进行查找过滤可以利用日期得函数)
  • 使用int存储日期时间不如使用timestamp类型

对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:

索引的目的是什么?

  • 快速访问数据表中的特定信息,提高检索速度
  • 创建唯一性索引,保证数据库表中每一行数据的唯一性。
  • 加速表和表之间的连接
  • 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

索引对数据库系统的负面影响是什么?
负面影响:

  • 创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。

为数据表建立索引的原则有哪些?

  • 在最频繁使用的、用以缩小查询范围的字段上建立索引。
  • 在频繁使用的、需要排序的字段上建立索引

什么情况下不宜建立索引?

  • 对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。
  • 对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等

Myql中的事务回滚机制概述

  • 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。

要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚

SQL语言包括哪几部分?每部分都有哪些操作关键字?

SQL语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。

数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等

数据操纵:Select ,insert,update,delete,

数据控制:grant,revoke

数据查询:select

完整性约束包括哪些?

  • 数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。

分为以下四类:

  1. 实体完整性:规定表的每一行在表中是惟一的实体。

  2. 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

  3. 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

  4. 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

与表有关的约束:包括列约束(NOT NULL(非空约束))和表约束(PRIMARY KEY、foreign key、check、UNIQUE) 。

什么是锁?

  • 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
  • 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

基本锁类型:锁包括行级锁和表级锁

如何通俗地理解三个范式?

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

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

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

范式化设计优缺点:

优点:

可以尽量得减少数据冗余,使得更新快,体积小

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

反范式化:

优点:可以减少表得关联,可以更好得进行索引优化

缺点:数据冗余以及数据异常,数据得修改需要更多的成本

什么是基本表?什么是视图?

NULL是什么意思

  • NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。
  • 使用IS NULL来进行NULL判断

说说对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 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

  • 18

3、如何区分FLOAT和DOUBLE?
以下是FLOAT和DOUBLE的区别:
浮点数以8位精度存储在FLOAT中,并且有四个字节。
浮点数存储在DOUBLE中,精度为18位,有八个字节。

4、区分CHAR_LENGTH和LENGTH?

  • CHAR_LENGTH是字符数,而LENGTH是字节数。Latin字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的。

5、请简洁描述Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

6、在Mysql中ENUM的用法是什么?

ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。
Create table size(name ENUM('Smail,‘Medium’,‘Large’);

8、列的字符串类型可以是什么?

10、Mysql驱动程序是什么?

以下是Mysql中可用的驱动程序:
PHP驱动程序
JDBC驱动程序
ODBC驱动程序
CWRAPPER
PYTHON驱动程序
PERL驱动程序
RUBY驱动程序
CAP11PHP驱动程序
Ado.net5.mxj

11、TIMESTAMP在UPDATE CURRENT_TIMESTAMP数据类型上做什么?

创建表时TIMESTAMP列用Zero更新。只要表中的其他字段发生更改,UPDATE CURRENT_TIMESTAMP修饰符就将时间戳字段更新为当前时间。

13、 myisamchk是用来做什么的?

它用来压缩MyISAM表,这减少了磁盘或内存使用。

16、MyISAM Static和MyISAM Dynamic有什么区别?

在MyISAM Static上的所有字段有固定宽度。动态MyISAM表将具有像TEXT,BLOB等字段,以适应不同长度的数据类型。点击这里有一套最全阿里面试题总结。

MyISAM Static在受损情况下更容易恢复。

17、如果一个表有一列定义为TIMESTAMP,将发生什么?

每当行被更改时,时间戳字段将获取当前时间戳。

18、列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?

它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

19、怎样才能找出最后一次插入时分配了哪个自动增量?

LAST_INSERT_ID将返回由Auto_increment分配的最后一个值,并且不需要指定表名称。

20、你怎么看到为表格定义的所有索引?

索引是通过以下方式为表格定义的:

SHOW INDEX FROM ;

22、如何在Unix和Mysql时间戳之间进行转换?

UNIX_TIMESTAMP是从Mysql时间戳转换为Unix时间戳的命令
FROM_UNIXTIME是从Unix时间戳转换为Mysql时间戳的命令

24、Mysql查询是否区分大小写?

  • 不区分

25、LIKE和REGEXP操作有什么区别?

LIKE和REGEXP运算符用于表示^和%。
1.SELECT * FROM employee WHERE emp_name REGEXP “^b”;
2.SELECT * FROM employee WHERE emp_name LIKE “%b”;

26、BLOB和TEXT有什么区别?

BLOB是一个二进制对象,可以容纳可变数量的数据。有四种类型的BLOB -

  TINYBLOB

  BLOB

  MEDIUMBLOB和

  LONGBLOB

它们只能在所能容纳价值的最大长度上有所不同。

TEXT是一个不区分大小写的BLOB。四种TEXT类型

TINYTEXT

TEXT

MEDIUMTEXT和

LONGTEXT

它们对应于四种BLOB类型,并具有相同的最大长度和存储要求。

BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。

28、我们如何在mysql中运行批处理模式?

以下命令用于在批处理模式下运行:

mysql;

mysql mysql.out

29、MyISAM表格将在哪里存储,并且还提供其存储格式?

每个MyISAM表格以三种格式存储在磁盘上:

·“.frm”文件存储表定义

·数据文件具有“.MYD”(MYData)扩展名

索引文件具有“.MYI”(MYIndex)扩展名

30、Mysql中有哪些不同的表格?

共有5种类型的表格:

MyISAM

Heap

Merge

INNODB

ISAM

MyISAM是Mysql的默认存储引擎。

31、ISAM是什么?

ISAM简称为索引顺序访问方法。它是由IBM开发的,用于在磁带等辅助存储系统上存储和检索数据。

32、Mysql如何优化DISTINCT?

DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

33、如何显示前50行?

在Mysql中,使用以下代码查询显示前50行:

SELECT*FROM

LIMIT 0,50;

34、可以使用多少列创建索引?

任何标准表最多可以创建16个索引列。

35、NOW()和CURRENT_DATE()有什么区别?

NOW() 命令用于显示当前年份,月份,日期,小时,分钟和秒。

CURRENT_DATE() 仅显示当前年份,月份和日期。

36、什么样的对象可以使用CREATE语句创建?

以下对象是使用CREATE语句创建的:

DATABASE

EVENT

FUNCTION

INDEX

PROCEDURE

TABLE

TRIGGER

USER

VIEW

37、Mysql表中允许有多少个TRIGGERS?

在Mysql表中允许有六个触发器,如下:

BEFORE INSERT

AFTER INSERT

BEFORE UPDATE

AFTER UPDATE

BEFORE DELETE

AFTER DELETE

38、什么是非标准字符串类型?

以下是非标准字符串类型:

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

40、MYSQL支持事务吗?

在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。

但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。

示例如下:

START TRANSACTION;

SELECT @A:=SUM(salary) FROM table1 WHERE type=1;

UPDATE table2 SET summmary=@A WHERE type=1;

COMMIT;

41、MYSQL数据表在什么情况下容易损坏?

服务器突然断电导致数据文件损坏。

强制关机,没有先关闭mysql 服务等。

42、Mysql中有哪几种锁?

MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁

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

行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值