SQL Server2000常用语句

合集下载

SQL2000数据库常用语句

SQL2000数据库常用语句
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
三、技巧
1、1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 是表示选择全部 “where 1=2”全部不选,
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

sql 2000 insert into语句

sql 2000 insert into语句

sql 2000 insert into语句在SQL Server2000中,INSERT INTO语句是一种将数据插入到表格中的常用方法。

以下是一个基本的INSERT INTO语句的语法:```INSERT INTO表名(列1,列2,列3,...)VALUES(值1,值2,值3,...);```这里,表名表示要插入数据的表格,列名和值表示要插入的数据。

例如,有一个名为“students”的表格,包含以下列:id,name,age,gender。

可以使用以下INSERT INTO语句插入一条新记录:```INSERT INTO students(id,name,age,gender)VALUES(1,'张三',20,'男');```此外,INSERT INTO语句还可以一次插入多行数据,只需在VALUES子句中用逗号分隔各行数据即可。

例如:```INSERT INTO students(id,name,age,gender)VALUES(1,'张三',20,'男'),(2,'李四',22,'女'),(3,'王五',21,'男');```以上语句将向students表格插入三条新记录。

当表格中已存在数据时,INSERT INTO语句会自动为新的数据分配一个唯一的标识符。

如果需要指定自增主键的值,可以使用SET IDENTITY_INSERT关键字。

例如:```SET IDENTITY_INSERT students ON;INSERT INTO students(id,name,age,gender)VALUES(1,'张三',20,'男');SET IDENTITY_INSERT students OFF;```在此示例中,首先开启IDENTITY_INSERT,然后插入一条新记录,最后关闭IDENTITY_INSERT。

SQL Server 2000中的SQL语言简介

SQL Server 2000中的SQL语言简介

SQL Server 2000中的SQL语言简介(一)数据操纵语言(DML)数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括SELECT、INSERT、UPDATE、DELETE等。

在默认情况下,只有sysadmin、dbcreator、db_owner 或db_datawriter等角色的成员才有权利执行数据操纵语言。

1、SELECT语句SELECT语句的语法形式如下:SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ][ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BYorder_expression [ ASC | DESC ] ][COMPUTE clause][FOR BROWSE]几种常用语句的用法:SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。

INTO子句用于指定所要生成的新表的名称。

FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。

WHERE子句用来限定查询的范围和条件。

GROUP BY子句是分组查询子句。

HAVING子句用于指定分组子句的条件。

GROUP BY子句、HAVING子句和集合函数一起可以实现对每个组生成一行和一个汇总值。

ORDER BY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。

ASC表示升序排列,DESC表示降序排列。

COMPUTE子句使用集合函数在查询的结果集中生成汇总行。

COMPUTE BY子句用于增加各列汇总行。

SELECT子句的语法形式如下所示:SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ]< select_list >< select_list > ::={* | { table_name | view_name | table_alias }.*| { column_name | expression | IDENTITYCOL | ROWGUIDCOL }[ [ AS ] column_alias ]| column_alias = expression}[ ,...n ]显示居住在加利福尼亚州且姓名不为McBadden 的作者列。

SQL SERVER 2000数据查询

SQL SERVER 2000数据查询

第4章 数据查询
5.使用查询列表 如果列值的取值范围不是一个连续的区间,而是一些 离散的值,就应使用SQL Server提供的另一个关键字IN。 其语法形式为: 等价于: column_name [ NOT ] IN (value1,value2,…) SELECT SaleID,SaleName,Sex,Birthday,HireDate,Address 例4-17 查询salers表中saleID为s01,s05,s07的销售人员 FROM salers WHERE 的信息。 SaleID ='S01' OR SaleID='S05' OR SaleID='S07' SELECT SaleID,SaleName,Sex,Birthday,HireDate,Address FROM salers WHERE SaleID IN ('S01','S05','S07')
第4章 数据查询
例4-3 从Products表中检索出产品ID(ProductID)、产品名 称 ( ProductName ) 、 产 品 单 价 ( Price ) 、 产 品 库 存 量 (Stocks)及产品的总价值,查询如图4-2所示。 SELECT ProductID,ProductName,Price,Stocks,Price*Stocks FROM Products 例4-4 从pubs数据库的authors表查询作者的姓和名,以及作 者所居住的州和城市的名字,查询结果如图4-3所示。 USE pubs GO SELECT au_lname+'.'+au_fname,city+','+state FROM authors

sql server基本语句大全及用法

sql server基本语句大全及用法

一、概述SQL Server是微软公司的一种关系型数据库管理系统,广泛应用于企业级数据库系统中。

SQL Server中包含了许多基本的SQL语句和用法,本文将对SQL Server中常用的基本语句进行详细介绍,以帮助读者更好的理解并应用SQL Server。

二、连接数据库1. 连接数据库的语句在SQL Server中,我们可以使用以下语句连接数据库:```USE database_name;```这条语句会选择并进入指定名称的数据库,之后所有的操作都会在这个数据库中进行。

2. 与数据库建立连接另外,我们还可以使用以下语句与数据库建立连接:```CONNECT database_name;```这条语句会建立一个与指定数据库的连接,可以在连接成功后进行数据操作。

三、查询数据1. 查询表中所有数据要查询表中所有的数据,可以使用以下语句:```SELECT * FROM table_name;```其中,`SELECT *`表示查询所有字段,`FROM table_name`表示从指定的表中查询数据。

2. 查询特定字段的数据如果只需要查询表中的特定字段数据,可以使用以下语句:```SELECT field1, field2 FROM table_name;这条语句将只查询指定字段的数据,可以减少数据传输和提高查询效率。

3. 条件查询在SQL Server中,可以使用以下语句进行条件查询:```SELECT * FROM table_name WHERE condition;```其中,`WHERE condition`是条件表达式,只有满足条件的数据才会被查询出来。

四、更新数据1. 更新单行数据要更新表中的单行数据,可以使用以下语句:```UPDATE table_name SET field1 = value1, field2 = value2 WHERE condition;这条语句会根据条件表达式更新表中符合条件的数据。

sql server常用语句

sql server常用语句

sql server常用语句1. select 语句:select 语句用于从数据库表中检索数据。

3. update 语句:update 语句用于更新现有记录。

8. alter table 语句:alter table 语句用于更改表结构。

10. primary key 语句:primary key 语句用于指定表中独特的列,用于标识表中的每一行。

12. join 语句:join 语句用于在不同表之间建立关系,从而把多个表中的记录组合在一起。

13. index 语句:index 语句用于添加索引,从而提高检索性能。

14. view 语句:view 语句用于创建虚拟表,只存储查询生成的结果。

15. stored procedure 语句:stored procedure 语句用于定义执行特定任务的已存储的语句。

16. trigger 语句:trigger 语句用于在指定的数据库事件发生时执行特定的语句。

17. transaction 语句:transaction 语句用于控制数据库操作的原子性,从而可以确保数据的一致性。

18. grant 语句:grant 语句用于授予用户对数据库对象的访问权限。

20. group by 语句:group by 语句用于对检索结果进行分组。

21. having 语句:having 语句用于对筛选后的结果进行过滤。

22. union 语句:union 语句用于合并多个查询的结果。

23. intersect 语句:intersect 语句用于获取两个查询的交集。

25. backup 语句:backup 语句用于备份数据库中的数据。

SQL server2000语法

SQL server2000语法

创建/修改库create database xkon primary(name=x1_data,filename='d:\xk\x1_data.mdf', size=10mb,maxsize=50mb, filegrowth=10%)log on(name=x1_log,filename='d:\x1_log.ldf',size=1mb,filegrowth=10%)exec sp_helpdb xkalter database xkadd filegroup fg1alter database xkadd file(name=x1_ndata,filename='d:\xk\x1_ndata.ndf', size=1mb,filegrowth=10%)to filegroup fg1alter database xkmodify file(name=x1_ndata,size=10mb,filegrowth=10%)alter database xkmodify file(name=x1_log,size=10)exec sp_helpdb xk删除库use xkalter database xkremove file x1_ndataalter database xkremove filegroup fg1alter database xkmodify name=lydrop database ly创建/删除表use xkcreate table student(stuno char(4) not null primary key, stuname varchar(10)not null,age tinyint,sex char(4),address varchar(20))create table course(couno char(4) not null primary key, couname varchar(20),kind varchar(20),credit tinyint,teacher varchar(10),coutime datetime)create table grade(stuno char(4) not null,couno char(4) not null,stugrade tinyint,credit tinyint)exec sp_help studentexec sp_help courseexec sp_help gradedrop table gradeinsert into studentvalues('1004','特兰克思',18,'男','南京市鼓楼区')insert into coursevalues('c004','三分归元气','拳、掌、腿、气',5,'雄霸','16:00')insert into gradevalues('1004','c004',90,10)exec sp_spaceused student /*查询表中记录数*/修改表use xkalter table studentadd phone varchar(15)alter table studentdrop column mingzualter table studentalter column sex varchar(2)exec sp_rename stu,studentexec sp_spaceused studentinsert courseselect * from newcourse /*将表newcourse内容插入表course中*/select couno,couname,teacher,coutime into newcourse from course where kind='气' /*将表course 内容插入表中newcourse*/update student set stuname='孙悟空' where stuno='1003'update grade set stuno=student.stuno from grade join student on grade.stuno=student.stunodelete from grade where credit=10insert gradevalues('1001','c001',90,10)约束use xkalter table gradeadd constraint pk_grade primary key(stuno,couno)alter table studentadd constraint uq_address unique nonclustered(address)/*唯一约束*/ sp_helpindex studentalter table studentdrop uq_addressalter table student /*默认约束*/add constraint df_stunamedefault('报名') for stunamealter table studentadd constraint ck_agecheck (age>=18 and age<=24)selectuse xkselect top 3 * from student select top 3 percent * from studentselect distinct * from student /*消除重复*/select distinct top 3 * from studentselect stuno '学号' from grade order by stugrade descselect stuno as '学号' from grade order by stugrade ascselect '学号'=stuno from grade where stugrade between 80 and 90 select stuno from grade where stuno in('1001','1003')select stuno from grade where couno not in('c002','c003')select stuno from grade where stuno is not nullselect stuno from grade where couno is null/*判断空值*/select stugrade * credit from gradeselect * from student where phone like'[58]7654321'select * from student where phone like'13[^0123]456789'select * from student where address like '南京_玄武区'select * from student where address like'%玄武%'select * from student where stuname like'孙悟[%]'select couno,sum(stugrade) '总分' from grade group by counoselect stuno,stugrade from grade order by stuno compute sum(stugrade)select stuno,stugrade,kind from grade,course order by kind compute sum(stugrade) by kind select stuno,sum(stugrade) from grade where credit>7 group by stuno having sum(stugrade)>150 select stuno from student union select couno from courseselect * into chengji from gradeselect s.stuno,s.stuname,c.couno,c.couname,c.credit,g.stugrade from grade ginner join course c on g.couno=c.counoinner join student s on g.stuno=s.stunoselect s.stuno,s.stuname,s.address,c.couno,c.couname,c.credit,g.stugrade,sum(stugrade) from grade ginner join student s on g.stuno=s.stunoinner join course c on g.couno=c.counowhere s.address like'%玄武' group by s.stuno,s.stuname,s.address,c.couno,c.couname,c.credit,g.stugradehaving sum(stugrade)>150select * from student s left join grade g on s.stuno=g.stunoselect * from student s right join grade g on s.stuno=g.stunoselect * from student s full join grade g on s.stuno=g.stunoselect * from student ,course ,gradeselect * from student where stuno not in (select stuno from grade where stugrade>=90)select * from student where stuno in (select stuno from grade where stugrade>=90)select * from student where exists(select stuno from grade where stugrade>=90)函数use xkselect sum(stugrade),avg(stugrade),count(stugrade)from grade where stuno='1001'/*返回列中记录个数*/select max(age),min(age)from studentselect left('china',3)/*返回左边3个字符*/select right('china',3)/*返回右边3个字符*/select substring('chinese',2,4)/*从第2个字符开始连续返回4个字符*/select len('china')/*返回字符个数*/select lower('CHINA')/*转换为小写*/select upper('china')/*转换为大写*/select ltrim(' abc ')/*取消左边空格*/select rtrim(' abc ')/*取消右边空格*/select space(20)/*返回20个空格*/select str(246246246,7,2)/*将字数值转换为字符型,长度为7,小数位数2位*/select str(246246246)select getdate()/*返回系统日期时间*/select day('6/24/2000 10:24:45') select day(getdate())/*返回给定时日的日*/select month('6/24/2000 10:24:45') select month(getdate())/*返回给定时日的月*/select year('6/24/2000 10:24:45') select year(getdate())/*返回给定时日的年*/select datepart(day,'6/24/2000 10:24:45') select datepart(day,getdate())/*返回给定时日的日*/select datepart(month,'6/24/2000 10:24:45') select datepart(month,getdate())/*返回给定时日的月*/select datepart(year,'6/24/2000 10:24:45') select datepart(year,getdate())/*返回给定时日的年*/ select datediff(year,'6/24/2000 10:24:45',getdate())/*计算前后时日相隔年份*/select datediff(month,'8/8/2008 8:8:8',getdate())/*计算前后时日相隔月份*/select datediff(day,'8/8/2008 8:8:8',getdate())/*计算前后时日相隔天数*/select abs(-24) select abs(24) /*返回绝对值*/select ceiling(13.2) select ceiling(13.7)/*返回大于等于给定数值的最小整数*/select floor(13.2) select floor(13.7)/*返回小于等于给定数值的最大整数*/select round(3.1415926,3)/*四舍五入*/视图use xkcreate view v_student as select * from studentselect * from v_studentcreate view v_SCG asselect s.stuno,s.stuname,s.sex,s.age,c.couno,c.couname,g.stugrade,g.credit from grade ginner join student s on g.stuno=s.stunoinner join course c on g.couno=c.counoselect * from v_SCGcreate view v_course with encryption as select * from coursealter view v_student with encryption asselect top 3 percent stuno '学号',stuname '姓名',sex '性别',age '年龄',address '住址' from student order by age descexec sp_rename v_course,v_Courseexec sp_helptext v_Courseexec sp_depends v_studentdrop view v_Course存储过程use xkcreate procedure p_student with encryption asselect * from student where address='南京市玄武区'exec p_studentcreate procedure p_grade @nomber char(4) with recompile asselect * from grade where couno=@nomberexec p_grade @nomber=c002create procedure p_grade1 @stunomber char(4),@counomber char(4) outputas set @counomber=(select couno from grade where stuno=@stunomber)print @counomberdeclare @stunomber char(4),@counomber char(4)set @stunomber='1002'exec p_grade1 @stunomber,@counomberexec sp_helptext p_studentexec sp_depends p_studentexecute p_grade 'c001' with recompileexecute sp_recompile gradealter procedure p_grade @nomber char(4) with encryption asselect * from grade where stuno=@nomberdrop procedure pro_stucreate procedure pro_stu @xh char(4)=null,@xm varchar(10)=null asif @xh is nullbegin print'你必须提供学号' return endbegin transactioninsert into stundent(stuno,stuname,age,sex,address)values(@xh,@xm,'','','')commit transactionprint'信息添加到学生表中'exec pro_stu @xh='1005',@xm='卡罗特'exec xp_cmdshell 'dir c:*'exec xp_enumgroups 'admin'exec xp_loginconfig触发器use xkcreate trigger t_stu on student for update as print'记录已修改'update student set age=22 where stuno='1001'alter trigger t_stu2 on student instead of update as print'记录没有修改'/*instead of只执行print不执行sql语句*/create trigger t_stu3 on student for update as if update(age) print'年龄已修改'create trigger t_student on student for insert as declare @xh char(4)select @xh=s.stuno from student s,inserted i where s.stuno=i.stunoinsert into grade(stuno,couno) values(@xh,'c003')insert into student(stuno,stuname) values('1005','卡罗特')create trigger t_student0 on student for delete as declare @xh char(4)select @xh=stuno from deleteddelete from grade where stuno=@xhdelete from student where stuname='卡罗特'create trigger setwillnum on grade for insert update delete asupdate course set willnum=willnum+1 where couno=(select couno from inserted) update course set willnum=willnum-1 where couno=(select couno from deleted)update grade set couno='c003' where stuno='1003' and couno='c002'delete from grade where stuno='1003'and couno='c003'insert gradevalues('1003','c002',90,10)alter trigger setwillnum on grade for insert,update,delete asupdate course set willnum=(select count(*) from grade where couno=course.couno)drop trigger setwillnumsp_rename t_stu,t_stu1alter table grade disable trigger setwillnumalter table grade enable trigger setwillnumselect * from sysobjects where type='tr'备份还原use xkexec sp_addumpdevice 'disk','xh_bak','d:\xh\xh_bak'backup database xh to xh_bak /*数据库备份*/backup database xh to xh_bak with init/*覆盖备份*/backup database xh to xh_bak with noinit/*追加备份*/backup database xh to xh_bak with differential/*数据库备份*/exec sp_addumpdevice 'disk','xh_log_bak','d:\xh_log_bak'backup log xh to xh_log_bak/*日志备份*/backup log xh to xh_log_bak with initbackup log xh to xh_log_bak with noinitrestore database xh from xh_bak/*还原数据库*/restore database xh from xh_bak with norecoveryrestore database xh from xh_bak with file=2restore database xh from xh_bak with norecovery,file=2/*还原差异*/ restore log xh from xh_log_bak/*还原日志*/restore log xh from xh_log_bak with norecovery,file=2权限use xkexec sp_addlogin 'user01'exec sp_addlogin 'user02','002'exec sp_addlogin 'user03','003','xh'exec sp_password '003','333','user03'exec sp_grantdbaccess 'user02'/*设置库权限*/exec sp_revokedbaccess 'guest01'/*取消库权限*/exec sp_grantdbaccess 'admin\guest','guest01'exec sp_droplogin 'user03'exec sp_addrole 'role01'exec sp_addrole 'role02','002'/*标准角色*/exec sp_addapprole 'approle01','001'/*应用程序角色*/grant select on student to role02grant create table to role02grant insert,update,delete on student to user02revoke create table from role02deny select,insert,update,delete on student to user01/*不可逆拒绝权限*/ exec sp_setapprole 'approle01','001'/*激活应用程序角色*/exec sp_droprole 'role01'exec sp_addrolemember 'role01','user03'/*用户加入到角色*/。

SQL_Server_2000常用命令

SQL_Server_2000常用命令

SQL Server 2000常用命令,语法使用方法(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"sql="select * from 数据表 where 字段名 between 值1 and 值2"(2) 更新数据记录:sql="update 数据表 set 字段名=字段值 where 条件表达式"sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表 where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:AVG(字段名) 得出一个表格栏平均值COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方法:sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"set rs=conn.excute(sql)用 rs("别名") 获取统的计值,其它函数运用同上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Server 2000常用命令,语法使用方法(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"sql="select * from 数据表 where 字段名 between 值1 and 值2"(2) 更新数据记录:sql="update 数据表 set 字段名=字段值 where 条件表达式"sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表 where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:AVG(字段名) 得出一个表格栏平均值COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方法:sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"set rs=conn.excute(sql)用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 数据表名称 (永久性删除一个数据表)4. 记录集对象的方法:rs.movenext 将记录指针从当前的位置向下移一行rs.moveprevious 将记录指针从当前的位置向上移一行rs.movefirst 将记录指针移到数据表第一行rs.movelast 将记录指针移到数据表最后一行rs.absoluteposition=N 将记录指针移到数据表第N行rs.absolutepage=N 将记录指针移到第N页的第一行rs.pagesize=N 设置每页为N条记录2、更改表格ALTER TABLE table_nameADD COLUMN column_name DATATYPE说明:增加一个栏位(没有删除某个栏位的语法。

ALTER TABLE table_nameADD PRIMARY KEY (column_name)说明:更改表得的定义把某个栏位设为主键。

ALTER TABLE table_nameDROP PRIMARY KEY (column_name)说明:把主键的定义删除。

3、建立索引CREATE INDEX index_name ON table_name (column_name)说明:对某个表格的栏位建立索引以增加查询时的速度。

4、删除DROP table_nameDROP index_name二、的资料形态 DATATYPEssmallint16 位元的整数。

interger32 位元的整数。

decimal(p,s)p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s 是指小数点後有几位数。

如果没有特别指定,则系统会设为 p=5; s=0 。

float32位元的实数。

double64位元的实数。

char(n)n 长度的字串,n不能超过 254。

varchar(n)长度不固定且其最大长度为 n 的字串,n不能超过 4000。

graphic(n)和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。

这个形态是为了支援两个字元长度的字体,例如中文字。

vargraphic(n)可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。

date包含了 年份、月份、日期。

time包含了 小时、分钟、秒。

timestamp包含了 年、月、日、时、分、秒、千分之一秒。

三、资料操作 DML (Data Manipulation Language)资料定义好之後接下来的就是资料的操作。

资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分别介绍他们的语法:1、增加资料:INSERT INTO table_name (column1,column2,...)valueS ( value1,value2, ...)说明:1.若没有指定column 系统则会按表格内的栏位顺序填入资料。

2.栏位的资料形态和所填入的资料必须吻合。

3.table_name 也可以是景观 view_name。

INSERT INTO table_name (column1,column2,...)SELECT columnx,columny,... FROM another_table说明:也可以经过一个子查询(subquery)把别的表格的资料填入。

2、查询资料:基本查询SELECT column1,columns2,...FROM table_name说明:把table_name 的特定栏位资料全部列出来SELECT *FROM table_nameWHERE column1 = xxx[AND column2 > yyy] [OR column3 <> zzz]三)交叉连接交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。

SELECT type,pub_nameFROM titles CROSS JOIN publishersORDER BY typeUNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。

UNION的语法格式为:select_statementUNION [ALL] selectstatement[UNION [ALL] selectstatement][…n]其中selectstatement为待联合的SELECT查询语句。

ALL选项表示将所有行合并到结果集合中。

不指定该项时,被联合查询结果集合中的重复行将只保留一行。

联合查询时,查询结果的列标题为第一个查询语句的列标题。

因此,要定义列标题必须在第一个查询语句中定义。

要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。

在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。

例如:查询1 UNION (查询2 UNION 查询3)INSERT语句用户可以用INSERT语句将一行记录插入到指定的一个表中。

例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:INSERT INTO EMPLOYEES valueS('Smith','John','1980-06-10','Los Angles',16,45000);通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。

这些列按照我们创建表时定义的顺序排列。

在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。

我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。

如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。

如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。

这是因为SQL提供对事务的支持。

一次事务将数据库从一种一致性转移到另一种一致性。

如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。

回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。

为了增加可读性而在数字间插入逗号将会引起错误。

记住,在SQL中逗号是元素的分隔符。

相关文档
最新文档