1.关于数据库构架体系
①表空间的监控是一个重要的任务,我们必须时刻关心表空间的设置,是否满足现在应
用的需求,以下的语句可以查询到表空间的详细信息。
SQL code
SELECT TABLESPACE_NAME,
INITIAL_EXTENT,
NEXT_EXTENT,
MIN_EXTENTS,
MAX_EXTENTS,
PCT_INCREASE,
MIN_EXTLEN,
STATUS,
CONTENTS,
LOGGING,
EXTENT_MANAGEMENT, -- Columns not available in v8.0.x
ALLOCATION_TYPE, -- Remove these columns if running
PLUGGED_IN, -- against a v8.0.x database
SEGMENT_SPACE_MANAGEMENT --use only in v9.2.x or later
& ......
SELECT
T.ELES_FLG,
T.SENDUNIT_NAME,
T.ROM_SEQNO,
LTRIM(MAX(SYS_CONNECT_BY_PATH(T.MODEL, ',')), ',') MODEL
from (SELECT
ELES_FLG,
SENDUNIT_NAME,
ROM_SEQNO,
MODEL,
MIN(MODEL) OVER(PARTITION BY ELES_FLG, SENDUNIT_NAME, ROM_SEQNO) MODEL_MIN,
(ROW_NUMBER() OVER(ORDER BY
......
SELECT
T.ELES_FLG,
T.SENDUNIT_NAME,
T.ROM_SEQNO,
LTRIM(MAX(SYS_CONNECT_BY_PATH(T.MODEL, ',')), ',') MODEL
from (SELECT
ELES_FLG,
SENDUNIT_NAME,
ROM_SEQNO,
MODEL,
MIN(MODEL) OVER(PARTITION BY ELES_FLG, SENDUNIT_NAME, ROM_SEQNO) MODEL_MIN,
(ROW_NUMBER() OVER(ORDER BY
......
这两天研究了SQL SERVER的字段修改.有一些心得,写出来为日后参考:
1,删除字段: ALTER TABLE [tablename] DROP COLUMN [fieldname]
删除的时候该字段必须没有被任何外键引用,没有任何约束.
2,删除约束: ALTER TABLE [tablename] DROP CONSTRAINT constraint_name
删除约束是约束名不可加单引号.
3,增加默认值约束: ALTER TABLE [tablename] ADD CONSTRAINT constraint_name DEFAULT 'default_value' FOR [fieldname]
用FOR关键字指定为那个字段增加默认值约束.
4,修改字段: ALTER TABLE [tablename] ALTER COLUMN [fieldname] new_datatype isnull
要更改的列的 new_data_type 应符合下列准则:
A,原来的数据类型必须可以隐式转换为新数据类型。(发现,如果原来的数据类型是text的就再也不能修改数据类型了)
B,new_data_type 类型不能为 timestamp。
C,对 ALTER COLUMN,ANSI 空默认值始终打开;如果没有指定,列将可为空。
D,对 ALTER COLUMN,ANSI 填充始终打开。
E,如果要更改的列是标识列,new_data_type 必须是支持标识属性的数据类型。
F,将忽略SET ARITHABORT的当前设置。ALTER TABLE语句的行为如同ARITHABORT选项为ON时一样。
G,只有列中不包含空值时 ......
Declare @T Table(
CFF_Loanno nvarchar(100),
BANK_Name_2 nvarchar(100),
CFF_code nvarchar(100),
CFF_date datetime,
CFF_amt decimal(18, 6),
CFF_repay_date datetime,
COMP_Name_2 nvarchar(100)
)
---临时表,存放基础数据
insert into @T(CFF_Loanno ,
BANK_Name_2 ,
CFF_code,
CFF_date,
CFF_amt,
CFF_repay_date,
COMP_Name_2)
SELECT A.CFF_Loanno,B.BANK_Name_2,A.CFF_code,A.CFF_date,A.CFF_amt,A.CFF_repay_date,C.COMP_Name_2
from cashflow_financing as A
inner join Bank as B on
A.CFF_Bank = B.BANK_Code
inner join Company as C on
A.CFF_repay_company = C.COMP_Code
---小计表,按照还款日期汇总
select N'B' as ord,N'小计' as class,
CFF_Loanno as CFF_Loanno ,
CO ......
基于msdn 详细学习T-SQL (http://msdn.microsoft.com/zh-cn/library/bb510741.aspx)
2. 今天下午没什么run 分析。。。 对照着msdn 简单教程,乘机把基本的T-SQL 语句操作一遍(http://msdn.microsoft.com/zh-cn/library/ms365303.aspx)
Use master
Go
Create database dbname On Logon...
Create table tablename (columnName type Null\Not Null, ...)...
Insert into tablename (column1, column2, ...) Values (value1, value2,...)
Select columnlist from table where ... group by... order by... computer sum...
Update set columnname=... where...
delete from tablename where...
Create view vw_name As select ...
select * from vw_name
Create Procedure sp_name As Begin ... End
Go
Exec sp_name
Go
Drop view vw_name
drop Procedure sp_name
Drop table tablename
drop database dbname
......
有时, 为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度,用户必须等待的时间过长,他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回来一样,用户也不会听你解释为什么查询耗费这么长时间。(“对不起,妈妈,我使用了太多的 LEFT JOIN。”)用户希望应用程序响应迅速,他们的报告能够在瞬间之内返回分析数据。就我自己而言,如果在 Web 上冲浪时某个页面要耗费十多秒才能加载(好吧,五秒更实际一些),我也会很不耐烦。
为了解决这些问题,重要的是找到问题的根源。那么,从哪里开始呢?根本原因通常在于数据库设计和访问它的查询。在本月的专栏中,我将讲述四项技术,这些技术可用于提高基于 SQL Server? 的应用程序的性能或改善其可伸缩性。我将仔细说明 LEFT JOIN、CROSS JOIN 的使用以及 IDENTITY 值的检索。请记住,根本没有神奇的解决方案。调整您的数据库及其查询需要占用时间、进行分析,还需要大量的测试 ......