什么是MySQL?
MySQL是一种关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle
旗下产品,是当下最流行的关系型数据库管理系统 之一。 在 WEB 应用方面,MySQL是最好
的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySql的优势:体积小、速度快、总体拥有成本低、开放源码、适合中小型网站开发.
什么是关系型数据库?
数据是有行有列的数据库就是关系型数据库,反之就是NoSQL数据库数据
关系数据库的优势:在于将数据保存在不同的表中,而不是将所有数据放在一个大仓 库内,
这样就增加了速度并提高了灵活性。
MySQL安装
个人推荐安装图解链接:https://www.cnblogs.com/whaben/articles/6687544.html
什么是SQL?
SQL(Structured Query Language,结构化查询语言)是用来操作关系数据库的语言。
SQL分类:
数据定义语言 |
简称DDL(Data Definition Language) |
例如:create,alter,drop |
数据操作语言 |
简称DML(Data Manipulation Language) |
例如:insert,delete,update |
数据控制语言 |
简称DCL(Data Control Language) |
例如:grant,revoke |
数据查询语言 |
简称DQL(Data Query Language) |
例如:select,from,where |
SQL语句对表的操作
- 数据库
语法:
创建数据库: create 创建 database数据库
删除数据库: drop 删除 EXISTS存在 IF如果
DROP DATABASE IF EXISTS test;
切换数据库:USE test;
2.表
语法:
删除表 drop table [if exists] 表名;
创建表 create table [if not exists] 表名 (
字段1 数据类型 [字段属性|约束][索引][注释],
字段n 数据类型 [字段属性|约束][索引][注释]
)[表类型][表字符集][注释];
注意:
1、如果数据库名,表名,字段名等与保留字冲突,用撇号括起来
2、多个字段使用逗号隔开
3、单行注释:#
多行注释:/*…*/
4、设置为自动增长auto_increment
查看表:
show tables;
查看表结构:
desc 表名
清空表数据,序列号从1开始:
truncate table 表名;
删除表:
drop table 表名
修改表
alter table 表名 add 列名 类型(长度) 约束; --修改表添加列.
alter table 表名 modify 列名 类型(长度) 约束; --修改表修改列的类型长度及约束.
alter table 表名 change 旧列名 新列名 类型(长度) 约束;--修改表修改列名.
alter table 表名 drop 列名; --修改表删除列.
rename table 表名 to 新表名; --修改表名
alter table 表名 character set 字符集; --修改表的字符集
插入记录
语法:insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..);
修改记录:
语法:update 表名 set 字段名=值,字段名=值;
删除记录:
语法:delete from 表名 [where 条件];
对表数据的查询
- 查询所有的商品
select * from product;
2.别名查询,使用的as关键字,as可以省略的.
2.1表别名: select * from product as p;
2.2列别名:select pname as pn from product;
3.去掉重复值
select distinct price from product;
4.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
select pname,price+10 from product;
条件查询
Select *from product where price=50
排序
SQL语法关键字:ORDER BY ASC(默认升序) DESC(降序)
示例: select * from product order by price;
聚合函数
常用的聚合函数:
sum():求某一列的和
avg():求某一列的平均值
max():求某一列的最大值
min():求某一列的最小值
count():求某一列的元素个数
示例: select sum(price) from product;
多表查询
内连接: inner join
示例:SELECT * FROM A INNER JOIN B ON A.id = B.id
左外连接:LEFT JOIN 或者 LEFT OUTER JOIN
示例:SELECT * FROM A LEFT JOIN B ON A.id = B.id
右外连接:RIGHT JOIN 或者 RIGHT OUTER JOIN
示例:SELECT * FROM A RIGHT JOIN B ON A.id = B.id
分页查询: LIMIT
示例:SELECT * FROM table LIMIT [offset,] rows
子查询: in 或者 not in
示例:SELECT StudentName FROM Student where studentNo in
( select studentNo from result r inner join subject s on r.subjectNo
=s.subjectNo where studentResult<60 and subjectName ='java')
子查询注意事项:子查询可以出现在SQL语句中任何表达式的位置,子查询可以出现在select子句,from 子句 group by 子句中
查询原理
第一、单表查询
根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的);然后根据SELECT的选择列选择相应的列进行返回最终结果。
第二、两表连接查询
对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表;然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
第三、多表连接查询
先对第一个和第二个表按照两表连接做查询,然后用查询结果和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一个中间的结果表,然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
理解SQL查询的过程是进行SQL优化的理论依据。