mysql
1、sql 判断一个表是否存在
select count(*) from information_schema.tables where table_schema='mydatabase' and table_name ='score';
2、查询数据库的表或者模糊查询数据库的表
select table_name from information_schema.tables where table_schema='mydatabase' and table_name like '%20191216%';
3、批量生成sql语句
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'mydatabase' AND Table_name LIKE '%20191216%';
4、mysq 时间格式化
select date_format(now(),'%Y-%m-%d %H%i%s');
5、 查询表结构
1)表结构及注释
show full FIELDS from table_name
或者
SELECT table_schema, table_name, column_name,column_comment from information_schema.columns where table_name = 'mytable' and table_schema = 'mydatabase'
2)表名及表注释
SELECT
table_name 表名,
table_comment 表说明
FROM
information_schema.TABLES
WHERE
table_schema = 'mydatabase'
and table_name = 'mytable';
6、切换数据库:
use database1
7、查看事务锁,解锁
-- 查看当前正在执行的事务
SELECT * FROM information_schema.INNODB_TRX
-- 查看当前出现的锁
SELECT * FROM information_schema.INNODB_LOCKS
-- 查看锁等待的对应关系
SELECT * FROM information_schema.innodb_lock_waits
-- 杀死线程
kill 线程id(表INNODB_TRX中字段trx_mysql_thread_id)
8、数据库连接信息
最大连接数:
show variables like 'max_connections';
当前连接数:
show status like 'Threads_connected';
连接超时时间(秒):
SHOW VARIABLES LIKE 'wait_timeout';
修改数据库连接超时时间:
set wait_timeout = 600;
oracle
1、字符串转时间
between TO_DATE('2001-01-12', 'YYYY-MM-DD' ) and TO_DATE('2001-02-12', 'YYYY-MM-DD' )
2、当前日期加一天
select to_date(sysdate,'YYYY-MM-DD') +1 from dual
3、当前日期加一分钟
select to_date(sysdate,'YYYY-MM-DD') + 1/1440 from dual
4、时间转字符串
select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss')
5、查看数据库是否启用全数据库缓存
SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE;
6、启动或者关闭数据库:
1、su - oracle
2、sqlplus /nolog 或者 sqlplus / as sysdba
3、startup ;shutdown immediate
7、切换数据库:
alter session set current_schema=newschema
8、获取表和视图的数据
select
table_name TABLE_NAME,
'TABLE' TABLE_TYPE,
NULL REMARKS,
owner TABLE_SCHEM,
NULL TABLE_CAT
from
sys.all_tables
where
owner like upper('system')
union select
view_name TABLE_NAME,
'VIEW' TABLE_TYPE,
NULL REMARKS,
owner TABLE_SCHEM,
NULL TABLE_CAT
from
sys.all_views
where
owner like upper('system')
order by
TABLE_NAME
9、获取数据库用户
select
NULL TABLE_CAT,
username TABLE_SCHEM,
NULL TABLE_NAME,
NULL TABLE_TYPE,
NULL REMARKS
from
sys.all_users
where
username like upper('%s')
order by username
10、获取数据库锁,解锁
获取数据库锁:
SELECT
A.USERNAME,
A.MACHINE,
A.PROGRAM,
A.SID,
A.SERIAL#,
A.STATUS,
C.PIECE,
C.SQL_TEXT
FROM
V$SESSION A,
V$SQLTEXT C
WHERE
A.SID IN ( SELECT DISTINCT T2.SID FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID )
AND A.SQL_ADDRESS = C.ADDRESS ( + )
ORDER BY
C.PIECE;
解锁:
alter system kill session '150,219'; 150对应SID,219对应SERIAL#
11、查看、修改数据库连接
1.查看允许的最大连接数
select value from v$parameter where name = 'processes';
2、查看当前最大的连接数
select count(*) from v$session;
3、查看当前连接信息
select * from v$session;
4、修改oracle最大连接数。oracle 11g 最大连接数默认为150。
alter system set processes=1500 scope=spfile;
12、oracle 连接sys用户
用户名填写 sys as sysdba
dbeaver 中选择角色为 sysdba
db2
1、查看日志文件已使用,未使用大小,使用率等
select * from sysibmadm.MON_TRANSACTION_LOG_UTILIZATION
2、切换schema:
SET CURRENT SCHEMA = 'PAYROLL'
sqlserver:
1、字符串转时间:
cast('1999-2-01' as date)
2、时间加减:
DATEADD(DAY,60,cast('1999-2-01' as date))
3、字符串分割:
LEFT('AA',2)
RIGHT('AA',2)
SUBSTRING('BB',1,2) 参数1:要截取的字符串,参数2:开始截取的下标(下标从1开始),参数3:截取的字符长度
4、字符串拼接:
a1 + a2
5、查询系统表和视图:
SELECT null TABLE_CAT,TABLE_SCHEMA TABLE_SCHEM ,TABLE_NAME,'TABLE' TABLE_TYPE, NULL REMARKS,
NULL TYPE_CAT, NULL TYPE_SCHEM, NULL TYPE_NAME, NULL SELF_REFERENCING_COL_NAME, NULL REF_GENERATION
FROM information_schema.TABLES where TABLE_CATALOG ='' and TABLE_SCHEMA =''
union
SELECT null TABLE_CAT,TABLE_SCHEMA TABLE_SCHEM,TABLE_NAME,'VIEW' TABLE_TYPE, NULL REMARKS,
NULL TYPE_CAT, NULL TYPE_SCHEM, NULL TYPE_NAME, NULL SELF_REFERENCING_COL_NAME, NULL REF_GENERATION
FROM information_schema.VIEWS WHERE TABLE_CATALOG ='' and TABLE_SCHEMA =''
6、查看锁,解锁
查看:
select
request_session_id spid,
OBJECT_NAME(resource_associated_entity_id) tableName
from
sys.dm_tran_locks
where
resource_type='OBJECT';
解锁:
kill request_session_id