如下的T-SQL语句返回的值可能为多少? SELECT floor rand(RAND()*3)

sql语句大全 - 搜狗百科
sql语句大全
该词条缺少基本信息栏、词条分类,补充相关内容帮助词条更加完善!
SQL&全名是(Structured Query Language),是用于数据库中的标准数据查询语言,&公司最早使用在其开发的中。1986年10月,美国国家标准学会(ANSI) 对 SQL 进行规范后,以此作为关系式的标准语言 (ANSI X3. 135-1986),1987年得到的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
sqlSQL 是高级的非过程化编程语言,它允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解其具体的数据存放方式。而它的界面,能使具有底层结构完全不同的数据库系统和不同数据库之间,使用相同的 SQL作为数据的输入与管理。它以记录项目〔records〕的合集(set)〔项集,record set〕作为操纵对象,所有 SQL 语句接受项集作为输入,回提交的项集作为输出,这种项集特性允许一条 SQL 语句的输出作为另一条 SQL 语句的输入,所以 SQL 语句可以嵌套,这使它拥有极大的灵活性和强大的功能。在多数情况下,在其他编程语言中需要用一大段程序才可实践的一个单独事件,而其在 SQL 上只需要一个语句就可以被表达出来。这也意味着用 SQL 可以写出非常复杂的语句。SQL 同时也是格式的扩展名。SQL 包含3个部分:“”(DDL: Data Definition Language)“”(DML: Data Manipulation Language)“”(DCL: Data Control Language)数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE
--创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个DROP TRIGGER --从数据库中删除触发器CREATE
--向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE
--创建一个数据ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域数据控制GRANT --授予用户DENY --拒绝用户访问REVOKE --解除用户访问权限事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征程序化SQLDECLARE --为查询设定EXPLAN --为查询描述数据访问计划 --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询
创建数据库创建之前判断该数据库是否存在if exists (select * from sysdatabases
=&databaseName&) database databaseNamegoCreate DATABASE databasenameon primary-- 默认就属于primary,可省略(/*--的具体描述--*/name=‘databasename_data’,-- 主数据文件的逻辑名称filename=‘&所存位置:\databasename_data.mdf’, -- 主数据文件的物理名称=数值mb, --主数据文件的初始大小maxsize=数值mb, -- 主数据文件增长的最大值filegrowth=数值%--主数据文件的增长率) on(/*--的具体描述,各参数含义同上--*/name=&databasename_log&, -- 日志文件的逻辑名称filename=&所存目录:\databasename_log.ldf&, -- 日志文件的物理名称size=数值mb, --日志文件的初始大小filegrowth=数值mb--日志文件的增长值)删除数据库drop database databasename备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_umpdevice &&, &testBack&, &c:\mssql7backup\MyNwind_1.dat&--- 开始备份BACKUP DATABASE pubs TO testBack创建新表create table tabname(1 type1 [not null] [primary key] identity(起始值,递增量),col2 type2 [not null],..)--primary key为 identity表示递增数量根据已有的表创建新表:A:gouse 原数据库名goselect * into 目的数据库名.dbo.目的表名 from 原表名(使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only创建序列create sequence SIMON_SEQUENCEminvalue 1 -- 最小值maxvalue 999 -- 最大值start with 1 -- 开始值increment by 1 -- 每次加几cache 20;删除表drop table tabname--这是将表连同表中信息一起删除但是日志文件中会有记录删除表中信息delete from tabname-这是将表中信息删除但是会保留这个表增加一个列Alter table tabname add colname coltype删除一个列Alter table tabname drop column colname添加主键Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)创建索引create [unique]
idxname on tabname(col…。)删除索引:drop index idxname on tabname注:索引是不可更改的,想更改必须删除重新建。创建视图create view viewname as select statement删除视图:drop view viewname基本的sql语句(1) 数据记录筛选:sql=&select * from 数据表 where=字段值
by字段名[desc]&sql=&select * from 数据表 where字段名like &%字段值%& order by 字段名 [desc]&sql=&select top 10 * from 数据表 where字段名=字段值 order by 字段名 [desc]&sql=&select top 10 * from 数据表 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(&别名&) 获取统计的值,其它函数运用同上。查询去除重复值:select distinct * from table1(5) 数据表的建立和删除:CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )(6) 单列求和:SELECT SUM(字段名) FROM 数据表
复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1&&1法二:select top 0 * into b from a拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)insert into b(x, y, z) select d,e,跨数据库之间表的拷贝(具体数据使用) (Access可用)insert into b(x, y, z) select d,e,f from a in ‘具体数据库’ where 条件例子:。.from b in &&&Server.MapPath(&.&&&\data.mdb& &&& where..子查询(表名1:a 表名2:b)select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)显示文章最后时间select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b外连接查询(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c在线视图查询(表名1:aselect * from (Select a,b,c FROM a) T where t.a & 1;between的用法between为查询某字段的指定范围,限制查询数据范围时包括了边界值,not between不包括边界值select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值1 and 数值2in 的使用方法select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)删除主表没有的信息两张关联表delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1四表联查问题select * from a left inner
b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....日程安排提前五分钟SQL: select * from 日程安排 where datediff(&minute&,f开始时间,getdate())&5一条sql 搞定数据库页select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段= a.主键字段 order by a.排序字段前10条记录select top 10 * from table1 where 范围选择排名选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等。)select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)派生结果表包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重复行而派生出一个结果表(select a from tableA except (select a from tableB) except (select a from tableC)随机取出10条数据select top 10 * from tablename order by newid()随机选择记录select newid()删除重复记录Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)列出数据库里的表名select name from sysobjects where type=&U&列出表里的所有的select name from syscolumns where id=object_id(&TableName&)列示排列列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。select type,sum(case vender when &A& then pcs
0 end),sum(case vender when &C& then pcs else 0 end),sum(case vender when &B& then pcs else 0 end) FROM tablename group by type显示结果:type vender pcs电脑A 1电脑A 1光盘B 2光盘A 2手机B 3手机C 3初始化表table1TRUNCATE TABLE table1选择从10到15的记录select top 5 * from (select
* from (select top 15 * from table order by id asc) table_别名 order by id desc) table_2 order by id数据类型转换declare @numid intdeclare @id varchar(50)set @numid=2005set @id=convert(varchar,@numid)通过上述语句完成数据类型Int转换成varchar,其他转换类似,可参看convert函数
1=1,1=2的使用在SQL语句组合时用的较多“where 1=1”是表示选择全部 “where 1=2”全部不选,如:if @strWhere !=&set @strSQL = &select count(*) as Total from [& + @tblName + &] where & + @strWhereendelsebeginset @strSQL = &select count(*) as Total from [& + @tblName + &]&end我们可以直接写成set @strSQL = &select count(*) as Total from [& + @tblName + &] where 1=1 and &+ @strWhere收缩数据库--重建索引DBCC REINDEXDBCC INDEXDEFRAG--收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE压缩数据库 shrinkdatabase(dbname)转移数据库给新用户以已存在exec sp_change_users_login &update_one&,&newname&,&oldname&go检查备份集RESTORE VERIFYONLY from disk=&E:\.bak&修复数据库Alter DATABASE [dvbbs] SET SINGLE_USERGODBCC CHECKDB(&dvbbs&,repair_allow_data_loss) WITH TABLOCKGOAlter DATABASE [dvbbs] SET MULTI_USERGO日志清除SET NOCOUNT ONDECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INTUSE tablename -- 要操作的数据库名Select @LogicalFileName = &tablename_log&, --日志文件名@MaxMinutes = 10, -- Limit on time allowed to wrap log.@NewSize = 1 -- 你想设定的日志文件的大小(M)-- Setup / initializeDECLARE @OriginalSize intSelect @OriginalSize = sizeFROM sysfilesWhere name = @LogicalFileNameSelect &Original Size of & + db_name() + & LOG is & +CONVERT(VARCHAR(30),@OriginalSize) + & 8K pages or & +CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + &MB&FROM sysfilesWhere name = @LogicalFileNameCreate TABLE DummyTrans(DummyColumn
(8000) not null)DECLARE @Counter INT,@StartTime DATETIME,@TruncLog VARCHAR(255)Select @StartTime = GETDATE(),@TruncLog = &BACKUP LOG & + db_name() + & WITH TRUNCATE_ONLY&DBCC SHRINKFILE (@LogicalFileName, @NewSize)EXEC (@TruncLog)-- Wrap the log if necessary.WHILE @MaxMinutes & DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expiredAND @OriginalSize = (Select size FROM sysfiles Where name = @LogicalFileName)AND (@OriginalSize * 8 /1024) & @NewSizeBEGIN -- Outer loop.Select @Counter = 0WHILE ((@Counter & @OriginalSize / 16) AND (@Counter & 50000))BEGIN -- updateInsert DummyTrans VALUES (&Fill Log&)Delete DummyTransSelect @Counter = @Counter + 1ENDEXEC (@TruncLog)ENDSelect &Final Size of & + db_name() + & LOG is & +CONVERT(VARCHAR(30),size) + & 8K pages or & +CONVERT(VARCHAR(30),(size*8/1024)) + &MB&FROM sysfilesWhere name = @LogicalFileNameDrop TABLE DummyTransSET NOCOUNT OFF更改某个表exec sp_changeobjectowner &tablename&,&dbo&存储更改全部表Create PROCEDURE dbo.User_ChangeObjectOwnerBatch@OldOwner as NVARCHAR(128),@NewOwner as NVARCHAR(128)ASDECLARE @Name as NVARCHAR(128)DECLARE @Owner as NVARCHAR(128)DECLARE @OwnerName as NVARCHAR(128)DECLARE curObject CURSOR FORselect &Name& = name,&Owner& = user_name(uid)from sysobjectswhere user_name(uid)=@OldOwnerorder by nameOPEN curObjectFETCH NEXT FROM curObject INTO @Name, @OwnerWHILE(@@FETCH_STATUS=0)BEGINif @Owner=@OldOwnerbeginset @OwnerName = @OldOwner + &.& + rtrim(@Name)exec sp_changeobjectowner @OwnerName, @NewOwnerend-- select @name,@NewOwner,@OldOwnerFETCH NEXT FROM curObject INTO @Name, @OwnerEND curObjectdeallocate curObjectGO循环写入数据declare @i intset @i=1 @i&30begininsert into
(userid) values(@i)set @i=@i+1end
查询数据库中含有同一这字段的表:select
from sysobjects
xtype = &u& and id in(select id from syscolumns where name = &&)根据出生日期可以算出年龄:select datediff(,scrq,&2013&) as 年龄 from page_shsjgrgl根据当前年份自动算出年龄select datediff(year,csny,cast(YEAR(GETDATE()) as char))年select year(djsj) from page_shsjgrgl月select month(djsj) from page_shsjgrgl日select day(djsj) from page_shsjgrgl在同一数据库中复制表结构:select * into a from b where 1&&1当 IDENTITY_INSERT 设置为 OFF 时,不能为表 && 中的插入显式值。set identity_insert aa ON----设置打开,批量插入:insert into aa(Customer_ID, ID_Type, ID_Number) select Customer_ID, ID_Type, ID_Number from TCset identity_insert aa OFF---关闭不同数据库之间的复制:复制结构:select * into test.dbo.b from GCRT.dbo.page_shsjgrgl where 1&&1复制内容:insert into test.dbo.b(xm,ssdq) select xm,ssdq from GCRT.dbo.page_shsjgrgl查看数据库中所有的数据表表名:select name from SysObjects where type=&u&查看数据库中所有表含有同一字段的表:select name from sysobjects where xtype = &u& and id in(select id from syscolumns where name = &同一字段&)查看数据表中的所有字段:select name from Syscolumns where id=object_id(&表名&)查询数据库时随机10条记录:select top 10 * from td_areacode
by newid()修改字段类型:ALTER TABLE 表名 ALTER COLUMN
varchar(30) NOT NULLuse ZHJIANGJGYLdeclare @temp nvarchar(30)set @temp = &ZWI4&select hllx from page_yljg_zyry where hllx not in(selectcase @temp when &&then && b1 endfrom (select * from TD_Code where page_en=&page_yljg_zyry& and B2=&ZWI&) s where s.b1 !=case @temp when && then && else @temp end)更改数据库表字段类型:alter table page_shsjgrgl alter column s1 int
A:UNION运算符UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,的每一行不是来自TABLE1 就是来自TABLE2。B: EXCEPT运算符EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。C:INTERSECT运算符INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。注:使用运算词的几个查询结果行必须是一致的。
A、left outer :左外连接(左连接):结果集既包括的匹配行,也包括左连接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.cB:right outer join:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C: outer join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
判断数据库是否存在if exists (select*fromsysdatabaseswherename= &数据库名&)dropdatabase[数据库名]判断表是否存在if not exists (select * from sysobjects where [name] = &表名& and xtype=&U&)--这里创建表end判断存储过程是否存在if exists (select*fromsysobjectswhereid = object_id(N&[存储过程名]&) and OBJECTPROPERTY(id, N&IsProcedure&) = 1)dropprocedure[存储过程名]判断临时表是否存在if object_id(&tempdb..#临时表名&)isnot nulldroptable#临时表名判断视图是否存在--SQL Server 2000IF EXISTS (SELECT*FROMsysviewsWHEREobject_id = &[dbo].[视图名]&--SQL Server 2005IF EXISTS (SELECT*FROMsys.viewsWHEREobject_id = &[dbo].[视图名]&判断函数是否存在if exists (select*fromdbo.sysobjectswhereid = object_id(N&[dbo].[函数名]&) and xtype in (N&FN&, N&IF&, N&TF&))dropfunction[dbo].[函数名]获取创建信息SELECT[name],[id],crdateFROMsysobjectswherextype=&U&/*xtype 的表示参数类型,通常包括如下这些 C =CHECK约束 D = 默认值或DEFAULT约束 F =FOREIGNKEY约束 L =日志FN =IF = 内嵌表函数 P =存储过程PK =PRIMARYKEY约束(类型是K) RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR =触发器U = 用户表 UQ =UNIQUE约束(类型是K) V = 视图 X = 扩展存储过程 */判断列是否存在if exists(select*fromsysumnswhereid=object_id(&表名&) andname=&列名&)altertable表名dropcolumn列名判断列是否自增列if columnproperty(object_id(&table&),&col&,&IsIdentity&)=1 &自增列&elseprint &不是自增列&SELECT*FROMsys.columnsWHEREobject_id=OBJECT_ID(&表名&)AND is_identity=1判断表中是否存在索引if exists(select*fromsysindexeswhereid=object_id(&表名&) andname=&索引名&)print &存在&elseprint &不存在查看数据库中对象SELECT*FROMsysobjectsWHEREname=&对象名&select * from table(所要查询的表名) where coloum(条件)
declare @id (10)--set @id = &&select @id = &&
--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x & @yprint &x & y& --打印字符串&x & y&else if @y & @zprint &y & z&else print &z & y&--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08when job_level = ’2’ then e_wage*1.07when job_level = ’3’ then e_wage*1.06else e_wage*1.05end--WHILE
BREAKdeclare @x int @y int @c intselect @x = 1 @y=1 @x & 3beginprint @x --打印变量x 的值while @y & 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例 等待1 小时2 分零3 秒后才执行SELECT 语句waitfor
’01:02:03’select * from employee--例 等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employeeSELECTselect *(列名) from table_name(表名) where _name
ex:(宿主)select * from stock_ination where stockid = (nid)stockname = &str_name& stockname like &%
this %& stockname like &[a-zA-Z]%& --------- ([]指定值的范围)stockname like &[^F-M]%& --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用)or stockpath = &stock_path&or stocknumber & 1000and stockindex = 24not stocksex = &man&stocknumber between 20 and 100stocknumber in(10,20,30) by stockid desc() --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,&stocknumber + 10& = stocknumber + 10 from table_nameselect stockname , &stocknumber& = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select * from table1, table2 where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接 select stockname from table1 [all] ----- union合并查询结果集,all-保留重复行select stockname from table2insertinsert into table_name (Stock_name,Stock_number) value (&xxx&,&xxxx&)value (select Stockname , Stocknumber from Stock_table2)---value为select语句updateupdate table_name set Stockname = &xxx& [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4deletedelete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性 table table_name --------------- 完全删除表*
alter table database.owner.table_ add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname (30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop
Stockname_default ---- 删除Stockname的default约束
----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employee e_wage =(select max(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的--STDEVP()--STDEVP()函数返回--VAR()--VAR()函数返回表达式中所有值的统计--VARP()--VARP()函数返回总体变异数
/******/(float_expression) --返回以弧度表示的角的正弦(float_expression) --返回以弧度表示的角的TAN(float_expression) --返回以弧度表示的角的(float_expression) --返回以弧度表示的角的余切/******/ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角(float_expression) --返回余弦是FLOAT 值的以弧度表示的角(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2) --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的可为--INTEGER//REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的/***取近似值函数***/CEILING(numeric_expression) --返回&=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型(numeric_expression) --返回&=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型(numeric_expression) --返回表达式的返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型(numeric_expression) --测试参数的正负号返回0 零值1 或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --为π 即3.7936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机
() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),(),SUBING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码 --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename(&&, &{&) quotename(&abc&)运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复acter_expression 指定次数的字符串/*select replicate(&abc&, 3) replicate( &abc&, -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace(&abc123g&, &123&, &&)运行结果如下----------- -----------abcdefg*/() --函数返回一个有指定长度的空白字符串() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() ( AS &_ type&[ length ])CONVERT() 函数语法如下CONVERT() ([ length ],
[, ])select cast(100+99 as char) convert(varchar(12), get())运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值(&datepart& ,&number& ,&date&) --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期(&datepart& ,&number& ,&date&)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(&datepart& , &date&) --函数以字符串的形式返回日期的指定部分DATEPART(&datepart& , &date&) --函数以整数值的形式返回日期的指定部分() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(&&table_name&&, &&column_name&&) --函数返回表中指定字段的长度值COL_NAME(&table_id&, &column_id&) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID([&database_name&]) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY([,
increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(&_expression&, ) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值ID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(&expression1&, &expression2&)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值--------------------------------------------------------------------------------sql中的保留字action
aggregate all alter after and as asc avg avg_row_length auto_increment between
bit binary blob
both by cascade case char character change check
column columns comment constraint create
current_date current_time current_timestamp data database databases date datetime day day_hour day_minute day_second dayofmonth dayofweek dayof dec
default delayed delay_key_ delete desc describe distinct distinctrow double
escape escaped enclosed
explain exists fields file first float float4 float8 flush foreign from for
function global
grants group having
high_priority hour hour_minute hour_second
identified ignore in
infile inner insert insert_id int integer interval int1 int2 int3 int4 int8 into if is isam join key keys kill last_insert_id leading left length like lines limit load local
long longtext low_priority max max_rows match mediumblob mediumtext mediumint middleint min_rows minute minute_second modify month monthname myisam natural numeric no not null on optimize option optionally or
outer outfile pack_keys partial password precision primary
process processlist privileges read real references reload regexp
replace restrict returns revoke rlike row rows second select set show shutdown smallint soname sql_big_tables sql_big_selects sql_low_priority_updates sql_log_off sql_log_update sql_select_limit sql_small_result sql_big_result sql_warnings straight_join starting status string table tables temporary terminated text then time timestamp tinyblob tinytext tinyint trailing to type use
unique unlock unsigned update usage values varchar variables varying varbinary with write when where year year_month zerofill
SQL在1970年代初,由公司San Jose,California研究实验室的发表将数据组成表格的应用原则(Codd&s Relational Algebra)。1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd&s Relational Algebra在研制System R中,研制出一套规范语言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS中也实现了SQL。1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为(ISO)采纳为国际标准。1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89, 该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:国际标准化组织(ISO),为ISO 报告“Database Language SQL With Integrity Enhancement”,发布在The Federal Information Processing Standard Publication(FIPS PUB)127目前,所有主要的关系数据库管理系统支持某些形式的SQL, 大部分数据库打算遵守ANSI SQL89标准。
主条目:和由于 SQL 指令在部份高级使用时,语法会依照特定条件来变换,而且若是表格中的字段过多时,许多开发人员都会习惯以字符串组立的方式创建 SQL 指令,而且又使用系统管理员级的帐户连到数据库,因此让黑客有机会利用 SQL 的组立方式进行攻击,像是在指令中添加部份刺探性或破坏性的指令(例如DROP TABLE、DROP DATABASE或是DELETE * FROM myTable等具破坏性的指令),让数据库的数据或实体服务器被破坏,导致服务中断或是系统瘫痪等后果,此种攻击手法称为SQL注入。目前实务上较有效的防御方法,就是全面改用。
参考资料:
扩展阅读:
合作编辑者:
搜狗百科词条内容由用户共同创建和维护,不代表搜狗百科立场。如果您需要医学、法律、投资理财等专业领域的建议,我们强烈建议您独自对内容的可信性进行评估,并咨询相关专业人士。
点击编辑词条,进入编辑页面}

我要回帖

更多关于 matlab randselect 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信