萌新的Java入门日记14

 -- 连接查询
-- 老师的姓名已经教授的课程
-- teacher tname   course cname
-- teacher.tid=course.tid
select tname,cname from teacher left JOIN
course ON teacher.tid=course.tid;
-- as 起别名 
select a.tname,b.cname from teacher as a left JOIN
course as b on a.tid=b.tid;

-- 数据类型
-- 常用的数据类型
-- 整数类型 TINYINT(1) SMALLINT(2) MEDIUMINT(3)   int(4)  BIGINT(8) 
-- 浮点型   double(总长度,小数位数)   FLOAT   DECIMAL
-- 字符串  char   varchar   text
-- char最大长度是255
-- varchar  能够存储的字节数是65535
     -- 1.结构varchar类型的第一个字节不存储数据
 -- 2.varchar前两个字节存储数据长度
 -- 3.有效位就剩下65532   编码格式决定能够存储多少个字符
 -- 4.行中列的总字节长度不能超过65535
 --  如果要存储长文本   使用text类型
-- char和varchar的区别
-- 1.char定长的  varchar 变长的
--  char(20)  存了abc  占20个字符位
--  varchar(20) 变长的  abc 占3个字符位
-- 2.CHAR的性能更好  varchar稍逊  因为要计算字符数
-- 3.场景:身份证号  学号  手机号  订单号  char
--    介绍信息   店名  姓名  地址   varchar

-- text  长文本  不需要设置长度
-- 日期
-- Date  年月日   time  时分秒毫秒   Datetime年月日时分秒
 

上面是创建,下面单行是删除

效果:每创建1个,这里的value值+1

create trigger tgg_u_b_student before UPDATE
on student for each row  BEGIN
-- old.列名  原来数据
-- new.列名  新的数据

update log set val= CONCAT(str1CONCAT('{',old.sid,',',old.sname,'}'),'->',CONCAT('{',new.sid,',',new.sname,'}')) WHERE
`key`='lastupdate';
end;

行列转换

select name,
sum(case subject
when '语文' then fraction 
else 0
end) as '语文',
sum(case subject
when '数学' then fraction 
else 0
end)as '数学',
sum(case subject
when '英语' then fraction 
else 0
end )as'英语'  
from t_score group by name  

效果:

触发器

 触发器:相当于一个事件,一旦标准发生了指定时间,该触发器就会自动运行
-- 触发可以通过三种操作触发:增删改
-- 触发时机 before after
-- 尽量不使用触发器  会影响正常业务逻辑,由Java逻辑代码完成触发器的工作
1. 触发器的类型
BEFORE触发器:在指定的操作(如INSERT、UPDATE、DELETE)之前执行。
AFTER触发器:在指定的操作(如INSERT、UPDATE、DELETE)之后执行。
INSTEAD OF触发器:用于视图,替代触发操作执行。
2.触发器相关语法
删除触发器:drop trigger 触发器名


创建触发器代码:
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name
FOR EACH ROW
BEGIN


    -- 触发器逻辑
END;
trigger_name:触发器的名称。
trigger_time:触发器执行的时间,可以是 BEFORE 或 AFTER。
trigger_event:触发器的事件,可以是 INSERT、UPDATE 或 DELETE。
table_name:触发器关联的表名。
FOR EACH ROW:表示触发器对每一行数据都执行。
BEGIN ... END:触发器的逻辑代码块。
 

视图 view

视图 view : 是一个已经编译好的SQL语句
视图特点:不存储数据,数据还是储存在表中 , 加快检索效率
视图作用:1.提高数据的安全性 2.简化复杂查询  3.定制用户数据,聚焦特定数据
-- 创建视图  create view as sql语句     v_   (表 t_)
--删除视图  drop view  if exists 视图名1  [视图名2,视图名3……]

函数

-- if函数  三元
-- 如果是语文就显示成绩fraction,否者就显示0
select * ,if(subject ='语文',fraction,0) from t_score;

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

存储过程

CREATE PROCEDURE procedure_name
(
    [IN | OUT | INOUT] parameter_name datatype,
    ...
)
BEGIN
    -- 存储过程逻辑
END;

存储过程的参数

  • IN:输入参数,用于传递值给存储过程。
  • OUT:输出参数,用于从存储过程返回值。
  • INOUT:既可以作为输入参数,也可以作为输出参数。

JDBC

JDBC(Java数据库连接):使用Java语言操纵关系型数据库的一套API

1. DriverManager (驱动管理对象)

2.注册驱动

3. Connection (数据库连接对象)

4. Statement (执行静态SQL的对象)

5. ResultSet (结果集对象)

6. PreparedStstemet ( 执行动态SQL对象)

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black__Emperor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值