MYSQL

一:SQL

标准组织为了方便各家数据仓库操作的通用性,指定了一系列语句。通过SQL语句创建仓库,创建仓库下的表,对表上的数据经行操作(增 删 改 查)。

二:SQL分类

 1._DDL 创建定义类型的语句属于DDL,例如如何创建仓库,创建表,修改仓库,修改表

 2._DML 数据操作语句 对表是上的数据经行增 删 修改。

 3._DQL 对表上的数据进行查询。

三:MySQL支持的数据类型 (int varchar double date)

 1.primary key : 主键约束规则,如果某个列设置了主键,这个列上的数据 不允许重复 必须有数据。not null: 必须有数据

 2.增加数据           insert into 表名(字段1.字段2......) values(字段值)。

 3.修改表中的数据  update 表名 set 要修改的字段名属性。

4.删除语句           

            delete from 表名 (删除全部数据,相当与把整个表中的数据删除)

            truncate table 表名 (删除全部数据,速度相当快 相当于把整个表删除,重新创建一张表)。 

5.distinct 查重

   slect distinct 列名 from 表名。

6. drop 是删除表 是回复比较难 truncate 是删除整个表中的所有数据 delete 是删除表中的一条条记录 是可以保存到日志中的。

四:SQL语句查询

1.排序

  通过order by语句 可以将查询出的结果进行排序 暂时放在select语句的最后 格式

  select * from 表名 order by 排序字段 ase|desc;  (asc 升序 desc 降序)

  同时可以根据排序 并去重

 select distinct   去重的字段  from 表名 order by 排序字段 ase|desc;  (asc 升序 desc 降序)

2.聚合

 使用聚合查询是纵向查询 它是对一列的值经行计算 然后返回一个单一的值 另外聚合函数会忽略空值。

* count: 统计指定列不为null的记录行数。

  select count(*/列名) from 列名;

* sum: 计算指定列的数值和,如果指定列的数据类型不是数值类型,那么计算结果是0;

* max:计算指定列中的最大值 如果指定列是字符串类型 那么使用字符串排序运算。

* min:计算指定列的最小值 如果指定列是字符串类型 那么使用字符串排序运算

*avg:计算指定列的平均值 如果指定列不是数值类型 那么计算结果是0

五:分组

分组查询是指使用 group by 字句对查询信息经行分组。

select 字段1,字段2...from 表名 group by 分组字段 having 分组条件。

having:是用于在分组后对数据经行过滤,where是在分组前对数据经行过滤

having: 后面可以使用分组函数 where不可使用。 

六:SQL约束

1.主键约束

 primary key 约束唯一标识数据库表中的每条记录。主键必须包含唯一值,主键不能为null,每个表都应该有一个主键,并且只能有一个主键。

 2.自动增长列

我们希望在每次插入新纪录时 数据库自动生成字段值,我们通过使用auto_increment(自动增长列)关键字 自动增长列类型必须是整形 自动增长列必须是主键。

3.非空约束

NOT NULL:约束强制列不接收null值

NOT NULL:表示该字段始终都要有值 如果不向字段添加值 就无法插入新的记录或者更新新的记录。

4.唯一约束

UNIQUE:约束唯一标识数据库表中的每条记录

unique和primary key约束均为列或列集合提供了唯一性的保证。

主键约束用于自动定义的唯一约束 每个表中可以有多个唯一约束但是只能有以一个主键约束。

5.外键约束

foreign key 表示外键约束  

七:多表操作

* 一对多关系

在多的一方创建一个字段,字段作为外键指向一的一方的主键

* 多对多关系

需要创建第三张表 表中至少两个字段 这两个字段分别作为外键指向各自一方的主键。使用外键的目的是保证数据的完整性。

八:一对多操作

主表必须提供主键 从表必须提供外键。

九:多对多

商品表和订单表是多对多 可以将其拆分为两个一对多 需要引入第三张表。

在一个表中添加外键指向主表的主键

ALTER TABLE 从表表名 ADD FOREIGN KEY(从表中的外键) REFERENCES 主表(表中的主键);


九: 多表查询

1.交叉连接查询  select * from A,B;

2.内链接查询(使用关键字 inner join --inner可以忽略)

  * 隐式内链接: select * from A,B where  条件;

  * 显示内链接 : select * from A,B where A inner join B on 条件;

3.外连接查询(使用关键字 outer join  --outer 可以省略)

   * 左外连接:left outer join

      select * from A left outer join B on 条件

   * 右外连接: right  outer join

      select * from A right outer join B on 条件。


十: 子查询

 1.子查询;一条select语句结果作为另一条select语法的一部分(查询条件,查询结果,表等)

 select ....查询字段 ...from ....表.....where.....查询条件

十 一: 索引:

1.索引:索引是帮助MySql高效获取数据结构,存在形式是文件。索引能够帮我们快速的定位数据,加快查询速度。

2.索引带来的代价:

*索引是以文件的形式存储在硬盘上,需要的时候才加载到内存中,所以添加索引会增加磁盘的开销。

*写数据:需要更新索引 对数据库是个很大的开销 降低表更新,添加和删除的速度。

3.索引的类型:单列索引和组合索引

*单列索引:即一个索引只包含单个列 一个表可以有多个单列索引,但这不是组合索引。组合索引包含多个列。

*唯一索引 :索引的列的值必须是唯一,可以是空值。

4.索引优化:在经行全表扫描查询的时候如果没有索引值 则进行全表扫描影响效率。 对要查询的字段属性添加索引可以快速的提高查询速度。

十二:数据库优化

1.索引优化:

*合理使用索引,在经常查询而不经常增删该操作的字段上加索引 一个表中的索引不应该超哥..过6个。

*Order by 和 group by 后直接使用字段,而且字段应该是索引字段。

2.表结构优化

*设计符合第三范式的表结构

*尽量使用数字型字段,提高数据对比效率。

*适当进行水平分隔和垂直分割。

3.其他优化

*不实用select * ,只查询需要的字段

*在查询一条字段时 用 limit 1

*尽量少使用游标

十三:存储过程

1.存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值