MySql是什么?
MySql是最流行的关系型数据库管理系统,在WEB应用方面MySql是最好的RDBMS(关系型数据库管理系统)应用软件之一。
什么是数据库?
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照待定的格式将数据储存起来,用户可以同过sql对数据库中的数据进行增加,删除,修改以及查询。
1.什么是关系型数据库
数据库中的记录是有行有列的数据库就是关系型数据库,与之相反的就是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;
语法:
删除表 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优化的理论依据。