数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。
例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生一条新记录。
通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型”一节中讲述),例如字段au_lname存储的是字符型数据。一个字段也可以存储其它类型的数据。
使用SQL Sever,创建一个新表的方法是很多的。你可以可执行一个SQL语句或使用SQL事务管理器(SQL Enterprise Manager)来创建一个新表。在下一节里,你将学会如何用SQL语句来创建一个新表。
一、用CREATE语句创建表
注意:
如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库。你绝不能向master,tempdb或任何其他任何系统数据库中添加数据。
从SQL Sever程序组(在任务栏中)中启动ISQL/w程序。出现查询窗口后,从窗口顶部的下拉列表中选择你在第三章所创建的数据库。下一步 ......
procedure Tform1.Button5Click(Sender: TObject);
var
p:pointer;
FrfStr:string;
begin
inherited;
Screen.Cursor:=MYCURSORWAITHAND;
with cdsPrint do
begin
Active:=false;
//这个SQL用于将remark中的记录合并到一起!
CommandText:='select a.ITEM_ID, a.ITEM_NAME,count(a.Coll_ID) as num,ltrim(max(sys_connect_by_path(a.remark, '';'')), '';'') remark '
+' from (select /*+index(b,TAB_ORDER_I)*/ b.ITEM_ID,b.Coll_ID,b.ITEM_NAME,b.remark,row_number() over(partition by b.ITEM_ID order by b.ITEM_ID)'
+' ITEM_ID1,row_number() over(order by b.ITEM_ID) + dense_rank() over(order by b.ITEM_ID) ITEM_ID2 '
+' from TAB_ORDER b where b.Coll_ID ='''+DBComboBoxEh1.Text+''''
+' ) a'
+' start with ITEM_ID1 = 1 connect by prior ITE ......
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) from table_name1
UNION
SELECT column_name(s) from table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) from table_name1
UNION ALL
SELECT column_name(s) from table_name2
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。 ......
YearCode:=yearof(Date);
MonthCode:=monthof(Date);
if MonthCode>9 then
FTime1:=inttostr(YearCode)+inttostr(MonthCode)
else
FTime1:=inttostr(YearCode)+'0'+inttostr(MonthCode);
FTime:= DateTimeToStr(Date); //
//FTime1:=formatdatetime('yyyymm',Date);
//FTime1:=leftstr(FTime,6);
TimeTemp:=formatdatetime('yyyy-mm',Date);
cds.Active:=false;
cds.CommandText:='select /*+index(a,TAB1_I)*/ max(a.id) as id from TAB1 a where '
+'INSTR(a.id,'''+FTime1+''', 1,1 )>0 and length(a.id)=11 and a.UPDATE_TIME between ......
SQL插入语句得到自动生成的递增 ID 值
insert into Table1(Name,des,num) values ('ltp','thisisbest',10);
select @@identity as 'Id'
随机提取条记录的例子
SQL Server:Select Top 10 * from Tablename Order By NewID()
Access:Select Top 10 * from Tablename Order By Rnd(ID)
Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段UserName)
Select Top 10 * from 表Order BY Rnd(Len(UserName))
得出某日期所在月份的最大天数
ELECT DAY(DATEADD(dd, -DAY('2008-02-13'),DATEADD(mm, 1, '2008-02-13')))
AS 'DayNumber'
按姓氏笔画排序
Select * from TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
通配符的一些用法
1 select * from ......
数据库事务是其他事务模型的基础,当一个事务创建时不同数据库系统都有自己的规
则。SQL Server 默认在自动提交的模式下工作,每个语句执行完后都会立即提交;与此对照
的是 Oracle 需要你包含一个提交语句。但是当一个语句通过 OLE DB 执行时,它执行完后
一个提交动作会被附加上去。例如:
DECLARE @TranName VARCHAR(20);
SELECT @TranName = 'MyTransaction';
BEGIN TRANSACTION @TranName;
GO
USE AdventureWorks;
GO
DELETE from AdventureWorks.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION MyTransaction;
GO
或者:
CREATE PROCEDURE Tran1
as
begin tran
set xact_abort on
Insert Into P_Category(CategoryId,Name)values('1','test1')
Insert Into P_Category(CategoryId,Name)values('2', ......