目錄
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