目录
MySQL判断视图是否存在
mysql创建视图判断是否存在核心语句:
CREATE OR REPLACE VIEW
创建视图测试脚本sql
CREATE OR REPLACE VIEW `v_sbox_detail` AS
(SELECT sbox.*,sline.`name` AS sline_name,sline.`start_time` AS sline_start_time,sline.`end_time` AS sline_end_time FROM stream_box AS sbox
LEFT JOIN stream_line AS sline
ON sbox.`stream_line_id` = sline.`stream_line_id` );
mysql判断视图是否存在并删除语法:
DROP VIEW IF EXISTS v_user_org_xxxxx;
SpringBoot2.x项目启动,自动执行建表语句
1.创建存放脚本的目录
先在resources文件夹下,建一个名字叫sql的文件夹,再新建一个xx.sql的脚本
2.编写创表和创视图的sql脚本
仅供参考的sql脚本样例:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for request_fail_tb
-- ----------------------------
-- ----------------------------
-- Table structure for tab_set
-- ----------------------------
CREATE TABLE IF NOT EXISTS `tab_set` (
`set_id` varchar(50) NOT NULL,
`req_id` varchar(50) DEFAULT NULL COMMENT '需求编号',
`spec_id` varchar(50) DEFAULT NULL COMMENT '规格编号',
`capability` double unsigned DEFAULT '0' COMMENT '总产能',
...
...具体内容省略
`create_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '修改人',
`modify_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`set_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tab_stream
-- ----------------------------
CREATE TABLE IF NOT EXISTS `tab_stream` (
`stream_id` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`line_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
...
...具体内容省略
`create_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '修改人',
`modify_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`stream_id`),
KEY `stream_line` (`line_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- View structure for v_sbox_detail
-- ----------------------------
CREATE OR REPLACE VIEW `v_sbox_detail` AS
(SELECT sbox.*,sline.`name` AS sline_name,sline.`start_time` AS sline_start_time,sline.`end_time` AS sline_end_time FROM stream_box AS sbox
LEFT JOIN stream_line AS sline
ON sbox.`stream_line_id` = sline.`stream_line_id` );
3.YML配置和指定项目启动执行的sql脚本路径
项目启动自动执行创表及创视图的yml核心配置
#spring基础配置
spring:
application:
name: xxxname
profiles:
active: dev #切换开发环境和测试环境,dev为开发环境,prod为测试环境
servlet:
multipart:
max-file-size: 100MB #上传文件最大值
sleuth:
sampler:
probability: 1.0 #2.0后percentage改为probability
datasource:
name: xxx #数据库名
type: com.alibaba.druid.pool.DruidDataSource
initialization-mode: always #必须配置为always才会自动执行mysql脚本
#项目启动后执行建表语句 sql脚本路径指定
schema:
- classpath:sql/xxx脚本.sql
sql-script-encoding: utf-8
platform: mysql
druid:
#监控统计拦截的filters
filters: stat,wall,slf4j
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/xxxabc?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false
username: root
password: aaabb
initial-size: 1 #配置初始化大小/最小/最大
min-idle: 10 #最小连接池数量
max-active: 500 #连接池的最大数据库连接数。设为0表示无限制,一般把maxActive设置成可能的并发量就行了
max-wait: 20000 #如果超过此时间将接到异常。设为-1表示无限制,单位:ms
time-between-eviction-runs-millis: 60000 #间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 300000 #一个连接在池中最小生存的时间
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-on-return: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements: false #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size: 20