当前位置:首页 » 编程语言 » sql语句审核

sql语句审核

发布时间: 2022-10-22 02:26:42

Ⅰ 如何自动化完成sql审核

很多游戏项目都是通过每周更新大版本来维持用户的粘性和活跃度,而更新版本必然伴随着数据库的新建create、改表alter的SQL。

运维或者dba负责审核这类sql是否合理、高效,因为很多开发同事特别是经验少的新人是不考虑sql性能、是否合乎MySQL的最佳实践。
经常很多建表语句漏加索引或者加错索引(不满足最左匹配等情况),需要等到开服后数据库负载过高引起告警才发现问题。
MySQL的配置中有一个日志是记录没有使用索引的sql,记录进slow log日志中,不过实际使用过程中,的确存在着很多合理的不使用索引的情况,所以这个日志一般不打开。

为了避免人工审阅的重复劳动,所以运维可以通过写程序、脚本来自动审核sql,而审核的条件一般如下:
1、表结构是否合法 //不合法当然不能通过
2、表名、列名长度超过 16 //主要跟我们自己的授权有关系
3、必须有 unsigned //业务最容易忘记添加,当然如果一定要负值,那么就走人工审核;
4、必须为 InnoDB //当然了,我已经忘记还有MyISAM了,统计日志表除外
5、int bigint(10) 不能小于 10 //大家见过int(1)的情况么?
6、varchar 长度小于 3000 // 这也算是一个人为规定,没有任何意义
7、text 字段个数不能大于 3 //人为规定而已
8、主键必须为 int 类型 //不int,真的会死人
9、索引不能有重复 //见过key(id),key(id,uid)的情况吗?
10、索引个数不能大于 5 个(包括主键) //人为定义而已
11、索引字段必须为 not null,并且有 default 值 //参照高性能那本书说的,其实不一定影响性能
12、SQL 是否使用到索引 //不能用到索引的SQL,真的很惨
13、SQL 中不能有 * //由于* 经常导致流量、O巨大,所以,也强制了
14、自增字段必须为 int 或者 bigint //见过自增用smallint的吗?然后一下就溢出了
15、请不要使用MySQL的保留字(Reserved Words) //写脚本,大家讨厌<`>符号么?
开发提交sql后,会直接调用后端审核程序,程序根据以上规则,进行审核,就极大的降低了运维、DBA的工作量。

当sql审核通过后,是否马上执行?
根据以下情况判断:
1、表小于10w行,小于10M空间大小,那么直接执行SQL;
2、如果不满足1,并且满足percona online-schema-change条件,那么通过osc工具,进行在线修改;
3、如果1、2都不行,走人工上线流程;

Ⅱ 如何用sql语句查询单据是否审核

IFEXISTS(SELECTTOP11FROM表名WHERE审核字段='审核'AND单号='单号001')
SELECT'已审核'
ELSE
SELECT'未审核'

Ⅲ 一个审核页面同时执行三条条sql语句,请教。

是ASP吗?改成这样子或者合并成一条命令用;隔开
sql="update sjzc set sjmoney=sjmoney+"&price&" where sjUserName='"&sjUserName&"'"
Conn.execute sql
sql="update OrderList set sjsh=1 where sjUserName='"&sjUserName&"'"
Conn.execute sql
sql="update [user] set sjmoney=hymoney-"&price&" where sjUserName='"&sjUserName&"'"
Conn.execute sql

Ⅳ 如何用SQL语句完成表内相同的前置单据对应未审核数量求和

select b.*, SumFDeptID,SumFItemID,SumFQty,SumFTaxRate,SumFAmount,(SumFDeptID + SumFItemID + SumFQty + SumFTaxRate + SumFAmount) as SumCount
from (select FBillNo,sum(FDeptID) as SumFDeptID,sum(FItemID) as SumFItemID,sum(FQty) as SumFQty,sum(FTaxRate) as SumFTaxRate,sum(FAmount) as SumFAmount
from 表
group by FBillNo) as a,表 as b
where a.FBillNo=b.FBillNo

Ⅳ 如何通过SQL语句设置数据库登录审核的状态

刚好上次讲三层架构.有现成的例子

以一个验证登陆为例子
这里是界面层一般叫UIL
protected void Button1_Click(object sender, EventArgs e)
{
List<User> Users = BAL.GetUserInfo(txtUserName.Text,txtPassword.Text);

if(Users.Length > 0)
{
Response.Write("登陆成功");
}
else
{
Response.Write("登陆失败");
}
}

以下是逻辑层代码,业务逻辑层一般叫BLL
public static List<User> GetUserInfo(string user,string password)
{
string newPassword = GetMD5Hash(password); //这里对密码进行加密处理,数据库中存放的是经过MD5加密后的密,业务逻辑层一般都是处理复杂的逻辑.例如加密逻辑
List<User> Users = DAL.GetUserInfo(user,newPassword);

return Users;
}

以下是数据访问层代码,数据访问层一般叫DAL
public static List<User> GetUserInfo(string user,string password)
{
List<User> Users = new List<User>();
string sql = "select * from User where Password = '"+password+"' and User = '"+user+"'"; //写where子句的时候把Password放前面.因为Password经过加密,所以可以防止SQL注入攻击
SqlDataAdapter da = new SqlDataAdapter(sql,"这里是数据库连接字符串");
DataSet ds = new DataSet();
da.Fill(ds);

for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
User user = new User(ds.Tables[0].Rows[i]["ID"].ToString(),ds.Tables[0].Rows[i]["User"].ToString(),ds.Tables[0].Rows[i]["Password"].ToString());
Users.Add(user);
}

return Users;
}

还会有一个Model层.叫做模板层.是数据表结构的印射.Model层是共用层,其他三层都要用到.
比如数据库中有张表User,里面有3个字段ID,User,Password
那么在模板层中应该有一个类,数据库中User表的一行对应一个User对象,一张表对应User对象的集合.
public class User
{
string ID;
string User;
string Password;

//重载构造函数
User(string id,string user,string password)
{
this.ID=id;
this.User=user;
this.Password=password;
}
}

Ⅵ 如何验证 SQL 语句的正确性

验证sql语句的正确性:

-- 定义你想要检验的SQL语句
DECLARE @sql NVARCHAR(MAX)
--'正确的语句'
SET @sql = 'select * from Report_Test1'
--'错误的语句'
--SET @sql = 'select 1 from'
DECLARE @testsql NVARCHAR(MAX),
@result INT

SET @testsql = N'set parseonly on; ' + @sql
EXEC @result = sp_executesql @testsql
-- 如果SQL语句有误,则@result不为0;
IF @result = 0
BEGIN
PRINT '正确的语法'
--开始执行正确的SQL语句
--exec sp_executesql @sql
END
ELSE
BEGIN
PRINT '错误的语法'
--不执行任何操作
END

热点内容
dropbear编译 发布:2025-07-10 08:27:35 浏览:684
我的世界电脑建造服务器推荐 发布:2025-07-10 08:13:08 浏览:401
如何提高存储数据的速度 发布:2025-07-10 07:55:57 浏览:259
规范c语言代码 发布:2025-07-10 07:55:57 浏览:516
在线砍价源码 发布:2025-07-10 07:55:56 浏览:796
编程工作年限 发布:2025-07-10 07:44:42 浏览:143
vc压缩文件夹 发布:2025-07-10 07:43:56 浏览:450
汽贸解压 发布:2025-07-10 07:43:56 浏览:877
dreamweaver连接数据库 发布:2025-07-10 07:43:55 浏览:742
三菱编程书籍 发布:2025-07-10 07:39:38 浏览:496