一、ORACLE
1.Oracle锁表与解锁
查看锁表进程SQL语句
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
杀掉锁表进程:
记录下SID和serial# ,分别替换掉下面的1155,39095,即可解除锁表
alter system kill session '1155,39095';
对象锁与解锁
这里以包为PKG_ZLGL_BASEDATA为例
注意name为包或者存储过程等;
SELECT * FROM V$DB_OBJECT_CACHE WHERE name='PKG_ZLGL_BASEDATA' AND LOCKS!='0';
查看sid 注意object为包或者存储过程等;
SELECT SID from V$ACCESS WHERE object='PKG_ZLGL_BASEDATA';
查看查看SID和SERIAL# in后面的条件为上述查的sid
SELECT SID,SERIAL#,PADDR,STATUS FROM V$SESSION WHERE SID IN('283','343');
杀进程 实例如下: alter system kill session ‘sid,SERIAL’
alter system kill session '283,50673'
/查看被锁住的存储过程/
SELECT FROM V$DB_OBJECT_CACHE WHERE OWNER = ‘APPADMIN’ AND LOCKS != ‘0’;
SELECT FROM DBA_DDL_LOCKS WHERE NAME = UPPER(‘TEMP_EXPORT’);
SELECT T.SID, T.SERIAL# FROM V$SESSION T WHERE T.SID = 24;
/查看被锁住的表/
SELECT DO.OWNER, DO.OBJECT_NAME, LO.SESSION_ID, LO.LOCKED_MODE
FROM V$LOCKED_OBJECT LO, DBA_OBJECTS DO
WHERE DO.OBJECT_ID = LO.OBJECT_ID;
SELECT B.USERNAME, B.SID, B.SERIAL#, LOGON_TIME
FROM V$LOCKED_OBJECT A, V$SESSION B
WHERE A.SESSION_ID = B.SID
ORDER BY B.LOGON_TIME;
/kill被锁的进程 ‘sid, serial#’ /
ALTER SYSTEM KILL SESSION ‘24,30992’;
/lock相关表/
SELECT FROM V$LOCK;
SELECT FROM V$SQLAREA;
SELECT FROM V$SESSION;
SELECT FROM V$PROCESS;
SELECT FROM V$LOCKED_OBJECT;
SELECT FROM ALL_OBJECTS;
SELECT * FROM V$SESSION_WAIT;
1、修改字段名:
alter table 表名 rename column A to B
2、修改字段类型:
alter table 表名 alter column 字段名 type not null
3、修改字段默认值
alter table 表名 add default (0) for 字段名 with values
如果字段有默认值,则需要先删除字段的约束,在添加新的默认值,
select c.name from sysconstraints a
inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id
where a.id=object_id(‘表名’)
and b.name=’字段名’
根据约束名称删除约束
alter table 表名 drop constraint 约束名
根据表名向字段中增加新的默认值
alter table 表名 add default (0) for 字段名 with values
4、增加字段:
alter table 表名 add 字段名 type not null default 0
5、删除字段:
alter table 表名 drop column 字段名;
CHARINDEX 作用
写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAEINDX的函数,顾名思义就是找到字符(char)的位置(index),既然能够知道所在的位置,当然就可以判断是否包含在其中了。
通过CHARINDEX如果能够找到对应的字符串,则返回该字符串位置,否则返回0。
基本语法如下:
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
expressionToFind :目标字符串,就是想要找到的字符串,最大长度为8000 。
expressionToSearch :用于被查找的字符串。
start_location:开始查找的位置,为空时默认从第一位开始查找。
PATINDEX
和CHARINDEX类似,PATINDEX也可以用来判断一个字符串中是否包含另一个字符串,两种的差异在于,前者是全匹配,后者支持模糊匹配。
1.简单示例
select PATINDEX(‘%ter%’,’interesting data’)
STUFF ( character_expression , start , length ,character_expression )
参数
character_expression
一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。
start
一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个character_expression 长,则返回空字符串。start 可以是 bigint 类型。
length
一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个character_expression 中的最后一个字符。length 可以是 bigint 类型。
返回类型
如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。
备注
如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。
如果结果值大于返回类型支持的最大值,则产生错误。
html选择器
1.通过 id 来查找 HTML 元素
2.通过标签名来查找 HTML 元素
3.通过类名来查找 HTML 元素
4.通过 CSS 选择器查找 HTML 元素