sql书写规范,sql语句书写规则

http://www.itjxue.com  2023-01-24 01:50  来源:未知  点击次数: 

sql语句的写法有什么规范吗?大写小写的 谢谢

这个纯是个人书写习惯问题,没有什么规范,主要看自己用哪个舒服了

只有一种情况大小写敏感

select * from table where name ='A' ;

select * from table where name ='a' ;

也就这两种情况下区分大小写

关于SQL的问题的新手问题,模糊查询

问题1:解答,'三星%'的意思是查询g_Name必须是“三星”开头的信息,'%520%'的意思是查询g_Name中只要包含“520”的无论是开头,中间,还是结尾,g_Name任意位置出现520都在‘%520%’的查询范围;

declare @table table(g_name varchar(30))

insert into @table values('Cdmaix_008')

insert into @table values('Cdmaix008')

insert into @table values('Cdmaix009')

insert into @table values('Cdmaix001')

insert into @table values('Cdmaix\008')

--下面语句的意思是查询开头是Cdmaix00,“_"表示任意一位字符

select * from @table where g_name like'Cdmaix00_'

--下面语句的意思是查询开头是Cdmaix,“[_]"表示实际的下划线

select * from @table where g_name like '%Cdmaix[_]%'

--下面语句的意思是查询开头是Cdmaix,“[\]"表示实际的斜杠

select * from @table where g_name like '%Cdmaix[\]%'

问题3:不一定要大写,sql是不区分大小写的。只是问了书写规范。自己先大写就大写。

distinct是在查询的时候排除重复行,不会对实际原表数据做任何删除或修改。

ORACLE的SQL书写规范

/**

? ORACLE的SQL规范,目的避免SQL执行错误,提高SQL脚本的质量;

? 一般执行SQL在command模式下,所以每个完整的语句需要在后面加上斜杠("/"),特别是过程或函数必须在其后加上斜杠("/")

? 多条非过程SQL语句在最后面一条语句后加上斜杠("/"),如insert、update、delete。在执行完,做下commit;

? 例子以表名TEST1说明,注意:create_str使用的varchar2类型,长度5000,如果SQL太长,要调整长度。

*/

declare

? create_str varchar2(5000) := 'create table TEST1(ID int,REALNAME varchar2(32))';

? count_flag number;

begin

? select count(*)

? ? into count_flag

? ? from user_tables

? where table_name = 'TEST1';

? if count_flag 1 then

? ? execute immediate create_str;

? else

? ? execute immediate 'drop table TEST1';

? ? execute immediate create_str;

? ? --字段注解规范

? ? execute immediate 'COMMENT ON COLUMN "TEST1"."ID" IS ''编号''';

? ? execute immediate 'COMMENT ON COLUMN "TEST1"."REALNAME" IS ''姓名''';

? end if;

end;

/

declare

? add_str? ? varchar2(5000) := 'alter table TEST1 add NICKNAME varchar(32)';

? count_flag number;

begin

? select count(*)

? ? into count_flag

? ? from user_tab_columns

? where table_name = 'TEST1'

? ? and column_name = 'NICKNAME';

? if count_flag 1 then

? ? execute immediate add_str;

? ? --字段注解规范

? ? execute immediate 'COMMENT ON COLUMN "TEST1"."NICKNAME" IS ''昵称''';

? end if;

end;

/

declare

? add_str? ? varchar2(5000) := 'alter table TEST1 modify NICKNAME varchar(100)';

? count_flag number;

begin

? select count(*)

? ? into count_flag

? ? from user_tab_columns

? where table_name = 'TEST1'

? ? and column_name = 'NICKNAME';

? if count_flag = 1 then

? ? execute immediate add_str;

? ? --字段注解规范

? ? execute immediate 'COMMENT ON COLUMN "TEST1"."NICKNAME" IS ''昵称''';

? end if;

end;

/

declare

? add_str? ? varchar2(5000) := 'alter table TEST1 drop column NICKNAME';

? count_flag number;

begin

? select count(*)

? ? into count_flag

? ? from user_tab_columns

? where table_name = 'TEST1'

? ? and column_name = 'NICKNAME';

? if count_flag = 1 then

? ? execute immediate add_str;

? end if;

end;

/

declare

? create_str varchar2(5000) := 'create index IDX_TEST1_ID on TEST1(id)';

? count_flag number;

begin

? select count(*) into count_flag from user_indexes where table_name='TEST1' and index_name='IDX_TEST1_ID';

? if count_flag 1 then

? ? execute immediate create_str;

? else

? ? execute immediate 'drop index IDX_TEST1_ID';

? ? execute immediate create_str;

? end if;

end;

/

declare

? create_str varchar2(5000) := 'create sequence SEQ_TEST1 minvalue 1 maxvalue 999999999999 start with 1 increment by 1';

? count_flag number;

begin

? select count(*) into count_flag from user_sequences where sequence_name='SEQ_TEST1';

? if count_flag 1 then

? ? execute immediate create_str;

? else

? ? execute immediate 'drop sequence SEQ_TEST1';

? ? execute immediate create_str;

? end if;

end;

/

insert into TEST1

? (id, realname, nickname)

? select 1, '网名', '网虫'

? ? from dual

? where not exists (select * from TEST1 where id = 1);

/

update TEST1 set realname='网名', nickname='网虫' where id=1;

/

delete from TEST1 t where t.id=1;

/

SQL语句为什么是大写

在oracle里,如果同样的一条语句,但大小写不同的话,oracle会认为这是2个不同的SQL。所以oracle会对这2个SQL语句解析两次。这样就导致了buffer hit的命中率和soft parse的百分比。如果有很多这样的情况发生,会导致oracle整体性能的下降。

所以强烈建议制定SQL的书写规范

sql语句中的字段的值是一个表达式时,怎么书写才是规范的?

插入的语法

insert into table1(字段1,字段2……) values(值1,值2)

insert into table1(字段1,字段2……) select 字段1,字段2…… from table2

修改的语法

update table set 字段1=值1,字段2=值2

管理和使用数据库系统的各类人员,包括终端用户、应用程序员、系统分析员和_______。

应该是数据库管理员 ,或者是通过软考的其他人,你可以上希赛网具体了解。

一、 一般监视

1. 监控数据库的警告日志。Alertsid.log,定期做备份删除。

2. Linstener.log的监控,/network/admin/linstener.ora。

3. 重做日志状态监视,留意视图v$log,v$logfile,该两个视图存储重做日志的信息。

4. 监控数据库的日常会话情况。

5. 碎片、剩余表空间监控,及时了解表空间的扩展情况、以及剩余空间分布情况,如果有连续的自由空间,手工合并。

6. 监控回滚段的使用情况。生产系统中,要做比较大的维护和数据库结构更改时,用rbs_big01来做。

7. 监控扩展段是否存在不满足扩展的表。

8. 监控临时表空间。

9. 监视对象的修改。定期列出所有变化的对象。

10. 跟踪文件,有初始化参数文件、用户后台文件、系统后台文件

二、 对数据库的备份监控和管理

数据库的备份至关重要,对数据库的备份策略要根据实际要求进行更改,数据的日常备份情况进行监控。由于我们使用了磁带库,所以要对legato备份软件进行监控,同时也要对rman备份数据库进行监控。

三、 规范数据库用户的管理

定期对管理员等重要用户密码进行修改。对于每一个项目,应该建立一个用户。DBA应该和相应的项目管理人员或者是程序员沟通,确定怎样建立相应的数据库底层模型,最后由DBA统一管理,建立和维护。任何数据库对象的更改,应该由DBA根据需求来操作。

四、 对SQL语句的书写规范的要求

一个SQL语句,如果写得不理想,对数据库的影响是很大的。所以,每一个程序员或相应的工作人员在写相应的SQL语句时,应该严格按照《SQL书写规范》一文。最后要有DBA检查才可以正式运行。

五、 DBA深层次要求

一个数据库能否健康有效的运行,仅靠这些日常的维护还是不够的,还应该致力于数据库的更深一层次的管理和研究:数据库本身的优化,开发上的性能优化;项目的合理化;安全化审计方面的工作;数据库的底层建模研究、规划设计;各种数据类型的处理;内部机制的研究;ora-600错误的研究、故障排除,等等很多值得探讨的问题。

(责任编辑:IT教学网)

更多

推荐ASP.NET教程文章