什么是MySQL数据库
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
什么是关系型数据库
关系型数据库存放的是实体之间的关系
MySQL数据库存储的方式
SQL的概念
SQL的分类
DDL:数据定义语言
create,drop,alter..
DCL:数据控制语言
grant,if…
DML:数据操纵语言
insert,update,delete…
DQL:数据查询语言
select
使用SQL
创建数据库 : create database 数据库名称 [character set 字符集 collate 字符集校对规则]
查看数据库 :
- 查看数据库服务器中所有的数据库:show databases;
- 查看某个数据库的定义信息: show create database 数据库名称;
修改数据库 : alter database 数据库名称 character set 字符集 collate 校对规则;
删除数据库 : drop database 数据库名称;
其他数据库操作
- 切换数据库:use 数据库名称
SQL创建表
create table 表名称(字段名称 字段类型(长度) 约束,字段名称 字段类型(长度) 约束…);
SQL查看表
- 查看某个数据库下的所有的表 show tables;
- 查看某个表的结构信息 desc 表名;
SQL删除表
- drop table 表名;
SQL修改表
- 修改表:添加列 alter table 表名 add 列名 类型(长度) 约束;
- 修改表:修改列类型,长度和约束 alter table 表名 modify 列名 类型(长度) 约束;
- 修改表:删除列 alter table 表名 drop 列名;
- 修改表:修改列名称 alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- 修改表:修改表名 rename table 表名 to 新的表名;
- 修改表的字符集 alter table 表名 character set 字符集;
SQL添加表的记录
- 语法:
- 向表中插入某些列:insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…)
- 向表中插入所有列:insert into 表名 values (值1,值2,值3…);
- 注意事项
- 1.值的类型与数据库中表列的类型一致。
- 2.值的顺序与数据库中表列的顺序一致。
- 3.值的最大长度不能超过列设置最大长度。
- 4.值的类型是字符串或者是日期类型,使用单引号引起来。
SQL修改表的记录
- 语法:
- update 表名 set 列名=值,列名=值 [where 条件];
- 注意事项
- 1.值的类型与列的类型一致。
- 2.值的最大长度不能超过列设置的最大长度。
- 3.字符串类型和日期类型添加单引号。
SQL删除表的记录
- 语法:
- delete from 表名 [where 条件];
- 注意事项
- 1.删除表的记录,指的是删除表中的一行记录。
- 2.删除如果没有条件,默认是删除表中的所有记录。
- 删除表中的记录有两种做法:
- truncate table user;
- 删除所有记录,属于DDL语句,将表删除,然后重新创建一个结构一样的表。事务不能控制DDL的
- delete from user;
- 删除所有记录,属于DML语句,一条记录一条记录删除。事务可以作用在DML语句上的
SQL查看表的记录
- 基本查询
- 语法:select [distinct] *|列名 from 表 [条件];
- 条件查询
- 使用where子句
- > , < , >= , <= , <> ,=
- like:模糊查询
- in:范围查询
- 条件关联:and , or ,not
- 排序查询
- 使用order by 字段名称 asc/desc;
- 分组统计查询
- 聚合函数使用
- sum();
- count();
- max();
- min();
- avg();
- 分组查询
- 语法:使用group by 字段名称;
- 环境准备 ***** where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
select product,sum(price) from orderitem group by product having sum(price) > 5000;
总结
- S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);