第68节:Java中的MYSQL运用从小白到大牛
前言
学习java
必备要求,学会运用!!!
常见关系化数据库
BootStrap
是轻量级开发响应式页面的框架,全局css
组件,js
插件.栅格系统是将页面的宽度分为12等分.
col-xs-*: 手机屏幕
col-sm-*: 平板
col-md-*: PC电脑
col-lg-*: 超大屏幕
数据库
crud
操作
数据库,什么是数据库,数据的作用有哪些呢?
数据库就是一个文件系统,如文件夹目录一样,存储数据,很久很久以前是用sql
命令来操作.
数据库介绍,sql
数据库是structured query language
结构化查询语言的缩写,sql
是为数据库而建立的操作命令集,是一种功能齐全的数据库语言.我们在使用它的时候,只要发出命令,就可以展示数据了,sql
功能强大啊,但是也是很容易进行学习,使用起来也很方便呢,sql
已经成为了数据库操作的基础,并且所有的数据库基本上都支持sql
.
sql
数据库 是结构化查询语言, 简称为sql
数据库, 英文名: structured query language
, 功能齐全的数据库语言.
sql
数据库的优点:
它是非过程化语言,是统一的语言,是所有关系数据库的共同语言.
一个sql
数据库是表的集合,它是由一个或多个sql
模式定义的,sql
数据表由行集构成,一行是列的序列集合,每行与行对应的一个数据项,一个表或者一个基本表或者是视图,.基本表是实际尺寸在数据库的表,而视图是由若干基本表或其他视图构成的表的定义.一个基本表可以拷一个或多个存储文件,一个存储文件也可以存放一个或多个基本表,每个存储文件与外部存储上的一个物理文件对应.
数据库是按照数据结构来组织,存储和管理数据的仓库,它产生于距今六十多年前.数据库的基本结构分三个层次,英文名database
数据库,有三种数据种类.
数据库按照数据结构来组织,存储和管理数据的建立在计算机存储设备上的仓库.数据库是可以在计算机内进行长期存储的,有组织,可共享的数据集合.
作用:用来存储数据,具有访问权限可以限制不同人的不同操作.
java
开发工程师
2
年以上的经验,基础号
理解io
,多线程,集合等基础框架
对jvm
原理的了解.
mvc,spring,mybatis,Webservice
等
主流开发框架和技术,各种算法,数据库查询语言
熟悉mysql,oracle
等数据库,有一定的数据库设计经验,了解Linux,Unix
等.
html,css,javascript,jquery,
eclipse,myeclipse
等
浏览器: html/css/js
用于显示页面
服务器: javaee
后台程序
数据库
常见的数据库:
mysql
:
是开源免费的, 适用于中小型企业的数据库.
sun
收购mysql
, sun
公司被oracle
收购了.
然后就开始收费了.
mariadb
: 是mysql
开源版的一个分支.
oracle
: 甲骨文公司.
收费软件,适用于大型电商网站.
sun
公司拥有了java
.google
收购了安卓.
就导致了 sun
->google
db2
: IBM公司,解决方案:软件和硬件.银行系统大多采用db2
.
sqlserver
: 用于windows
里面.大学教学采用sqlserver
,图形化工具.
非关系型数据库: key
: value
mongodb
:
redis
:
关系型数据库:
用来描述实体与实体之间的关系.
E-R
关系图
E-R
代表:
实体:方框,属性:椭圆,关系:菱形.
mysql
数据库服务器
mysql
server
进行删除mysql
MYSQL
的安装
有“Typical
(默认)”、“Complete
(完全)”、“Custom
(用户自定义)”三个选项,选择“Custom
”,按“next
”键继续
MySQL Server
, Client Programs
, Documentation
同理,点击.
“Detailed Configuration
(手动精确配置)”、“Standard Configuration
(标准配置)”
“Developer Machine
(开发测试类,mysql
占用很少资源)”、“Server Machine
(服务器类型,mysql
占用较多资源)”、“Dedicated MySQL Server Machine
(专门的数据库服务器,mysql
占用所有可用资源)”
“Decision Support(DSS)/OLAP
(20个左右)”、“Online Transaction Processing
(OLTP
)(500个左右)”、“Manual Setting
(手动设置,自己输一个数)”
一般选UTF-8
mysql
语句
DDL
数据定义语言,用于定义数据库,
create创建
drop删除
alter修改
DML
: 数据操作语言,用于操作数据
insert 插入
update 修改
delete 删除
DCL
: 数据控制语言,定义访问权限,取消访问权限,安全设置.
grant
DQL
: 数据查询语言:
select 查询
from
where
create database 创建数据库
create database dashucoding;
create database dashucoding character set字符集 collate校对规则
create database
create database dashucoding character set utf8;
数据库的创建
登录数据库
mysql -uroot -padmin
创建数据库
create database stu;
创建数据库同时指定字符集
create database 数据库的名字 character set 字符集
create database stu character set utf8
字符集是一套符号和编码,校对规则 是在字符集内用于比较字符的一套规则.
create database stu character set utf collate utf8_bin;
展示数据库
show databases;
informartion_schema
performance_schema
mysql
查看数据库定义时的语句
show create database
数据库的名字
show create database stu;
修改数据库
修改数据的字符集
alter database 数据库的名字 character set 字符集
alter database stu character set gbk;
删除数据库
drop database 数据库的名字
drop database stu;
切换数据库
use 数据库名字
use student;
查看当前使用的数据库
select database();
创建表
create table 表名(列名 列的类型 约束,列名2 列的类型 约束);
create table student ( sid int primary key, sname varchar(31), sex int, age int);
列的约束:
主键的约束: primary key
,
唯一的约束: unique
,
非空约素: not null
,
列的类型:
char
: 固定长度
varchar
: 可变长度
date
:
date : YYYY-MM-DD
time : hh:mm:ss
datetime : YYYY-MM-DD hh:mm:ss 默认值为null
timestamp : YYYY-MMM-DD hh:mm:ss 默认使用当前时间
text
:用了存放文本
blob
存放二进制
查看表
show tables
查看表的定义
show create table student;
查看表的结构
desc student;
修改表
add
添加列
modify
修改列
change
修改列名
drop
删除列
renamme
修改表名
添加列
alter table 表名 add 列名 列的类型 列的约束
alter table student add chengji int not null;
修改列
alter table student modify sex varchar(2);
desc student;
修改列名
alter table student change sex gender varchar(2);
删除列
alter table student drop chengji;
修改表名
rename table student to dashucoding;
修改表的字符集
show create table student;
alter table student character set gbk;
删除表
drop table student;
数据库:
sql
的分类:
DDL
数据库的定义,与表的结构:
create
, drop
, alter
DML
数据操纵语言
insert
update
delete
DCL
数据控制语言
设置用户的访问权限
DQL
数据查询语言
select form where
数据库
创建数据库
create database 数据库的名字
查看数据库
show databases;
查看所有的数据库
查看数据库定义
show create database 数据库名字
select database();
查看当前使用的数据库
修改数据库
alter database character set 字符集
删除数据库
drop database 数据库名字
选中数据库
use
数据库的名字
表数据的操作
创建表create table 表名(列名 列的类型 约素);
列的约素:
主键的约素:primary key
唯一约素: unique
非空约素: not null
删除表:drop table 表名
查看表:show tables
查看当前数据库中所有的表名
show create table 表名
查看表的定义结构
desc 表名;
查看表的结构
添加列
alter table 表名 add 列名 列的类型 列的约束
修改列
alter table 表名 modify 列名 列的类型 列的约束
修改列名
alter table 表名 change 旧列名 新列名 列的类型 列的约束
删除列
alter table 表名 drop 列名
表的字符集
alter table 表名 character set 字符集
修改表名
rename table 旧表名 to 新的表名
表中数据的插入
sql
完成对表中数据的操作
插入数据:
insert into 表名 (列名1, 列名2, 列名3) values (值1, 值2, 值3);
insert into studnet(sid,sname,sex,age) values (1, 'dashu', 1, 23);
简单写法
insert into student values(2,'dashu', 1, 23);
查看表中的数据
select * from student;
批量插入
insert into student values (3,'da',1,32),(4,'coding',1,32);
解决乱码的问题:
修改my.ini
配置,先暂停服务,57
行修改gbk
,保存重启即可.
删除的操作:
delete from 表名 [where条件];
delete from student where sid=6;
delete from student;
会删除所有的数据;
delete
删除数据和truncate
删除数据有什么区别?
delete
: 属于DML
一条一条的删除表中的数据.
truncate
: 属于DDL
先删除表再重建表.
如何删除的数据比较少,delete
比较高效,删除的数据多,就truncate
比较高效.
查询
select [distinct] [*] [列名,列名2] from 表名 [where 条件];
更新表:
update 表名 set 列名=列的值, 列名2=列的值2 [where 条件];
update student set sname='dahsu' where sid=5
表数据的操作
insert into 表名 values(值1,值2,值3)
删除记录
delete from 表名 [where 条件]
更新
update 表名 set 列名=列到的值 [where 条件];
查看数据
select * from student;
select
查询
数据查询的操作
select [distinct 可选参数,去除重复的数据] [*] [列名,列名2] from 表名 [where 条件];
distinct
: 去除重复的数据.
create table category(cid int primary key auto_increment, cname varchar(10), cdesc varchar(31) );
插入数据
insert into category values (null, 'dashu', 'dashucoding');
查询数据
select * from category;
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
select * from product;
查询商品名称和商品价格:
select pname,price form product;
别名查询,关键字为as
,可以省略
别名:
select p.pname, p.price form product p;
select p.pname, p.price from product as p;
列别名:
select pname as 商品名称, price as 商品价格 from product;
select pname 商品名称, price 商品价格 from product;
去除重复内容:
select price from product;
select distinct price from product;
select *,price*1.5 as 折后价 from product;
select * from product where price > 100;
like
: 模糊查询:
_: 代表一个字符
%: 代表多个字符
in
查询 在某个范围内的值
select * from product where con in(1,2,3);
排序查询:order by
关键字
asc
: ascend
升序
desc
: descend
降序
按照价格排序:
select * from product order by price;
select * from product order by price desc
降序
select * from product where pname like '%dashu%';
select * from product where pname like '%dashu%' order by price asc;
聚合函数
// 一些函数
sum(): 求和
avg(): 求平均值
count(): 统计数量
max(): 最大值
min(): 最小值
select sum(price) from product;
select avg(price) from product;
select count(*) from product;
select avg(price) from product;
select * from product where price > (select avg(prive) from product);
分组:
group by
select con, count(*) from product group by cno;
select cno, avg(price) from product group by con;
having
关键字
select cno, avg(price) from product group by con having avg(price) > 60;
select ... from ... where .. group by .. having .. order by ..
from.. where.. group by ... having.. select .. order by ...
复习
SQL分类:
DDL: 数据库的定义: create, drop, alter
DML: 数据操纵语言: insert, update, delete
DCL: 数据控制语言: 设置用户的访问权限
DQL: 数据查询语言: select, from, where
表中数据操作:
CRUD
插入数据: insert into 表名 (列名1,列名2) values(值1,值2);
insert into 表名 values(值1,值2);
批量插入: insert into 表名 values (值1,值2),(值1,值2);
删除数据: delete from 表名 where 条件
truncate table 表名: 先删表,再重建
update 表名 set 列名=值, 列名=值 where 条件
select [distinct] [*] [ 列名1,列名2 ]
from 表名 where 条件 group by ...
having 条件过滤 order by 排序
asc: ascend
desc: descend
order by: order by price asc
group by
and or not
关系运算 <> 不等于
int 范围
like 查询
sum();
avg();
min();
max();
count();
MySQL
数据库的安装和配置
配置Mysql
按照bin
目录到Path
中
命令:
mysql –u用户名 –p密码
一般会在数据库创建多个表,以保存程序中实体的数据.Structured Query Language
, 结构化查询语言,SQL
是用来存取关系数据库的语言.
功能:
查询、操纵、定义和控制关系型数据库
-
DDL
(数据定义语句)-Data Definition Language
-
DML
(数据操纵语句)-Data Manipulation Language
-
DCL
(数据控制语句)-Data Control Language
-
DQL
(数据查询语句)-Data Query Language
1. 用来定义数据库的对象
2. 在数据库表中更新,增加和删除记录
3. 用于设置用户权限
4. 数据查询
约束:
- 主键约束 -
primary key
:不允许为空,不允许重复 - 唯一约束 -
unique
- 非空约束 -
not null
Insert 增加数据
Update 更新数据
Delete 删除数据
Select 查找数据
实体关系:
多对多: n:m
一对多: 1:n
一对一: 1:1
重置Root
密码:
// 案例:
创建数据库
create database stu;
使用utf8字符集
create database stu character set utf8;
带规则
create database stu character set utf8 collate utf8_general_ci;
修改字符集
alter database stu character set gbk;
删除数据库
drop database stu;
查看所有数据库
show databases;
查看数据库的字符集
show create database stu;
操作员工表:
create table employee (id int primary key auto_increment,
name varchar(20) not null,
gender varchar(10),
birthday date,
entry_date date,
job varchar(30),
salary double,
resume text
);
删除表
drop table student;
添加
alter table student add name varchar(20);
修改
alter table student modify name varchar(30);
删除列
alter table student drop gender;
修改表名
rename table student to student_s;
修改表的 字符集
alter table student character set utf8;
修改列名name -> username
alter table student change name username varchar(20) not null;
查看表结构:
show tables;
show create table student;
desc student;
update student set salary = 2000;
update student set salary = 3000 where name = 'dashu';
update student set salary = 2000, job = 'java' where name= 'dashu';
update student set salary = salary + 1000 where name='dashu';
delete from student where name='da';
删除表中所有记录
delete from student;
查询表中所有信息
select * from student;
select name, sex from student;
select *,chinese+math+english from exam;
使用别名
select *,chinese+math+english as 总分 from exam;
select * from student where name='dashu';
select * from exam where chinese+math+english>200;
in:
select * from exam where math in(89,75,91);
使用order by
select *,chinese+math+english as 总分 from exam order by 总分 desc;
select count(id) from exam;
统计总分大于250的人数有多少?
select count(id) from exam where chinese+math+english>250;
统计数学成绩大于或等于90的学生有多少个?
select count(math) from exam where math>=90;
使用avg函数
select avg(math) from exam;
查询购买了几类商品,并且每类总价大于100的商品
select product,sum(price) from orders where price>100 group by product;
自己下载软件:
mysql-5.5.27-winx64
,查百度.
如果看了觉得不错
点赞!转发!
达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞