http://www.doc88.com/p-5741685193015.html
为sql_tools库的django_cas_ng_sessionticket表session_key列添加索引
//查询表的索引
show index from table_name;
# 为status设置索引
CREATE INDEX index_name ON django_cas_ng_sessionticket(session_key);
//添加索引
ALTER TABLE`sql_tools '.' django_cas_ng_sessionticket add index'idx_session_key'('session_key (191));
DML原则
- UPDATE/DELETE脚本必须有相应的回滚脚本和备份脚本
- INSERT脚本必须有相应的回滚脚本
上线脚本:
insert into table(id) values (1);
回滚脚本:
delete from table where id=1;
UPDATE操作
上线脚本:
update a set name=’abc’ where id=1;
备份脚本:
create zxdba_bak.20181101_a_part like a;
insert into zxdba_bak.20181101_a_part select * from a where id=1;
回滚脚本:
通过备份表关联更新回滚:
update a inner join zxdba_bak.20181101_a_part b on a.id = b.id
set a.name = b.name;
Oracle变更
- CREATE操作
create脚本回滚实例:
上线脚本:create a (int id primary key,name varchar2(30)) tablespace 表空间名;
回滚脚本:alter table a rename to zxdba_bak_a_01;
- UPDATE
上线脚本:
update a set name=’修改值’ where id=1;
备份脚本:
create zxdba_bak.a_20181101_part as select * from a where 1=0;
insert into zxdba_bak.a_20181101_part select * from a where id=1;
回滚脚本:
update a set name=’原值’ where id=1;
//根据流水号查 t_202010
表 并在第一列显示 t.name
SELECT t.name ,t.* FROM `t_202010’ t WHERE t.'PROV_SWFTNO`=
'108520201012153780817658';
规范
- 字符集默认UTF8MB4。单行长度最大长度不能超过21845。
- 说明:utf8不支持emoji表情,如果要使用emoji请使用utf8mb4。Utf8默认为3个字节,emoji以及特殊汉字需要4个字节标识,需要使用到utf8mn4。
建表时创建普通索引
CREATE TABLE `t_reg_pay_sign_data` (
`DATA_ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`MOBNUM` VARCHAR (20) COMMENT '手机号',
`IDDOC_NAME` VARCHAR (255) COMMENT '姓名',
`IDNO` VARCHAR (200) COMMENT '身份证号',
`SWFTNO` VARCHAR (64) COMMENT '在线流水号',
`SIGN_CHAN_CODE` VARCHAR (100) COMMENT'签约渠道编码',
`DATA_STATE` VARCHAR (10) COMMENT'签约信息有效标志',
`SIGN_RESULT` VARCHAR (10) COMMENT'签约结果',
`CRT_TIME` datetime NOT NULL COMMENT '创建时间',
`CRT_USER_ID` VARCHAR (20) NOT NULL COMMENT '创建用户ID',
`CRT_APP_SYS_ID` VARCHAR (20) NOT NULL COMMENT '创建应用系统ID',
`MODF_TIME` datetime COMMENT '修改时间',
`MODF_USER_ID` VARCHAR (20) COMMENT '修改用户ID',
`MODF_APP_SYS_ID` VARCHAR (20) COMMENT '修改应用系统ID',
PRIMARY KEY (`DATA_ID`),
INDEX ‘IDX_REG_PAY_SIGN_DATA_MOBNUM’ (MOBNUM),
INDEX ‘IDX_REG_PAY_SIGN_DATA_IN’ (IDDOC_NAME),
INDEX ‘IDX_REG_PAY_SIGN_DATA_IDNO’ (IDNO)
) COMMENT = '刷脸支付签约信息表';
SQL中Group By的使用
查询平均成绩大于60分的学生的信息
SELECT * from student s,
(SELECT s_id ,s_score AS 成绩
FROM score GROUP BY s_id HAVING AVG(s_score)>60) a
WHERE s.s_id = a.s_id;
查询所有学生的信息、选课数、总成绩
SELECT *,COUNT(score.s_id),SUM(score.s_score) from student s
JOIN score ON s.s_id = score.s_id
GROUP BY s.s_id
左外连接 left join table_name on
# 左表全部保留,右表关联不上的用null表示 (左表建议 小表)
SELECT *from student s
LEFT JOIN score on score.s_id = s.s_id
右外连接
#右表全部保留,左表关联不上的用null表示。
SELECT *from student s
RIGHT JOIN score on score.s_id = s.s_id
内连接
#公共部分
SELECT *from student s
INNER JOIN score on score.s_id = s.s_id