1.mysql中的语言有哪些?分别代表什么意思
1、DDL(Data Define Language) 数据定义语言
2、DML(Data Manipulation Language) 数据操作语言
3、DQL(Data Query Language) 数据查询语言
4、DCL(Data Control Language) 数据控制语言
5、TCL(Transaction Control Language) 事务控制语言

2.mysql中有哪些约束?分别有什么用?
NOT NULL 非空约束,规定某个字段不能为空
UNIQUE 唯一约束,规定某个字段在整个表中是唯一的
PRIMARY KEY 主键(非空且唯一)约束
FOREIGN KEY 外键约束
CHECK 检查约束
DEFAULT 默认值约束

3.date,time,timestamp,这三种日期数据类型,分别是什么?
data:日期值(年月日)
time:时间值(时分秒)
timestamp:现在的具体时间 (年月日 时分秒)
4.内联接和外联接有什么区别?适用于什么场景?可以举例说明
内连接(inner join):取出两张表中匹配到的数据,匹配不到的不保留
外连接(outer join):取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL

5.事务的特性有那些?事务的隔离级别有哪些?mysql的默认隔离级别是什么?
原子性:要么全部成功,要么全失败
一致性:从一个一致性到另一个一致性中,没有中间态
隔离性:在提交一个事务完成之前,其他事务是不可见的
持久化:一旦事务提交,就永远是一个样子了

隔离级别;
读未提交:
读已提交:
可重复读:
串行化:
默认级别:
可重复读
6.mysql的索引
一般主键和外键通常都有索引,其他需要索引的字段包含的情况如下:
1.字段出现在查询条件中,并且查询条件可以使用索引;
2.语句使用频率高的
3.通过字段条件可筛选的记录集
7.分库 分表
分库分表的步骤:
根据容量(当前容量和增长量)评估分库或分表个数 ->选key(均匀)->分表规则(hash或range等)-> 执行(一般双写)-> 扩容问题(尽量减少数据的移动)
分表:
(1)纵向分表:
将本来一个表中那个数据,根据数据的活跃度进行分离(因为不同活跃的数据,处理方式是不同的)
(2)横线分表:
根据数据量的规模来划分,保证单表的容量不会太大,从而来保证单表的查询等处理能力
分库:
1.水平分库:
以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。
结果:
每个表的结构都一样;
每个表的数据都不一样,没有交集;
所有表的并集是全量数据;
2.垂直分库:
以表为依据,按照业务归属不同,将不同的表拆分到不同库中
结果:
每个库的结构都不一样;
每个库的数据也不一样,没有交集;
所有库的并集是全量数据;

8.数据库优化
优化方式:
1.选取最适用的字段属性
MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快
2.使用连接(JOIN)来代替子查询(Sub-Queries)
MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。
3.使用联合(UNION)来代替手动创建的临时表
MySQL从4.0的版本开始支持union查询,它可以把需要使用临时表的两条或更多的select查询合并的一个查询中。
在客户端的查询会话结束的时候,临时表会被自动删除,而保证数据库整齐、高效
4.事务
事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,
这样可以保证用户的操作不被其它的用户所干扰。
5.锁定表
下面的例子就用锁定表的方法来完成前面一个例子中事务的功能
6.使用外键
外键可以保证每一条销售记录都指向某一个存在的客户
7.使用索引
MySQL从版本3.23.23开始支持全文索引和搜索。全文索引在MySQL中是一个FULLTEXT类型索引,但仅能用于MyISAM类型的表。
对于一个大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使用ALTERTABLE或CREATEINDEX创建索引,将是非常快的。
8.优化的查询语句
首先,最好是在相同类型的字段间进行比较的操作。
其次,在建有索引的字段上尽量不要使用函数进行操作。
第三,在搜索字符型字段时,我们有时会使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的

9.SQL优化
(1).创建索引
(2).复合索引
(3).索引不包含有NULL值的列
(4).使用短索引
(5).排序的索引问题
(6).like语句操作
(7).不要在列上操作
(8).不使用NOT IN 和<>操作

10.MYSQL存储引擎
(1).MyISAM:这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。
(2).MyISAM Merge引擎:这种类型是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。
(3).InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能,也是目前MySQL默认的存储引擎。
(4).Memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。
(5) .archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。

mysql知识点二的更多相关文章

  1. [转]10分钟梳理MySQL知识点:揭秘亿级高并发数据库调优与最佳实践法则

    转:https://mp.weixin.qq.com/s/RYIiHAHHStIMftQT6lQSgA 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离 ...

  2. 一生挚友redo log、binlog《死磕MySQL系列 二》

    系列文章 原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 一生挚友redo log.binlog<死磕MySQL系列 二> 前言 咔咔闲谈 上期根据 ...

  3. MySQL优化二(连接优化和缓存优化)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  4. 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建

    从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...

  5. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  6. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  7. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  8. mysql进阶(二十八)MySQL GRANT REVOKE用法

    mysql进阶(二十八)MySQL GRANT REVOKE用法   MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...

  9. mysql进阶(二十七)数据库索引原理

    mysql进阶(二十七)数据库索引原理 前言   本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb.   第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础.    ...

  10. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

随机推荐

  1. Django Rest Frame work 如何使用serializers序列化

    Django Rest Frame work 如何使用serializers序列化       Django Rest Framework提供了serializers模块,用于序列化和反序列化模型实例 ...

  2. C# Linq将DataTable中的某列转换成数组或者List

    // 获取到的数据 DataTable picDt = GetPdmPoroductModelPictureData(productModelCode); // 将productCode列转数组 st ...

  3. pat乙级1012数字分类

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int ...

  4. vue cli 项目初始化配置

  5. 怎么理解超几何分布概率公式:p=C(M,k)C(N-M,n-k)/C(N,n)

    怎么理解超几何分布概率公式:p=C(M,k)C(N-M,n-k)/C(N,n) 前言:重在记录,可能出错. 超几何分布概率公式:p=C(M,k)C(N-M,n-k)/C(N,n),也就是: 到底要怎么 ...

  6. PHP开启缓存加速

     PHP默认会将Operate Code文件丢弃,缓存加速是将其保存下来,放置共享内存中,以便在下次调用该PHP页面时重用,避免相同代码的重复编译 __________________________ ...

  7. YYYY-MM-dd

    Calendar calendar = Calendar.getInstance();  calendar.set(2019, Calendar.DECEMBER, 31); Date strDate ...

  8. 【C学习笔记】day2-5 求两个数的最大公约数

    #include <stdio.h> int main() { int a, b; int min; scanf_s("%d %d", &a, &b); ...

  9. pycharm 默认添加# -*-coding: utf-8 -*-

    备忘 pycharm创建py文件时,默认输入表头信息 1.点击[File]-[Settins] 2.点击[Editor]-[File and Code Templates] 3.点击[Python S ...

  10. docker 安装后报错处理

    问题场景: Docker服务安装之后启动报错 日志如下: time="2022-03-20T21:51:16.116163560+08:00" level=info msg=&qu ...