一、基本语法
DQL:
1、基本查询语法
select 字段名
from 表名1
[链接类型] join 表名2
on 连接条件
where 查询条件
group by 分组字段名
having 分组筛选条件
order by 排序字段名,排序条件
limit 1 / 1,2 分页查询
2、连接查询
内链接(等值查询、非等值连接、自连接)
外连接(左外连接、右外连接、全外连接)
交叉连接
3、解释MySQL外连接、内连接与自连接的区别
二、事务
1、什么是事务、事务的特性都有哪些
2、事务的隔离级别都有哪些
三、索引
1、索引的底层原理和优化
2、主键、外键、索引的区别
3、索引的作用?和它的优点缺点是什么?
4、索引的目的是什么?
快速访问数据表中的特定信息,提高检索速度
创建唯一性索引,保证数据库表中每一行数据的唯一性。
加速表和表之间的连接
使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间
5、索引对数据库系统的负面影响是什么?
负面影响:
创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。
6、为数据表建立索引的原则有哪些?
在最频繁使用的、用以缩小查询范围的字段上建立索引。
在频繁使用的、需要排序的字段上建立索引
7、什么情况下不宜建立索引?
对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。
对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等
8、简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
四、优化数据库的方法
1、说说对SQL语句优化有哪些方法?(选择几条)
2、
五、存储引擎
1、存储引擎都有哪些,有什么区别
2、简述在MySQL数据库中MyISAM和InnoDB的区别
3、影响数据库查询速度的因素?
六、锁
1、什么是锁?,都有哪些锁,不同锁作用有哪些
2、锁的优化策略
七、其他
1、视图、函数
1、mysql中char、varchar和text类型的区别
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。
它们的存储方式和数据的检索方式也都不一样。
数据的检索效率是:char > varchar > text
- 具体说明:
- char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用trim之类的函数去过滤空格。
- varchar:存储变长数据,但存储效率没有char高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
- text:存储可变长度的非Unicode数据,最大长度为2^31-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。
- 关于存储空间:
在使用UTF8字符集的时候,MySQL手册上是这样描述的:- 基本拉丁字母、数字和标点符号使用一个字节;
- 大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言;
- 韩语、中文和日本象形文字使用三个字节序列。
- 结论:
- 经常变化的字段用varchar;
- 知道固定长度的用char;
- 超过255字节的只能用varchar或者text;
- 能用varchar的地方不用text;
- 能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;
- 同一张表出现多个大字段,能合并时尽量合并,不能合并时考虑分表
2、
- 数据库
- 事务的特性:原子性、一致性、隔离性、持久性。
- 联合主键:设置多个字段同时为主键(PRIMARY KEY(Name, Age))
- 复合主键:多个主键联合形成一个主键组合。(成绩表中的学号、课程标号)
- mysql怎么优化
- 数据库的备份是如何实现的
- mysql创建一个学生表,包含id(int)和name(string),主键的创建:
CREATE TABLE stu(id INT (5), name VARCHAR (100), PRIMARY KEY (id));
- mysql建立索引
CREATE INDEX index_name ON table_name (column_list) CREATE INDEX idx_c4 ON t(c4);
- 数据库查询10-20行内容:
select * from stu limit 10, 10;
- 创建数据库:
CREATE DATABASE database_name;
- 查找135开头的电话:
select * from table where tel like '135%';
- left join, right join和inner join的影响性能的因素。