sql书写规范,sql语句书写规则
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错误的研究、故障排除,等等很多值得探讨的问题。