⑴ 在sql语句中 要使用contans必须建立什么
前言:微软的SQL Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但SQL Server 7.0以前的数据库系统由于没有全文检索功能,致使无法提供像文本内容查找此类的服务,成为一个小小的遗憾。从SQL Server 7.0起,到如今的SQL Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。
建立全文索引
在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQL Server 7.0新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称):
1. 启动数据库的全文处理功能(sp_fulltext_
database);;
2. 建立全文检索目录(sp_fulltext_catalog);
3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table);
4. 指出表中需要全文检索的列名(sp_fulltext_
column);;
5. 为表创建全文索引(sp_fulltext_table);;
6. 填充全文检索目录(sp_fulltext_catalog)。
下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。
use test //打开数据库
//打开全文索引支持,启动SQL Server的全文搜索服务
execute sp_fulltext_database ‘enable’
//建立全文检索目录ft_test
execute sp_fulltext_catalog ‘ft_test’, ‘create’
为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。
execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’
//设置全文索引列名
execute sp_fulltext_column ‘book’, ‘title’, ‘add’
execute sp_fulltext_column ‘book’,‘notes’, ‘add’
//建立全文索引
execute sp_fulltext_table ‘book’, ‘activate’
//填充全文索引目录
execute sp_fulltext_catalog ‘ft_test’, ‘start_full’
至此,全文索引建立完毕。
进行全文检索
SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({column | *}), <contains_search_condition> )
其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_
condition 说明CONTAINS语句的搜索内容,其语法格式为:
{||||}[{{AND|AND NOT|OR}}] [...n]
下面就simple_term和prefix_term参数做简要说明:
simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:
{‘word’|“ phrase”}
prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:
{“word*” | “phrase*”}
例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
select title, notes
from book
where contains(tilte, ‘database’) or contains(notes,‘database’)
or contains(title,‘computer’) or contains(notes,‘computer’)
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)
其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:
select title, notes
from book
where freetext(*,‘Successful Life’)
⑵ 帮忙看下,下面的sql语句
SQLStr="Update EnterpriseBody Set Enable="&Enable&" where ID="& ID
这个是正解的..
⑶ 在postgresql数据库里enable是什么意思
Pg权限分为两部分,一部分是“系统权限”或者数据库用户的属性,可以授予role或user(两者区别在于login权限);一部分为数据库对象上的操作权限。对超级用户不做权限检查,其它走acl。对于数据库对象,开始只有所有者和超级用户可以做任何操作,其它走acl。在pg里,对acl模型做了简化,组和角色都是role,用户和角色的区别是角色没有login权限。可以用下面的命令创建和删除角色,CREATEROLEname;DROPROLEname;为了方便,也可以在shell命令上直接调用程序createuser和dropuser,这些工具对相应命令提供了封装:createusernamedropusername数据库对象上的权限有:SELECT,INSERT,UPDATE,DELETE,RULE,REFERENCES,TRIGGER,CREATE,TEMPORARY,EXECUTE,和USAGE等,具体见下面定义typedefuint32AclMode;/*abitmaskofprivilegebits*/#defineACL_INSERT(1<<0)/*forrelations*/#defineACL_SELECT(1<<1)#defineACL_UPDATE(1<<2)#defineACL_DELETE(1<<3)#defineACL_TRUNCATE(1<<4)#defineACL_REFERENCES(1<<5)#defineACL_TRIGGER(1<<6)#defineACL_EXECUTE(1<<7)/*forfunctions*/#defineACL_USAGE(1<<8)/*forlanguages,namespaces,FDWs,and*servers*/#defineACL_CREATE(1<<9)/*fornamespacesanddatabases*/#defineACL_CREATE_TEMP(1<<10)/*fordatabases*/#defineACL_CONNECT(1<<11)/*fordatabases*/#defineN_ACL_RIGHTS12/*1plusthelast1<
⑷ sql 事件探查器的命令结果查询 怎么找到 PRODUCT00 P这个数值,enable=1,哪里看的到。
你要查询什么信息,没有看懂你的意思,如果是要直接在数据库里查询,把整个语句复制到 sql management studio 里,把 where p.enable = 1 改成 = 0 就好了
⑸ ORACLE中 DBMS_OUTPUT.ENABLE的 ENABLE对有什么作用
dbms_output.enable()有什么用
设置 dbms_output 输出的缓冲。 不设置如果输出超过2000字节就不可以用了……
oracle 中 set serveroutput on 是什么意思
即打开oracle自带的输出方法dbms_output。在执行set serveroutput on以后,使用dbms_output方法可以输出信息,例如:dbms_output.put_line('This is');
⑹ sql语句分析
SQL 语句摘要可以用在MySQL的各个方面,比如 性能字典里对语句的分析,查询重写插件规则改写等等。
接下来依次看下语句摘要在这两方面的使用。
1. 性能字典
mysql> call sys.ps_setup_enable_consumer('statements');
+---------------------+
| summary |
+---------------------+
| Enabled 4 consumers |
+---------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
开启后,执行几次之前的几条 SQL。
完后可以很方便的从 sys 库里分析这类语句的执行情况,包括执行次数,执行时间,扫描的记录数,锁定的时间,是否用到排序等等。
2. 查询重写插件
比如要阻止对表 p1 通过字段 r1 的删除动作,可以用查询重写插件在 MySQL 语句分析层直接转换,这时候就得用到摘要函数 statement_digest_text。
假设:表 p1 字段 id 值全部为正。
delete from p1 where id = 1000;
要改写为,
delete from p1 where id = -1;
利用函数 statement_digest_text 来定制这条 SQL 的重写规则。
mysql> INSERT INTO query_rewrite.rewrite_rules (pattern, replacement,pattern_database) -> VALUES( -> statement_digest_text('delete from p1 where id = 1000') , -> statement_digest_text('delete from p1 where id = -1'), -> 'ytt' -> );Query OK, 1 row affected (0.01 sec)
语句被查询重写后的效果:
mysql> delete from p1 where id = 20000;Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings\G*************************** 1. row *************************** Level: Note Code: 1105Message: Query 'delete from p1 where id = 20000' rewritten to 'DELETE FROM `p1` WHERE `id` = - 20000' by a query rewrite plugin1 row in set (0.00 sec)
mysql> select count(*) from p1;+----------+| count(*) |+----------+| 9000001 |+----------+1 row in set (1.59 sec)
总结
MySQL 8.0 新增的语句摘要函数可以很方便的分析 SQL 语句执行的各个方面,比以前分析类似的场景要简单的多。
⑺ sql server UPDATE 触发器的问题
alter
trigger
dd
on
dingdanxinxi
after
update
as
begin
set
nocount
on;
declare
@id
int,@cha
int,@new
int,@old
int
select
@id=商品编号,@old=数量
from
deleted
select
@new=数量
from
inserted
if
@new
>@old
begin
set
@cha=@new-@old
update
kucunxinxi
set
库存数量=库存数量+@cha
where
商品编号=@id
end
else
begin
set
@cha=@new-@old
update
kucunxinxi
set
库存数量=库存数量+@cha
where
商品编号=@id
end
end
你的代码设计有问题,库存数量=库存数量+@cha
where
商品编号=@id,还有就是:else后也是一个整体,要用begin……end,我都改过了,自己在看一下……,不懂的话,继续问哈!!!
⑻ SQL Server常用到的几个设置选项
1. SET DEADLOCK_PRIORITY
2. SET LOCK_TIMEOUT
3.@@LOCK_TIMEOUT
4.SET IDENTITY_INSERT
5.SET IMPLICIT_TRANSACTIONS
6.SET NOCOUNT
7.@@ROWCOUNT
8.SET ROWCOUNT
9.SET TRANSACTION ISOLATION LEVEL
10.SET XACT_ABORT
1. SET DEADLOCK_PRIORITY
说明:控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。
语法:SET DEADLOCK_PRIORITY { LOW | NORMAL | @deadlock_var }
参数:LOW 指定当前会话为首选死锁牺牲品。Microsoft® SQL Server™ 自动回滚死锁牺牲品的事务,并给客户端应用程序返回 1205 号死锁错误信息。
NORMAL 指定会话返回到默认的死锁处理方法。
@deadlock_var 是指定死锁处理方法的字符变量。如果指定 LOW,则 @deadlock_var 为 3;如果指定 NORMAL,则 @deadlock_var 为 6。
注释:SET DEADLOCK_PRIORITY 的设置是在执行或运行时设置,而不是在分析时设置。
权限:SET DEADLOCK_PRIORITY 权限默认授予所有用户。
2. SET LOCK_TIMEOUT
说明:指定语句等待锁释放的毫秒数。
语法:SET LOCK_TIMEOUT timeout_period
参数:timeout_period 是在 Microsoft® SQL Server™ 返回锁定错误前经过的毫秒数。值为 -1(默认值)时表示没有超时期限(即无限期等待)。
当锁等待超过超时值时,将返回错误。值为 0 时表示根本不等待,并且一遇到锁就返回信息。
注释:在连接开始时,该设置的值为 -1。设置更改后,新设置在其余的连接时间里一直有效。
SET LOCK_TIMEOUT 的设置是在执行或运行时设置,而不是在分析时设置。
READPAST 锁定提示为该 SET 选项提供了另一种方式。
权限:SET LOCK_TIMEOUT 权限默认授予所有用户。
⑼ SQL数据库查询时弹出预选怎么取消
永久关闭的话:
在Tools-->Options打开选项页面,依次展开Text Editor-->Transact-SQL-->IntelliSense
不要选中Enable IntelliSense选项。
当前操作的话直接按一下ESC就好了。
⑽ 如何用SQL语句删除 SQL Server 中的触发器
-- 查看数据库已有触发器
use yourdatabase
go
select * from sysobjects where xtype='TR'
-- 查看单个触发器
exec sp_helptext '触发器名'
--删除触发器:
基本语句如下:
drop trigger trigger_name