带你玩转JavaWeb之六-Mysql数据库
2016-12-30 23:34
197 查看
1.数据库概念
文件系统,需要标准的sql来操作
2.常见数据库
MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.
Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.
DB2:IBM公司的数据库产品,收费的.银行系统中.
SQLServer:MS公司.收费的中型的数据库.
SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.
SQLite: 嵌入式的小型数据库,应用在手机端.
和java相关的数据库
mysql(Hibernate)
oracle
3.mysql的安装和卸载
卸载:
1.去控制面板或者360去卸载
2.删除数据库安装路径和数据存放路径
3.清空回收站
4.关系型数据库
实体(表)和实体之间存在关系。
5.数据库服务器内部结构
6.sql概念
结构化查询语言,非过程化语言
一条语句对应一个结果
int i =10; int j = 7; int sum = i+j;
7.sql分类
数据库:
正式库
测试库
8.命令行连接数据库
mysql -u root -p
9.学习列表
操作数据库(CRUD)
操作表(CRUD)
操作表里面的数据(CRUD)**重点
create datbase 数据库名[character set 字符集]
eg:创建名字为day06_1的数据库(默认编码)
eg:创建名字为day06_2的数据库,指定编码为gbk
2.查看数据库
show databases;查看所有的数据库
show create databse 数据库名;查看数据库的定义结构
3.删除数据库(用的很少)
drop database 数据库名;
eg:删除day06_2的数据库
4.修改数据库(不是修改数据库名,是修改编码集)
alter database 数据库名 character set 字符集;
eg:把day06_1的数据库改成gbk编码的
注意:
是utf8,不是utf-8
5.其它操作
use 数据库名;选定数据库
select database();查看正在使用的数据库
eg:创建一张学生表,id(主键约束,自动增长),学生姓名,学生性别
1)类型
不同:
2)约束(规定,规矩)
not null;非空
unique;唯一约束
primary key;主键(非空+唯一)
注意:
把id设置为整型,设置为主键约束,设置为自动增长
或者把id设置为字符串类型,设置为主键,UUID
2.查看表
show tables;查看所有的表
desc 表名;查看表的定义结构
3.修改表
增加一个字段;alter table 表 add 字段 类型 约束;
修改列的类型约束; alter table 表 modify 字段 类型 约束 ;
修改列的名称;alter table 表 change 旧列 新列 类型 约束;
删除一列; alter table 表名 drop 列名;
修改表名; rename table 旧表名 to 新表名;
eg:向学生表添加一个班级字段
eg:修改sex字段的类型为字符串
eg:修改class字段成为grade字段
eg:删除grade字段
eg:把student改成teacher(用的比较少)
4.删除表
drop table 表名;
eg:删除teacher表
insert into 表名 values(值,值,值….)
insert into 表名(字段,字段…)values(值,值..)
注意:
值要和字段类型匹配
值的个数要和字段个数一致
如果值是字符串类型,需要用”括起来
2.更新记录
update 表名 set 字段 = 值 [where 条件]
eg:把分类表的cname更新成’服装’
注意:
如果没有加条件,会把操作的字段全部修改
3.删除记录(表还在,删除数据)
1)delete from 表 [where条件]
2)truncate table 表
区别:
delete是一条一条的删除,truncate把整张表删除再创建一张新表
delete是受事物控制的,truncate不受事物控制
4.查询记录(*重点)
1)查询所有的字段
select *from 表名
eg:查找商品表所有的字段
select *from product
2)查询某张表特定字段的记录
select 字段,字段…from 表
eg:查找商品表商品名和商品价格
3)去重查询
disticnt 字段
eg:去掉价格重复的商品
注意:
重复一定要全部一样才能筛选
4)别名查询
字段别名; 字段 as 别名;
表别名; 表 as 别名;
5)运算查询(+,-,*,/等)
eg:把价格+10查出商品
注意:
字段之间可以进行运算
字符串类型做运算查询没有意义
6)where条件查询
eg:查找商品id为1的商品信息
eg:查询价格大于3000的商品信息
注意:
不等于是<>;
eg:查找价格在3000到8000之间的商品(3000<=price<=8000)
eg:查找id在1,5,8,10这
ba14
个集合的id
eg:查询pname以Ip开头的商品
注意:
like一般和占位符一起使用
%;指的是多位(0~n)
_;一位
eg:查询价格>3000并且数量>10的商品
7)排序查询
order by 字段
desc;降序
asc;升序(默认)
eg:根据商品价格查询商品信息
应用场景:
京东里面价格筛选
qq,微信附近的人
8)聚合函数
count(*|字段);统计个数,过滤null
sum();总和
avg();平均值
max();最大值
min();最小值
eg:统计商品表里面商品的个数
eg:统计商品价格总和
eg:查询商品表的平均价格
eg:查找商品表里面价格最高的
9)分组查询
group by 字段
eg:统计商品表中不同类别的个数
注意:
一般,通过分组,只有包含分组的字段和聚合函数才有意义
10)分组后筛选
having
eg:根据类别分组,查询商品的平均价格并且平均价格大于3000
select cno,avg(price) form product group by cno
注意:
having是分组后的筛选,不能离开group by单独存在
有having一定有group by,有group by不一定有having
11)查询语句出现的顺序
select—from—where—group by—-having—order by
注意:
where不能用聚合函数作为条件,聚合函数不能跟在where后面
alter table 表 add foreign key(字段) references 表(字段);
2.多表的关系(*重点)
1)一对多
-在多的一方创建一个字段作为外键指向一的一方的主键
2)多对多
创建一张新的表,至少包含两个字段分别指向各自的主键
3)一对一(了解)
先当做一对多,在外键字段添加唯一约束
3.网上商城案例实体的抽取
2.没有安装服务
3.3306端口号被占用导致服务开启不了
4.解决命令行乱码
5.重置密码
文件系统,需要标准的sql来操作
2.常见数据库
MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.
Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.
DB2:IBM公司的数据库产品,收费的.银行系统中.
SQLServer:MS公司.收费的中型的数据库.
SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.
SQLite: 嵌入式的小型数据库,应用在手机端.
和java相关的数据库
mysql(Hibernate)
oracle
3.mysql的安装和卸载
卸载:
1.去控制面板或者360去卸载
2.删除数据库安装路径和数据存放路径
3.清空回收站
4.关系型数据库
实体(表)和实体之间存在关系。
5.数据库服务器内部结构
6.sql概念
结构化查询语言,非过程化语言
一条语句对应一个结果
int i =10; int j = 7; int sum = i+j;
7.sql分类
DDL:数据定义语言. create,alter,drop... DML:数据操纵语言 insert,delete,update DCL:数据控制语言 grant DQL:数据查询语言(***重点) select
数据库:
正式库
测试库
8.命令行连接数据库
mysql -u root -p
9.学习列表
操作数据库(CRUD)
操作表(CRUD)
操作表里面的数据(CRUD)**重点
二,对数据库的CRUD
1.创建数据库create datbase 数据库名[character set 字符集]
eg:创建名字为day06_1的数据库(默认编码)
create database day06_1;
eg:创建名字为day06_2的数据库,指定编码为gbk
create database day06_2 character set gbk;
2.查看数据库
show databases;查看所有的数据库
show create databse 数据库名;查看数据库的定义结构
3.删除数据库(用的很少)
drop database 数据库名;
eg:删除day06_2的数据库
drop database day06_2;
4.修改数据库(不是修改数据库名,是修改编码集)
alter database 数据库名 character set 字符集;
eg:把day06_1的数据库改成gbk编码的
alter database day06_1 character set gbk;
注意:
是utf8,不是utf-8
5.其它操作
use 数据库名;选定数据库
select database();查看正在使用的数据库
三,对表的CRUD
1.创建表create table 表名( 字段 类型 约束, 字段 类型 约束, 字段 类型 约束 ); java: int a;
eg:创建一张学生表,id(主键约束,自动增长),学生姓名,学生性别
create table student( id int primary key auto_increment, name varchar(20), sex int );
1)类型
Java MYSQL int int float float double double String char/varchar Date date,time,datetime,timestamp 文件类型 BLOB、TEXT TEXT指的是文本文件 BLOB二进制文件
不同:
1.char/varchar来定义字符串,并且需要指定长度 char(5),最大能存放5个字符,固定长度。 aa。--->身份证18 varchar(5),最大能存放5个字符,可变长度。aa。 2.date;只有日期 time;只有时间 datetime;既有时间又有日期 timestamp;时间戳,null--->下订单 3.注意:在公司里,一般不会把大文件存入blob和text里面,把文件放在硬盘上,存放路径
2)约束(规定,规矩)
not null;非空
unique;唯一约束
primary key;主键(非空+唯一)
注意:
把id设置为整型,设置为主键约束,设置为自动增长
或者把id设置为字符串类型,设置为主键,UUID
2.查看表
show tables;查看所有的表
desc 表名;查看表的定义结构
3.修改表
增加一个字段;alter table 表 add 字段 类型 约束;
修改列的类型约束; alter table 表 modify 字段 类型 约束 ;
修改列的名称;alter table 表 change 旧列 新列 类型 约束;
删除一列; alter table 表名 drop 列名;
修改表名; rename table 旧表名 to 新表名;
eg:向学生表添加一个班级字段
alter table student add class varchar(20);
eg:修改sex字段的类型为字符串
alter table student modify sex varchar(10);
eg:修改class字段成为grade字段
alter table student change class grade varchar(20);
eg:删除grade字段
alter table student drop grade;
eg:把student改成teacher(用的比较少)
rename table student to teacher;
4.删除表
drop table 表名;
eg:删除teacher表
drop table teacher;
三,对表的数据CRUD(**重点)
1.插入数据insert into 表名 values(值,值,值….)
insert into 表名(字段,字段…)values(值,值..)
注意:
值要和字段类型匹配
值的个数要和字段个数一致
如果值是字符串类型,需要用”括起来
2.更新记录
update 表名 set 字段 = 值 [where 条件]
eg:把分类表的cname更新成’服装’
update category set cname = '服装';
注意:
如果没有加条件,会把操作的字段全部修改
3.删除记录(表还在,删除数据)
1)delete from 表 [where条件]
2)truncate table 表
区别:
delete是一条一条的删除,truncate把整张表删除再创建一张新表
delete是受事物控制的,truncate不受事物控制
4.查询记录(*重点)
select [*][字段,字段][distinct 字段] from 表名 [where 条件]
1)查询所有的字段
select *from 表名
eg:查找商品表所有的字段
select *from product
2)查询某张表特定字段的记录
select 字段,字段…from 表
eg:查找商品表商品名和商品价格
select pname,price from product;
3)去重查询
disticnt 字段
eg:去掉价格重复的商品
select distinct price from product;
注意:
重复一定要全部一样才能筛选
4)别名查询
字段别名; 字段 as 别名;
表别名; 表 as 别名;
5)运算查询(+,-,*,/等)
eg:把价格+10查出商品
select pname,price+10 from product;
注意:
字段之间可以进行运算
字符串类型做运算查询没有意义
6)where条件查询
eg:查找商品id为1的商品信息
select *from product where pid = 1;
eg:查询价格大于3000的商品信息
select *from product where price>3000;
注意:
不等于是<>;
eg:查找价格在3000到8000之间的商品(3000<=price<=8000)
select *from product where price between 3000 and 8000;
eg:查找id在1,5,8,10这
ba14
个集合的id
select *from product where pid in(1,5,8,10);
eg:查询pname以Ip开头的商品
select *from product where pname like 'Ip%';
注意:
like一般和占位符一起使用
%;指的是多位(0~n)
_;一位
eg:查询价格>3000并且数量>10的商品
select *from product where price>3000 and num>10;
7)排序查询
order by 字段
desc;降序
asc;升序(默认)
eg:根据商品价格查询商品信息
select *from product order by price;
应用场景:
京东里面价格筛选
qq,微信附近的人
8)聚合函数
count(*|字段);统计个数,过滤null
sum();总和
avg();平均值
max();最大值
min();最小值
eg:统计商品表里面商品的个数
select count(pid) from product;
eg:统计商品价格总和
select sum(price) from product;
eg:查询商品表的平均价格
select avg(price) from product;
eg:查找商品表里面价格最高的
select max(price) from product;
9)分组查询
group by 字段
eg:统计商品表中不同类别的个数
select cno,count(*) from product group by cno;
注意:
一般,通过分组,只有包含分组的字段和聚合函数才有意义
10)分组后筛选
having
eg:根据类别分组,查询商品的平均价格并且平均价格大于3000
select cno,avg(price) form product group by cno
注意:
having是分组后的筛选,不能离开group by单独存在
有having一定有group by,有group by不一定有having
11)查询语句出现的顺序
select—from—where—group by—-having—order by
注意:
where不能用聚合函数作为条件,聚合函数不能跟在where后面
四,多表间关系
1.外键约束alter table 表 add foreign key(字段) references 表(字段);
2.多表的关系(*重点)
1)一对多
-在多的一方创建一个字段作为外键指向一的一方的主键
2)多对多
创建一张新的表,至少包含两个字段分别指向各自的主键
3)一对一(了解)
先当做一对多,在外键字段添加唯一约束
3.网上商城案例实体的抽取
五,第三方软件
六,数据库常见问题解决
1安装路径安装文件存放路径:不能有中文和空格!
2.没有安装服务
(没有安装服务)安装服务: 管理员权限进入mysql的bin目录下: mysqld.exe -install 安装服务: 如果有服务已经存在可以先移除 mysqld.exe -remove 移除服务
3.3306端口号被占用导致服务开启不了
已经安装服务,端口号被占用: 命令行输入:netstat -ano 找到对应端口的pid,去任务管理器去查找pid对应的软件。kill掉软件。
4.解决命令行乱码
如果在命令行里出现中文乱码,到my.ini配置文件里面修改和命令行一致的编码。 改完之后,重启服务。重新打开命令行
5.重置密码
方法一: 1.在my.ini的[mysqld]字段加入: skip-grant-tables 2.重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql 3.mysql>use mysql; mysql>update user set password=password('新密码') WHERE User='root'; 4.mysql>flush privileges; 运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。 方法二: 不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码 1.停止mysql服务 2.打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables 3.然后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。 4.按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行的话可以结束掉对应进程来关闭。 5.启动mysql服务
相关文章推荐
- 高手是如何轻松玩转Java Web Start的-Java基础-Java-编程开发
- JAVA Web开发MySQL数据库记录浏览分页
- javaweb中mysql数据库连接步骤方法及其实例
- Tomcat与JavaWeb 4.1 MySQL数据库与JDBC基础
- Javaweb中结合mysql数据库实现分页功能
- 高手是如何轻松玩转Java Web Start的
- java web 连接mysql数据库
- javaweb 写mysql数据库中文乱码
- 玩转 Java Web 应用开发:Play 框架
- JavaWeb常用开发技术总结-js、spring、javabean、mysql数据库、dwr的使用等
- Java Web基础教程四 ---------配置篇三mysql数据库的安装配置使用
- Java web开发 (三) ——MySQL数据库的安装
- java web中jsp连接mysql数据库 以及数据库连接池的使用
- 轻松玩转Java Web Start
- 轻松玩转Java Web Start
- java web 程序---jsp连接mysql数据库的实例基础+表格显示
- 超全面的JavaWeb笔记day15<mysql数据库>
- javaWeb开发之基础--------------MySQL数据库总结
- Javaweb开发中,mysql数据库字段默认不区分大小写问题
- java web 开发 分页功能 mysql数据库