表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等4. UNION ALL 要比UNION 快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用 UNIONALL。>>UNION 和 UNION ALL 关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。>1. 对重复结果的处理:UNION 在进行表链接后会筛选掉重复的记录,Union All 不会去除重复记录。>2. 对排序的处理:Union 将会按照字段的顺序进行排序;UNION ALL 只是简单的将两个结果合并后就返回。
3.请简述常用的索引有哪些种类?
普通索引: 即针对数据库表创建索引
唯一索引: 与普通索引类似,不同的就是:MySQL 数据库索引列的值必须唯一,但允许有空值
主键索引: 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引
组合索引: 为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。即将数据库表中的多个字段联合起来作为一个组合索引。
4.以及在 mysql 数据库中索引的工作机制是什么?
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B 树及其变种 B+树
5.MySQL 的基础操作命令:
MySQL 是否处于运行状态:Debian 上运行命令 service mysqlstatus,在 RedHat上运行命令 service mysqld status
开启或停止 MySQL 服务 :运行命令 service mysqld start 开启服务;运行命令service mysqld stop 停止服务
Shell 登入 MySQL: 运行命令 mysql -u root -p
列出所有数据库:运行命令 show databases;
切换到某个数据库并在上面工作:运行命令 use databasename; 进入名为databasename 的数据库
列出某个数据库内所有表: show tables;
获取表内所有 Field 对象的名称和类型 :describe table_name;
6.mysql 的复制原理以及流程。
Mysql 内建的复制功能是构建大型,高性能应用程序的基础。将 Mysql 的数据分布到多个系统上去,这种分布的机制,是通过将 Mysql 的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。* 复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。
readbuffersize >是 MySQL 读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL 会为它分配一段内存缓冲区。readbuffersize 变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
14.若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)?
由于 utf8 的每个字符最多占用 3 个字节。而 MySQL 定义行的长度不能超过65535,因此 N 的最大值计算方法为:(65535-1-2)/3。减去 1 的原因是实际存储从第二个字节开始,减去 2 的原因是因为要在列表长度存储实际的字符长度,除以 3 是因为utf8 限制:每个字符最多占用 3 个字节。
15. SELECT * 和SELECT 全部字段的 2 种写法有何优缺点?
前者要解析数据字典,后者不需要
结果输出顺序,前者与建表列顺序相同,后者按指定字段顺序。
表字段改名,前者不需要修改,后者需要改
后者可以建立索引进行优化,前者无法优化
后者的可读性比前者要高
16.HAVNG 子句 和 WHERE 的异同点?
语法上:where 用表中列名,having 用 select 结果别名
影响结果范围:where 从表读出数据的行数,having 返回客户端的行数
索引:where 可以使用索引,having 不能使用索引,只能在临时结果集操作
where 后面不能使用聚集函数,having 是专门使用聚集函数的。
17.MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEYUPDATE c=c+1;
18.MySQL 的 insert 和 update 的 select 语句语法
代码语言:txt
复制
SQL insert into student (stuid,stuname,deptid) select 10,'xzm',3from student where stuid > 8;
update student a inner join student b on b.stuID=10 seta.
stuname=concat(b.stuname, b.stuID) where a.stuID=10 ;
11.表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为为主,将该字段拆成子表好处是什么?
12.MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?
13.MySQL 中控制内存分配的全局参数,有哪些?
14.若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)?
15. SELECT * 和SELECT 全部字段的 2 种写法有何优缺点?
16.HAVNG 子句 和 WHERE 的异同点?
17.MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
18.MySQL 的 insert 和 update 的 select 语句语法
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。