视图(DQL语句)
简化开发,利于后期维护
create view grages_view as select * from grages; //创建视图
drop view grages_view; //删除视图
//面向视图的 CRUD 会导致原表数据改变
select * from 视图名_view; //面向视图查询
delete from 视图名_view; //面向视图删除
insert into 视图名_view(列名,列名,列名,...)values(插入数据1,插入数据2,插入数据3,...) //面向视图插入
三范式
数据库三范式,避免数据冗余,空间浪费(面试问) /主键(pk)/外键(fk)/
多对多怎么设计?多对多,三张表,两个外键!!!!!!
一对多怎么设计?一对多,两张表,多的表加外键!!!!!!!
一对一拆表? 一对一,外键唯一 //login_id(fk+unique)
三范式是理论的,实际中为了满足客户,可能会拿冗余换执行速度,虽然存在冗余但是减少了表的连接次数,这也算合理。(面试问)
DDL数据库操作
SHOW DATABASES;
CREATE DATABASE 数据库名;
USE数据库;
SELECT DATABASE();
DROP DATABASE数据库名;
DDL表操作
SHOW TABLES;
CREATE TABLE表名(字段 字段类型,字段 字段类型)
DESC表名;
SHOW CREATE TABLE 表名';
ALERT TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO...;
DROP TABLE 表名;
事实四大特征
- A原子性:事务是不可分割的最小操作单位,要么同时成功,要么同时失败
- C一致性:事务完成时,必须是所有数据保持一致
- I隔离性:多个事物之间,操作的可见性
- D持久性:事务一旦提交或者回滚,他对数据库的改变是永久性的
JDBC
Orm
所谓的ORM就是利用描述对象和数据库表之间映射的元数据,自动把Java应用程序中的对象,持久化到关系型数据库的表中。
Connection
Statement
//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取链接
String url="jdbc:mysql://127.0.0.1:3306/db1";
String username="root";
String password="1234";
Connection conn= DriverManager.getConnection(url,username,password);
//3.定义sql
String sql="insert into dept(name,addr) values ('奥尼尔','美国')";
//4.获取执行sql对象 Statement
Statement stm=conn.createStatement();
//5.执行sql
int count=stm.executeUpdate(sql);
//6.处理结果
System.out.println(count);
//7.
stm.close();
conn.close();
查询当前地址:
Oracle
ORACLE时间戳,自动更新时间
create or replace trigger ygbmxx_trigger
before insert or update
on ygbmxx
for each row
declare
-- local variables here
begin
:NEW.YGBMXX_UPDATETIME := SYSDATE;
end ygbmxx_trigger;
去重分割单列
前
select thr_zrr
from thr_fxgkcs s
where s.thr_fxsb_id =88355
后
SELECT distinct COLUMN_VALUE
FROM TABLE(STR_SPLIT((SELECT wm_concat(G.THR_ZRR)
FROM THR_FXGKCS G
WHERE g.thr_fxsb_id = 88355),',') )