一、什么是SQL:
SQL 是用于访问和处理数据库的标准的计算机语言。
SQL,查询:
select 表名.字段名 from 表名
where 查询条件

order by :排序 做报表
写法:select 查询语句结束后 order by 表名.字段名
升序和降序
默认是升序,降序要加DESC

group by:分组 做报表
写法:select 查询语句结束后 表名.字段名

内连:取交集
左连:以左表的数据为基准,列出左表所有的记录和匹配的右表数据。
右连:与左连相反

二、什么是索引?
索引是存储引擎用于快速查找记录的一种数据结构

提高查询的效率,排序,没有重复值,可以有一个空值,
应用场景:操作的字段查询的比较多,就给哪个字段加索引

索引分类:
主键索引(PRIMAY KEY)
主键:
  某一个属性组能唯一标识一条记录
  如:学生表(学号,姓名,班级,性别等等),学号时唯一标识的,可以作为主键
特点:
  最常见的索引类型
  确保数据记录的唯一性
  确定特定数据记录在数据库中的位置
唯一索引(UNIQUE)
作用:
避免同一个表中某数据列中的值重复
与主键索引的区别
  主键索引只能有一个
  唯一索引可有多个
常规索引(INDEX)
作用:
快速定位特定数据
注意:
index 和 key 关键字都可以设置常规索引
应加在查询条件的字段
不易添加太多常规索引,影响数据的插入,删除和修改操作
全文索引(FULLTEXT)
作用:
快速定位特定数据
注意:
只能用于MyISAM类型的数据表
只能用于CHAR ,VARCHAR,TEXT数据列类型
使用大型数据集

使用索引时,有以下一些技巧和注意事项:
1.索引不会包含有NULL值的列

只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

2.使用短索引

对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

3.索引列排序

MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

4.like语句操作

一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。

5.不要在列上进行运算

6.不使用NOT IN和<>操作

三、主键
什么是主键
主键是数据表中其值能惟一标识一条记录的一个字段或多个字段的组合。
数据库的每张表只能有一个主键,不可能有多个主键。
所谓的一张表多个主键,我们称之为联合主键。
注:联合主键:就是用多个字段一起作为一张表的主键。
主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

什么是外键?
外键是另一个表的主键,外键可以有重复的, 可以是空值。作用是用来和其他表建立联系的。