数据库sql语句及命令

本文介绍了多种数据库操作技巧,包括检查表是否存在、查询表结构、批量生成删除语句、时间格式化、切换数据库、查看事务锁和连接信息。同时,涵盖了MySQL、Oracle和SQL Server的特定操作,如Oracle的全数据库缓存查看、SQL Server的字符串转换和锁管理。这些技巧对于数据库管理和优化至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值