MySQL上

1、初识MySQL

JavaEE:企业级Java开发 Web

前端(渲染页面,展示数据)

后台(连接点:连接JDBC,链接前端)

数据库(存数据)

数据库是所有软件体系中最核心的存在

1.1 什么是数据库

概念:数据仓库,软件,安装在os上

存数据,管理数据

1.2 数据库分类

关系型数据库:行、列

  • MySQL , Oracle , Sql Server , DB2 , SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储

非关系型数据库

  • Redis,MongDB
  • 通过对象来存储

DBMS(数据库管理系统)

  • 通过数据库管理系统来管理数据库
  • MySQL
show databases; --查看所有的数据库
use name --切换数据库 use 数据库名
show tables; --查看数据库中所有的表
describe student; -- 显示查看数据库中所有的表的信息
create database name; --创建一个数据库
exit; --退出链接
--单行注释
/*
多行注释
*/

数据库 xxx 语言

DDL 定义

DML 操作

DQL 查询

DCL 控制

2、操作数据库

操作数据库 > 操作数据库中的表 > 操作数据库中表的数据

create database if not exists name; --创建数据库
drop database if exists name; -- 删除数据库
use name --使用数据库 use 数据库名
show databases; --查看所有的数据库

2.1 数据类型

tintint	--十分小的数据	1个字节
smallint --较小的数据	2个字节
mediumint --中等大小的数据	3个字节
int	--标准的整数	4个字节
bigint	--较大的数据	8个字节
float	--浮点数	4个字节
double	--浮点数	8个字节
decimal	--字符串形式的浮点数,常用于金融计算

char	--字符串固定大小	0~255
varchar	--可变字符串	0~65535	常用的变长字符串	string
tinytext	--微型文本	2^8-1
text	--文本串	2^16-1	保存大文本

date	--YYYY-MM-DD	日期格式
time	--HH:mm:ss	时间格式
datetime	--YYYY-MM-DD HH:mm:ss	最常用的时间格式
timestamp	--时间戳	1970.1.1到现在的毫秒数
year	--年份

2.2 数据库的字段属性

Unsigned:不能声明为负数

zarofill:0填充;eg:int(3), 5 --> 005

自增:自动在上一条记录的基础上+1,通常设为主键,必须是整数类型 auto_increment

非空:Null, not Null

默认:默认值

CREATE TABLE if not EXISTS `student` (
	`id` int(4) not null auto_increment COMMENT '学号',
	`name` VARCHAR(30) not null DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) not null DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) not null DEFAULT '女' COMMENT '性别',
	`birthday` DATETIME DEFAULT null COMMENT '出生日期',
	PRIMARY key(`id`)
)

--显示某个表表结构
desc student; 

-- 修改表名
alter table studen rename as student;

-- 增加表的字段
alter table student add age int(11);

-- 修改表的字段
alter table student MODIFY age VARCHAR(11); -- 修改约束
alter table student CHANGE age age1 int(11); -- 修改字段名

-- 删除表的字段
alter table student drop age1;

-- 删除表
drop table if EXISTS student;

所有的删除和创建尽量加上判断(存不存在),避免报错

  • 用``包裹字段名
  • 大小写不敏感

3、MySQL数据管理

3.1 外键

创建的时候设置

-- 学生表的gradeid字段 要去引用年级表的gradeid
-- 定义外键key
-- 给这个外键添加约束(执行引用)references 引用

CREATE TABLE if not EXISTS `student` (
	`id` int(4) not null auto_increment COMMENT '学号',
	`name` VARCHAR(30) not null DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) not null DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) not null DEFAULT '女' COMMENT '性别',
	`birthday` DATETIME DEFAULT null COMMENT '出生日期',
	`gradeid` int(10) not null COMMENT '学生的年级',
	PRIMARY key(`id`),
	key `FK_gradeid` (`gradeid`),
	CONSTRAINT `FK_gradeid` FOREIGN key (`gradeid`) REFERENCES `grade`(`gradeid`)
)

创建的时候没有外键关系

alter table `student`
add CONSTRAINT `FK_gradeid` FOREIGN key(`gradeid`) REFERENCES `grade`(`gradeid`)

3.2 DML语言

-- 插入语句
-- 如果不写字段,会一一匹配
INSERT into 表名(`字段名1`,`字段`2,`字段3`) values('','','');

-- 修改语句
update 表名 set `字段名`='value',`字段名`='value' where 条件;

-- 删除语句
delete from 表明 where 条件;

-- 完全清空一个数据库中的数据
TRUNCATE table 表名

delete和truncate的区别

  • 都是删除数据,不会删除表结构
  • truncate会重新开始自增

4、DQL查询数据

(Data )

select *  from student --查询所有
select 字段名m student --查询某个字段
select 字段名字段别名 from student as 表别名 --起别名
select concat('姓名:',字段值) as 新名字 from 表名
select distinct 字段名 from student --去重
-- 模糊查询
select * from student where id like '条件‘ --like
	条件:
		刘_  刘后面有一个字符
		刘%  刘后面有任意个字符
select * from student where id in (','','') --in

在语句后加上order by 字段名 [ASC(升),DESC()] -- 排序 order by 
在语句后加上limit 起始值,页面大小 -- 分页 limit 

7种join

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfOvljf7-1649500132956)MySQL上_第1张图片
(D:\Markdown学习\图片\7种join.png)]

自连接:自己的表和自己的表连接,核心:一张表拆为两张一样的表(用别名实现)

here id in (‘‘,’‘,’') --in

在语句后加上order by 字段名 [ASC(升),DESC(降)] – 排序 order by
在语句后加上limit 起始值,页面大小 – 分页 limit


7种join

[外链图片转存中...(img-zfOvljf7-1649500132956)]

自连接:自己的表和自己的表连接,核心:一张表拆为两张一样的表(用别名实现)



你可能感兴趣的:(java)