mysql基础小记(2)

82 阅读4分钟

一.基本数据类型

1.1 整数类型

tinyint,smallint,mediumint,int,bigint,分别是1,2,3,4,8字节,

任何整数类型都可以加上unsigned,表示无符号(非负整数)

1.2 实数类型

float,double,decimal

decimal有precision(整数和小数一共的数字)和scale(小数部分的数字)两个属性 可以用来存储比bigint还大的整形,能存储精确的小数

float,double比decimal效率高一点

1.3 字符串类型

varchar,char,text,blob

char:固定长度类型。优点:效率高,缺点:占空间
varchar:可变长度。每个值占用的字节加一个记录长度的字节
空间上比较合适,效率较低

1.4 枚举类型(enum)

一种预定义的集合

1.5 日期和时间类型

尽量使用timestamp,空间效率高于datetime

如果需要存储微秒,可以使用bigint存储

1.6具体分析

1.6.1 varchar(50)中50的含义

最大占50字符,早期mysql是指字节,现在是字符

1.6.2 int(20)中20的含义

表示的是数据长度,而非存储大小,占4字节存储

1.6.3 int(10)和char(10)以及varchar(10)

int的10表示的是数据长度,varchar和char表示的是存储数据的大小,也就是存储多少个字符

char10表示存储空间定10字符,不足用空格补齐,占用更多的空间

varchar表示的是变长字符,存多少个就是多少个字符,空格也按字节存储,char的空格是占位,不算一个字符

1.6.4 float和double的区别

存储8位十进制,内存中占4字节

存储18位十进制,内存中占8字节

1.6.5 drop,delete,truncate区别

drop:删整个表的时候

delete:删表中部分数据

truncate:保留表,删表中所有数据

1.6.6 union和union all的区别

union all,不会合并重复的纪录行,在没有去重的情况下,效率比union高

union会进行重复行合并,并排序(相当于distinct)

二.数据库经常使用的函数

  1. count(*/column):返回行数
  2. sum(column): 返回指定列中唯一值的和
  3. max(column):返回指定列或表达式中的数值最大值
  4. min(column):返回指定列或表达式中的数值最小值
  5. avg(column):返回指定列或表达式中的数值平均值
  6. date(Expression): 返回指定表达式代表的日期值

三.常用sql语句

3.1 sql语句分类

  1. 数据定义语言DDL create,drop,alter
  2. 数据查询语言DQL select
  3. 数据操控语言DML insert,update,delete
  4. 数据控制语言DCL grant,revoke,commit,rollback

3.2 sql语法顺序

  1. SELECT
  2. FROM
  3. JOIN
  4. ON
  5. WHERE
  6. GROUP
  7. HAVING
  8. UNION
  9. ORDER BY
  10. LIMIT

3.3 sql执行顺序

  1. FROM:将数据从硬盘加载到数据缓冲区,方便对接下来的数据进行操作。
  2. WHERE:从基表或视图中选择满足条件的数据。(不能使用聚合函数)()
  3. JOIN
  4. ON:join on实现多表连接查询
  5. GROUP BY:分组,一般和聚合函数一起使用。
  6. HAVING:在表中筛选出符合条件的数据(类似于where)。(一般与GROUP BY进行连用)
  7. SELECT:查询的数据集需要哪些列。
  8. DISTINCT:去重的功能。
  9. UNION:将多个查询结果合并(默认去掉重复的记录)。
  10. ORDER BY:进行相应的排序。
  11. LIMIT 1:显示输出一条数据记录

3.4 sql约束分类

  1. NOT NULL:非空
  2. UNIQUE:不能重复
  3. PRIMARY KEY:主键
  4. FOREIGN KEY:外键
  5. CHECK:字段范围

3.5 六种关联查询

A:3X3  B2X3
  1. 交叉连接(cross join)(9X5)
  2. 内连接(inner join)(交集)
  3. 外连接(left join/right join)(以左/右为标准的交集)
  4. 联合查询(union /union all)()
  5. 全连接(full join)

四.sql优化

4.1数据库优化经验

  1. sql大写,因为数据库是编译成大写字母再执行的
  2. 合理使用索引,索引会占用磁盘空间,加快查询速度的同时,会降低增删改的速度。
  3. 保证数据库完整性的同时,可以不遵从三大范式,合理使用外键,因为他会影响增删改的性能
  4. jdbc使用preparedStatement来创建sql,sql语句会预编译在此对象中,他会比Statement速度快

4.2怎么优化sql查询语句

  1. 合理使用索引,在where或order by涉及的列建立索引
  2. 避免全表扫描,where
  3. 避免select *,SQL尽量大写

4.3定位慢sql,及其解决

4.3短时间提高mysql性能

  1. 先处理掉占着连接不工作的线程,断开事物内空闲的连接
  2. 减少连接过程的消耗,慢sql(索引的设计,sql语句)

五.sql生命周期

  1. 应用服务器与服务器建立一个连接
  2. 数据库进程拿到请求sql
  3. 解析并生成执行计划,执行
  4. 读取数据到内存并进行逻辑处理
  5. 发给客户端数据
  6. 关闭连接,释放资源

六.各种优化