Web01-MySQL篇
掌握MySQL的基本数据库,表及表中记录的操作
掌握MySQL中的多表创建及多表查询
掌握MySQL中的表关系分析并能正确建表
了解MySQL可视化界面的使用

* 列表内容
1.1数据库整体介绍
1.1.1MySQL的概述
什么是数据库?
数据库就是一个存储数据的文件系统,需要通过标准SQL语句才能访问.
常见的数据库:
MySQL:开源免费的数据库,中小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.
Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司
DB2 :IBM公司的数据库产品,收费的.银行系统中用的比较多
SQLServer:MS公司.收费的中型的数据库.
SyBase:已经不用了,但是供了一个非常专业数据建模的工具PowerDesigner.
SQLite: 嵌入式的小型数据库,应用在手机端,比如android和ios
Java相关的数据库:MYSQL,Oracle.
什么是关系型数据库?
数据库中存的实体和实体之间的关系.
MySQL数据库服务器结构
见图解
1.1.2MySQL的安装和卸载
安装见安装图解
卸载的时候将这两个路径下的文件一并都删除掉,否则安装会失败
basedir=”C:\Program Files\MySQL”
datadir=”C:\ProgramData\MySQ”

a..双击mysql-installer-community-8.0.11.0.msi开始安装,点击I accept the license
tems(我接受这些条款),点击next继续下一步

b点击Custom自定义安装

c.然后选中MySQL Server 8.0.11-X64,然后点击Advanced Options进行路径的配置

e.点击Execute开始执行安装程序,直至出现Complete为止,然后一直点击next到达配置MySQL对话框

f.选择第一个standalone mysql server/classic mysql
replication:独立的mysql服务器/经典的mysql复制,第二个是innodb cluster sandbox thst setup(for
testing only):innodb集群沙箱thst设置(仅用于测试)

g.设置服务器配置类型以及连接端口:继续next,Config Type:选择Development Machine,用于小型以及学习所用足够了。Port
number:输入3306

h.此处选择“Use Legacy Password
Encryption”,使用以前的数据加密方式,否则使用navicat连接mysql的时候,会报无法加载身份验证的错误。

i.输入root密码,6位即可,一定要自己记得不要忘记了

j.配置mysql在windows系统中的名字,是否选择开机启动mysql服务,其它的没进行修改,点击“Next”

k.使X协议/ MySQL作为文件存储,这个是MySQL5.7.12增加了新的协议支持,同时勾选Open windows firewall port
for network access 为网络访问打开Windows防火墙端口

l.点击Execute开始执行刚刚的配置,直至所有的选项打上绿色的√,最后依次点击finish->next->next完成安装

m.最后在命令行窗口输入:mysql -u root -p,然后输入密码进入mysql数据库

如果提示则需要把MySQL的bin目录配置在系统环境变量path中,然后再尝试一遍即可

1.1.3安装之后可能出现的问题
如果使用mysql -u root -p不好使,可以将mysql的bin目录配置到path变量值里面
如果输入密码之后闪退,可以使用services.msc查看MySQL服务是否启动了,如果没有启动就启动就可以了
1.1.4MySQL的SQL语句
什么是SQL?
SQL:结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/
“S-Q-L”),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL的分类:
数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。
数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
数据查询语言(DQL),例如:SELECT语句。(一般不会单独归于一类,因为只有一个语句)。
数据控制语言(DCL),例如:GRANT、REVOKE等语句。
事务控制语言(TCL),例如:COMMIT、ROLLBACK等语句。
SQL语言包括四类种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML) 及数据控制语言(DCL)还有事务控制语言(TCL)。
1.2SQL语句的使用
1.2.1使用SQL语句对数据库进行CRUD操作
【创建数据库】
create database 数据库名;
create database 数据库名 character set 字符集;
【查看数据库】
查看数据库服务器中的所有的数据库:show databases;
查看某个数据库的定义的信息:show create database 数据库名;
【删除数据库】
drop database 数据库名称;
【修改数据库】
alter database 数据库名 character set 字符集;
【其他的数据库操作命令】
切换数据库:use 数据库名;
查看正在使用的数据库:select database();
1.2.2使用SQL语句对数据库中表进行CRUD的操作
【创建表】
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束,

);
【MySQL的数据类型】
Java MySQL
int int
float float
double double
char/String char/varchar(char固定长度字符串,varchar可变长度的字符串)
Date date,time,datetime,timestamp
文件类型 BLOB、TEXT TEXT指的是文本文件 BLOB二进制文件
【单表约束】
主键约束(一个表中只能有一个主键且值肯定是唯一的):primary key
auto_increment自动增长,从1开始
MySQL的auto_increment属性只能用在主键上
唯一约束(值必须是唯一的,但是一个表中可以有多个唯一的字段):unique
非空约束(值不能为空):not null
【创建一个商品分类表】
分类id int类型主键 自动增长(auto_increment)
分类名称 字符串类型 长度20
create table category(category_id int primary key auto_increment,name
varchar(20));
注意:建表之前一定先选择数据库
use 数据库名;
【查看表】
查看数据库中的所有表:show tables;
查看表结构:desc 表名;
查看表的创建信息:show create table 表名;
【删除表】
drop table 表名;
【修改表】
alter table 表名 add 列名 类型(长度) 约束; 添加列
alter table 表名 modify 列名 类型(长度) 约束; 修改列的类型长度及约束
alter table 表名 change 旧列名 新列名 类型(长度) 约束; 修改列名,类型,长度,约束
alter table 表名 drop 列名; 删除列
rename table 表名 to 新表名; 修改表名
alter table 表名 character set 字符集; 修改表的字符集
1.2.3使用SQL语句对表中的数据进行CRUD操作
创建商品表:
id,名称,价格,分类id
【插入记录】
insert into 表名 (列名1,列名2,列名3..) values (值1,值2,..); 向表中插入某些列
//insert into table values ();
insert into 表名 values (值1,值2,值3..); 向表中插入所有列
注意:
1.列名数与values后面的值的个数相等
2.列的顺序与插入的值得数据类型要保持一致
3.插入值得时候不能超过最大长度.
4.值如果是字符串或者日期需要加’’
【修改记录】
update 表名 set 字段名=值,字段名=值 [where 条件];
注意:
1.列名的类型与修改的值要一致
2.修改值得时候不能超过最大长度
3.值如果是字符串或者日期需要加’ ’
【where后的条件写法】

,<,=,>=,<=
like:使用占位符 _ 和 % _代表一个字符 %代表任意个字符.
in:在某个范围中获得值.
and:可以将多个条件拼接起来
【删除记录】
delete from 表名 [where 条件];
注意:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
区别:
删除方式:delete 一条一条删除. 而truncate 直接将表结构记录删除.

事务控制DML(transaction),而delete属于DML.如果在一个事务中,delete数据,这些数据可以找回.truncate删除的数据找不回来.
start transaction;开启事务
commit;提交事务
rollback;回滚事务
【查询记录】
select [distinct]*[列名,列名] from 表 [where 条件].
简单查询
1.查询所有的商品:
//select * from table;
2.查询商品名和商品价格:
//select name,price from table;
3.别名查询.使用的关键字是as.as可以省略的.
3.1表别名:
//select * from product as p;
3.2列别名:
//select name 姓名,price 价格 from product;
4.去掉重复值的查询:
//select distinct name,price from product;
select运算查询
1.将所有商品的价格+20元进行显示.
//select price+20 p from product;
条件查询
1.查询商品名称为xxx的商品所有信息:
2.查询商品价格>xxx元的所有的商品信息:
3.查询商品价格>xxx元且名字包含‘手机’的商品信息:
4.查看商品id等于1或者3或者5的商品信息
(order by)排序查询:
1.查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
2.查询名称有xxx的商品的信息并且按价格降序排序.
聚合函数
sum(),avg(),max(),min(),count();
1.获得所有商品的价格的总和:
//select sum(price) from product;
2.获得所有商品的平均价格:
//select avg(price) from product;
3.获得所有商品的个数:
//select count(*) from product;
分组查询
(先将每个商品归类)使用group by分组和having进行条件查询
1.根据category_id字段分组,分组后统计商品的个数:
//select count(*),category_id from product group by category_id;
2.根据category_id分组,分组统计每组商品的平均价格并且平均价格> 3000的category_id:
//select avg(price) p,category_id from product group by category_id having
p>3000;
SQL语句的查询语句出现的顺序:select…from…where…group…having…order by…

1.3SQL创建多表及多表的关系约束
1.3.1需求
分类表和商品表之间是不是有关系?如果有关系,在数据库中如何表示这种关系.
1.3.2技术分析和实现
【外键约束】
多个表之间是有关系的,那么关系靠谁来维护?
外键约束写法:
表已存在外键约束:
alter table product add foreign key (category_id) references
category(category_id);
创建表的时候直接外键约束:
create table product(product_id int primary key auto_increment,name
varchar(20),price float,category_id int,foreign key (category_id) references
category(category_id));
【多表的关系】
一对多关系:客户和订单,分类和商品…
一对多建表原则:在多的一方创建一个字段,字段作为外键指向一的一方的主键.
多对多关系:学生和课程…
多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指 向各自一方的主键.
一对一关系:在实际的开发中应用不多.因为一对一可以创建成一张表.
唯一外键对应:假设一对一是一个一对多的关系,在多的一方创建一个外键指向一的一方的主 键,将外键设置为unique.
主键对应:让一对一的双方的主键进行建立关系.

1.4多表查询
有的数据需要联合多张表一起才能查出想要的数据,多表查询又分为交叉连接查询,内连接查询,外连接查询,子查询,分页查询等…

交叉连接查询(基本不会使用-得到的是两个表的乘积)了解
语法:select * from A,B;
内连接查询(使用的关键字 inner join – inner可以省略)
隐式内连接:select * from A,B where 条件;
显示内连接:select * from A inner join B on 条件;
外连接查询(使用的关键字 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 条件;
【子查询】
查询“手机产品”分类的商品信息
【MySQL的分页查询】
select * from product limit a,b;
a:从哪开始,b:查询多少条.

技术
©2019-2020 Toolsou All rights reserved,
Unity-Demo实例之 ✨ 实现UI-背包装备拖拽功能计算机网络---计算机网络基本概念(协议、体系)某东14薪变16薪,是诚意还是套路?让人意想不到的Python之樱花树(turtle库的华丽样式)java四大函数式接口(重点,简单)06【若依框架解读】数据范围过滤--太牛了Unity3D之UGUI基础--画布的三种模式os模块的简单使用html写樱花树,写樱花树的作文