1.mysql中的字符串类型都有哪些?
char(N) 0~255
varchar(N) 0~65535
tinyblob 0~255
blob 0~655335
meduimblob 0~167772150
longblob 0~4294967295
tinytext 0~255
text 0~65535
MEDIUMTEXT 0~167772150
LONGTEXT 0~4294967295
VARBINARY(N) 0~N个字节的变长字节字符集
BINARY(N) 0~N个字节的定长字节字符集
2.varchar和char的区别是什么?分别适用的场景有哪些?
VARCHAR 和 CHAR 最大区别就是,VARCHAR 的长度是可变的,而 CHAR 是固定长度,CHAR 的取值范围为1-255,因此 VARCHAR 可能会造成存储碎片。由于它们的特性决定了 CHAR 比较适合长度较短的字段和固定长度的字段,如身份证号、手机号等,反之则适合使用 VARCHAR。
3.mysql存储金额应该适用哪种数据类型?为什么?
mysql存储金额应该适用decimal 因为如果存储其他数据类型,比如float有导致小数点后数据丢失的风险
4.limit 3,2的含义是什么?
去除前三条数据之后查询两条信息
5.now()和current_date()有什么区别?
now() 返回当前时间包含日期和时分秒,current_date() 只返回当前时间
6.如何去重计算总条数?
使用 distinct 去重,使用 count 统计总条数,具体实现脚本如下:select count(distinct f) from t
7.lastinsertid()函数功能是什么?有什么特点?
lastinsertid()用于查询最后一次自增表的编号,它的特点是查询时不需要指定表名,使用selectlast_insert_id()即可查询,因为不需要指定表名所以它始终以最后一条自增编号为主,可以被其它表的自增编号覆盖,比如A表的最大编号是10,lastinsertid()查询出来的值为10,这时B表插入了一条数据,它的最大编号为3,这个时候使用lastinsertid()查询的值就是3。
8.删除表的数据有几种方式?他们有什么区别?
删除数据有两种方式:delete和truncate他们的区别如下:
a.delete可以添加where条件删除部分数据,truncate不能添加where条件只能删除整张表。
b.delete的删除信息会在mysql的日志中记录,而truncate的删除信息不被记录在mysql的日志中,因此delete的信息可以被找回而truncate的信息无法被找回。
c.truncate因为不记录日志所以执行效率比delete快
delete from t where username='redis'; truncate table t;
9.mysql中支持几种模糊查询?它们有什么区别?
mysql中支持两种模糊查询regexp和like,like是对任意多字符匹配或任意单字符进行模糊匹配,而regexp则支持正则表达式的匹配方式,提供比like更多的匹配方式,regexp和like的使用示例如下:
delete from t where username='redis'; truncate table t;
select from person where uname regexp '.SQL*.';
10.mysql支持枚举吗?如何实现?它的用途是什么?
MySQL 支持枚举,它的实现方式如下:
create table t(
sex enum('boy','grid') default 'unknown'
);
枚举的作用是预定义结果值,当插入数据不在枚举值范围内,则插入失败,提示错误 Data truncated for column 'xxx' at row n 。