JavaWeb学习笔记_Day06_MySQL数据库基础详解

JavaWeb学习笔记_Day06_MySQL数据库基础详

一、数据库简介

1、数据库介绍

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第1张图片

数据库厂商

​ 甲骨文公司:oracle ,mysql

​ 微软公司:sql server

​ 其他:mongodb redis

三个阶段

​ 层次型

​ 网状型:access数据库,存储数据较小,数据排列复杂,存储方便,获取较为复杂

关系型:以二维表的形式,存储数据。表与表之间产生了关联, mysql

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第2张图片

​ 其他数据库 :redis数据库

​ 以键值对的形式存储数据 map集合的方式存储,结构简单,查询较快,弥补了关系性数据库存储数据类型较少的缺点

2、数据库分类:

根据数据存储结构的不同将数据库分成两类:

1、关系型数据库:以二维表的形式存储数据,并表与表之间是有关联的。

2、非关系型数据库:以文档或键值对形式存储数据,结构简单,数据之间没有关系,利于扩展。

二、MySQL数据库

1、介绍

MySQL是一个**关系型数据库管理系统****,**由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

2、下载安装

1、下载https://dev.mysql.com/downloads/mysql/

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第3张图片JavaWeb学习笔记_Day06_MySQL数据库基础详解_第4张图片
JavaWeb学习笔记_Day06_MySQL数据库基础详解_第5张图片

选择安装版本

开始安装

选择自定义安装

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第6张图片

选64位

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第7张图片

选择安装路径

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第8张图片

选择mysql的端口号 3306

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第9张图片

填写msql登录密码 账号 root 密码 root

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第10张图片

mysql的服务器名 mysql57

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第11张图片

安装成功

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第12张图片

2、安装步骤

3、验证安装是否成功

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第13张图片

1)打开mysql自带的命令行提示窗口 输入 mysql -hlocalhost -uroot -proot

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第14张图片

2)通过DOS窗口

如果测试时显示mysql不是内部命令,则需要配置jdk环境变量:

此电脑-鼠标右键选择“属性”-选择“高级系统设置”

配置好环境变量后,一定要重开启DOS窗口,输入:mysql -hlocalhost -uroot -proot

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第15张图片

4、开启和关闭mysql服务

第一种方式:

此电脑–鼠标右键打开管理如下:

如果发现无法连接到mysql,可能的原因服务被关闭了。

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第16张图片

第二种方式:通过DOS命令 需要以管理员的身份进行操作

net stop mysql 关闭服务 服务器的名称

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第17张图片

net start mysql 开启服务

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第18张图片

5、卸载数据库

1)从程序里把mysql程序卸载

在这里插入图片描述

2)将安装的mysql文件全部删除,需要删除两个

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第19张图片
JavaWeb学习笔记_Day06_MySQL数据库基础详解_第20张图片

3)重新启动电脑,此时重新安装。

三、SQL语言 结构化查询语言

1、sql概念

​ 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

主要作用:对数据库的增删改查

2、sql分类

1、数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字==[SELECT](https://baike.baidu.com/item/SELECT/10735068)是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING==。这些DQL保留字常与其它类型的SQL语句一起使用。 [4]

2、数据操作语言(DML:Data Manipulation Language):其语句包括动词==INSERT、UPDATE和DELETE==。它们分别用于添加、修改和删除。 [4]

3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 [4]

5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。 [4]

6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

七大关键字

select 查询

update 更新 数据(修改数值)

delete 删除 删除记录

insert 插入记录

create 创建 数据库 ,表

alter 修改(修改表的结构,字段,格式,数据类型)

drop 删除 删除表结构

sql是一个标准的结构化查询语言,可以给各大数据库厂商使用

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第21张图片

3、DDL

DDL操作数据库:

1、查看mysql服务器上的所有数据库

show databases;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第22张图片

查看创建数据库时的代码:

show create database 数据库名;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第23张图片

2、创建数据库

create database [if not exists]数据库名 [character set 编码(gbk uft8…)];

在这里插入图片描述

3、删除数据库

drop database 数据库名

在这里插入图片描述

4、修改alter

alter database 数据库名 character set 新字符集;

在这里插入图片描述

4、MySQL数据类型

1、整型 tinyint int bigint

2、小数 float double

3、布尔 没有布尔类型,一般使用int代替 1–true 0–false

4、字符串:

(1) varchar(len) 可变长度 varchar(20) 根据字符串的实际长度存储,定义的长度只是用来限制存储大小上限范围。

​ 如果字符的实际长度没有超出定义长度,剩余的部分就截取掉了

​ 姓名,邮箱,地址,qq,微信

(2) char(len) 固定长度 char(20) 字符串长度不足定义长度时,会用空格填充,不会自动调整。

​ 学号,性别,手机号码

5、日期类型

date 年月日 对应是java.util.Date 包含年月日,时分秒 java.sql.Date 只包含年月日

time 时分秒

datetime 年月日时分秒 9999-12-31 23:59:59 默认值是null

timestamp 年月日时分秒 2037-12-31 23:59:59 默认值是系统当前时间

5、DDL表操作

use 数据库名;

use student;

创建学生表 后期开发中:1个表对应一个类,一条记录对应一个对象

1、学生表 id name age
JavaWeb学习笔记_Day06_MySQL数据库基础详解_第24张图片

2、查看数据库中的所有表show tables;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第25张图片

3、查看表结构:desc 表名;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第26张图片

4、查看创建数据表文本信息:show create table 表名;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第27张图片

5、修改表名:alter table 表名 rename 新表名;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第28张图片

6、向表中添加新列:alter table 表名 add 列名 数据类型; 向表中已存在的列最后追加一列

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第29张图片

alter table 表名 add 列名 数据类型 after 已存在的列名;在已存在的列名后面插入一个新列。

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第30张图片

alter table 表名 add 列名 数据类型 first; 在已存在的所有列最前方添加新列

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第31张图片

7、删除表中的列:alter table 表名 drop 列名;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第32张图片

8、修改列信息:alter table 表名 modify 列名 数据类型;

注意:modify只能修改列的信息,不能改列名。

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第33张图片

alter table 表名 change 列名 新列名 数据类型;

change既可以改列的信息,还可以改列名。

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第34张图片

9、删除表:drop table 表名;

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第35张图片

四、可视化的操作工具SQLyog或者navicat

可视化工具

创建数据库

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第36张图片

命令方式
JavaWeb学习笔记_Day06_MySQL数据库基础详解_第37张图片

创建表结构 1

JavaWeb学习笔记_Day06_MySQL数据库基础详解_第38张图片

使用命令创建

#创建学生表
create table student(
 id int(4),
 name VARCHAR(10),
 age int(3)
);

五、DML

数据操作语言:针对数据表中的数据进行添加、修改、删除操作。关键字:

添加:insert

修改:update

删除:delete

mysql中的注释:

1、添加

单行插入:一次向表中插入一条数据

语法格式:

insert into 表名 values(值1,值2,值3…);

insert into student values(1001,'张三',20);
insert into student values(1003,"王五",30);

– 给部分列插入数据

insert into 表名(列1,列2,列3…) values(值1,值2,值3…);

#给部分列插入数据
insert into student(id,name) values(1005,'赵柳');
insert into student(id,name,age) values(1005,'赵柳abcdefgh',30);

多行插入:一次向表中插入多条数据

语法格式:

insert into 表名(列名1,列名2,列名3…)

values(值1,值2,值3…),(值1,值2,值3…),(值1,值2,值3…)…;

# 一次插入多条数据
insert into student(id,name,age) 
values(1007,'张学友',25),
      (1008,'刘德华',30),
	  (1009,'郭富城',35);

注意事项:

1、值的个数、顺序、数据类型一定要与列保持一致

2、整型列直接给值,字符类型一定放在’'或 ""给值

3、不指定列名的情况下,按原始表中列的个数、顺序给值

2、修改

语法格式:

update 表名 set 列名1= 新值1,列名2=新值2…[ where 更新条件]

# 修改表数据  update
update student set name = '赵柳柳' where id = 1005;
# 一次修改多个数据
update student set age = 50,name = '老王' where id = 1002;

3、删除

语法格式:

delete from 表名 [where 删除条件];

truncate table 表名; 只能删除表中全部数据 delete from 表名

# 删除数据  delete 删除数据,不删除结构
delete from student where age = 30;
# 删除数据  truncate  后面没有where语句  不支持条件删除
truncate table student where id = 1009;

面试题:delete 和 truncate的区别

1:delete 支持条件删除 可以跟where语句 ,truncate不支持条件删除

2:delete删除的效率较低,有日志记录存在,所以支持数据回滚操作

3:truncate效率高,没有日志记录,不支持数据回滚操作

4:truncate慎用 ,没有记录可恢复

六、DQL database query language

数据查询语言:根据用户需求从数据表中筛选出符合条件的数据,以结果集的形式返回给用户。查询操作对原始表的数据没有任何影响。

查询关键字:select

1、查询全部:select * from 表名;*通配符 表示所有列

select * from student;

2、查询部分列: select 列名1,列名2… from 表名;

select id,name,age from student;

3、查询取别名:select 列名 as 别名 from 表名;

# 查询给别名  as 别名 ,查询不会改变表的结构
select id as '学号',name as '姓名',age as '年龄' from student;
select id 学号,name 姓名,age 年龄 from student;

4、查询部分行,条件查询 where 条件使用逻辑运算符拼接(and or not )

# 查询学号是1001的学生
select * from student where id = 1001; 
# 查询年龄大于20的学生
select * from student where age > 20;
# 查询年龄大于20的女生
select * from student where age > 20 and sex = '女';
# 查询年龄大于20的。或者性别是女生
select * from student where age > 20 or sex = '女'; 
# 查询班里所有不是女生的
select * from student where sex !='女';

5、范围查询:in 表示或者的含义

select * from student where name ='郭富城' or name = '刘德华';
select * from student where name in('郭富城','刘德华');

6、区间查询 between … and …(在 …之间)前小后大,并且包含边界值

select * from student where age>=20 and age<=25;
select * from student where age between 20 and 25;

7、模糊查询 like 通配符:% 表示0到多个 _ 表示1个

#查询班里姓的刘的学生   % 表示通配符中 0-n
select * from student where name like '刘%';
#查询班里姓的刘的学生 姓名只有2个字   _ 表示通配符中1个
select * from student where name like '刘__';
#查询班里名字中带刘的名字
select * from student where name like '%刘%';

8、空值查询null, is null, is not null

#查询邮箱是null
select * from student where email is null;
select * from student where email = '';
#查询邮箱不是null
select * from student where email is not null;

注意:null和’'不一样

9、限制返回行 limit 分页LIMIT index,count

#查询表中第一条数据 
# limit index,pageSize
# index 表示起始下标从0开始
# pageSize  表示当前页显示的记录数
select * from student limit 0,1;
select * from student limit 0,2;
select * from student limit 2,2;
  1. 排序 order by 排序的列名(可以按多列进行排序)

升序:asc 默认

降序:desc

# 按照年龄从小到大排序  默认是升序
select * from student order by age asc;
select * from student order by age desc,id desc;

注意:可以对多个字段同时排序,当前面字段的值相同时,在按照后面的字段排序

11、去重查询distinct

#查询班里所有的性别 去重查询 distinct
select distinct sex from student;

总结:MySQL是JavaWeb中特别重要的部分,今天学习的语句一定要加强练习!

你可能感兴趣的:(JavaWeb,数据库,mysql,java,sql)