#MySQL数据库的简介
1.数据库是数据的仓库,本质还是一个系统文件,在这个文件中按照特点的格式存储数据,我们可以对这个文件的诗句进行增删改查操作。数据库由客户端和服务器组成,客户端发送指令,接收数据,显示数据;服务器则是接受指令,处理指令,返回相应的数据。
服务器还了数据库管理系统,更好的管理数据,提高指令的梳理。
2.数据库相当于一个文件夹,数据表相当于文件。在对数据的操作中,数据表的表名就相当于java代码中的表名,数据表的列就相当于类的属性,列就像相当于类中对象。
3.常见的数据库有:
MySQL:免费,开源 ,轻量级适合中小公司使用。
oracle:收费的,但性能很好,更安全,适合银行。
DB2:收费性能好,服务好。
sqlserver:c# 微软 。
sqlite:移动数据库 比较少(存数据比较少)c++也使用这个来查看数据。
4.数据库的链接方式:dos命令窗口,MySQL程序。
#数据库的操作。
1.DDL:操作库和表的结构。
1.create database + 数据库的库名
2.创建数据库的时候设置其编码格式 .create database + 数据库的库名 + character +编码格式
3.查看数据库的编码格式 show create database+数据库的库名
4.删除数据 drop database +数据库库名(不要把数据库默认的库删除了)
5.查看所有的库 show databases
6. use +库名,数据库中的数据类型: int(整数) double(小数) char(类似String)=>固定的字节 varchar(长度可变,类似于Stringbuffer) Text(大文本) 图片 blob 存二进制(图片,视频) java一般图片都存的是地址 date yyyy–MM-dd time: HH:mm:ss dateTime yyyy–MM-dd HH:mm:ss
7. 创建表:create table +表名(
列名1 数据类型(长度),
列名2 数据类型(长度),
列名…n 数据类型(长度)
);
1.注意点:最后一个列名不需要加逗号
2.要切换到具体的库
8.在表中增加一列 :alter table 表名 add 列名(长度)
9.查看表结构: desc 表名
10.修改具体列的类型的约束: alter table + 表名 modify 列名(长度)
11.修改整个列名 alter table +表名 change 旧的列名 新的列名(长度);
12.删除列:alter table 表名 drop 列名
13.修改表的名称: alter table 表名 rename +新的表名 || rename table +旧表名 to +新的表名
14.查看当前库里的所有的表: show tables
15.设置表的编码格式: alte table +表名 character set 编码格式
16.查看表的编码格式: show create table + 表名
DML:表格数据的增删改。
1.增加的第一种写法: insert into 表名(“列名1”,“列名2”,“列名3”)values(值1,值2,值3); (写列名) insert into student(id,name,sex,createTime)values(1,“李四”,“男”,‘2019-11-23’);
2.不用列名: insert into student values(2,“赵武”,“女”,“23333”,22,‘2019-11-23’); 默认插入所有的数据,从第一列开始
3.插入多条数据 :insert into student values(2,“赵武”,“女”,“23333”,22,‘2019-11-23’),(3,“赵武”,“女”,“23333”,22,‘2019-11-23’);
2.数据的修改:update 表名 set 列名1=“值1”,列名=“值2” where 条件
3.数据的删除: delete from 表名 where 条件 >删除数据
2 truncate 表名 >删除数据,并且会删除表结构 ==>也就等同于先删除这张表,再重新构建一张表。
3.数据的查询:DQL,不会改变数据表的本身。
查询product表中所有记录 所有的使用*
语法: select * from 表名
select * from product
查询product表中pid和pname字段
select 列名,列名 from 表名
select pid,pname from product;
查询product表中所有的电脑办公记录
语法:select * from 表名 where 条件
select * from product where categroy_name=“电脑办公”;
查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
语法:select 列名+10 from 表名
select price+10 from product;
设置别名关键字 按as(可以不写) ==>设置别名可以给表设置,也可以给列设置别名(表与表之间存在关系,使用的比较多)
给 表设置别名 :select * from 表名 as s
去除重复的关键字是: distinct
去除价格重复
select distinct price from product;
具体实例:
#1.使用价格排序(降序)
select * from product order by price desc;
#2.在价格排序(降序)的基础上
#若价格相同,相同价格的数据以pid降序排序
select * from product order by price desc, pid desc;
#查询出 价格(去掉重复的) 以价格进行降序排列
select distinct price from product order by price desc;
聚合函数: 1.count(* 或者是 1 或者类名)>查询出总记录数 MAX(列名)>最大值 MIN(列名)>最小值 SUM(列名)>总和 AVG(列名)==>平均数
#1 查询商品的总条数
select count(1) from product;
#查看商品总价格、最大价格、最小价格、价格的平均值
select SUM(price),MAX(price),MIN(price),AVG(price) from product;
#2 查询价格大于200商品的总条数
select count(1) from product where price>200
#3 查询分类为’电脑办公’的所有商品的总记录
select count(1) from product where category_name=“电脑办公”;
#4 查询分类为’服装’所有商品的平均价格
select avg(price) as “平均数” from product where category_name=“服装”;
分组:group by +分组的条件
统计各个分类下商品的个数
select category_name,count(1) from product group by category_name;
#统计各个分类商品的个数,有且 只显示分类名称不为空值的数据
select category_name,count(1) from product group by category_name having category_name is not null;
#统计各个分类商品的个数,有且 只显示分类名称不为空值的数据 降序排列 + 加分页取前两条数据
select category_name,count(1) as s from product group by category_name having category_name is not null order by s desc limit 0,2;
having
where ===相同点都是用于过滤 区别: having 是在分组的后面进行过滤(group by 一般having进行搭配使用) where 是在分组的前面的过滤
查询语句书写的规范: select * from + 表名 +where 条件 +group by(分组)+having(过滤)+order by(排序)+limit(分页)
备份: 1.通过sql语句备份 dos 窗口 mysqldump -u用户名 -p密码 数据库的苦命>路径(d:/aa.sql); 1.一点不要加分号 2.不能进mysql进行备份
还原 : 2. mysql -u用户名 -p密码 数据库<路径(d:/aa.sql); 1.数据库在存在 2.一点不要加分号 3.不能进mysql进行备份