JavaEE:企业级Java开发 Web
前端(渲染页面,展示数据)
后台(连接点:连接JDBC,链接前端)
数据库(存数据)
数据库是所有软件体系中最核心的存在
概念:数据仓库,软件,安装在os上
存数据,管理数据
关系型数据库:行、列
非关系型数据库
DBMS(数据库管理系统)
show databases; --查看所有的数据库
use name --切换数据库 use 数据库名
show tables; --查看数据库中所有的表
describe student; -- 显示查看数据库中所有的表的信息
create database name; --创建一个数据库
exit; --退出链接
--单行注释
/*
多行注释
*/
数据库 xxx 语言
DDL 定义
DML 操作
DQL 查询
DCL 控制
操作数据库 > 操作数据库中的表 > 操作数据库中表的数据
create database if not exists name; --创建数据库
drop database if exists name; -- 删除数据库
use name --使用数据库 use 数据库名
show databases; --查看所有的数据库
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 --年份
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;
所有的删除和创建尽量加上判断(存不存在),避免报错
创建的时候设置
-- 学生表的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`)
-- 插入语句
-- 如果不写字段,会一一匹配
INSERT into 表名(`字段名1`,`字段`2,`字段3`) values('','','');
-- 修改语句
update 表名 set `字段名`='value',`字段名`='value' where 条件;
-- 删除语句
delete from 表明 where 条件;
-- 完全清空一个数据库中的数据
TRUNCATE table 表名
delete和truncate的区别
(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)
(D:\Markdown学习\图片\7种join.png)]
自连接:自己的表和自己的表连接,核心:一张表拆为两张一样的表(用别名实现)
here id in (‘‘,’‘,’') --in
在语句后加上order by 字段名 [ASC(升),DESC(降)] – 排序 order by
在语句后加上limit 起始值,页面大小 – 分页 limit
7种join
[外链图片转存中...(img-zfOvljf7-1649500132956)]
自连接:自己的表和自己的表连接,核心:一张表拆为两张一样的表(用别名实现)