数据库私房菜——(扯淡的三种主流数据库 oracle、sqlserver、mysql)

一、 查看当前库有哪些表以及表结构

--oracle查看当前表空间中的表
select table_name from user_tables;
--oracle查看当前表空间中的视图
select view_name from user_views;
--oracle查看表结构
desc emp
--


--
SQLServer查询某数据库所有表的表名: select name from sysobjects where xtype='U' and name like '%x_flow_history%' order by name --sqlserver查询某表的表结构: SELECT syscolumns.name,systypes.name,syscolumns.isnullable, syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('x_flow_history')
简便写法: sp_help x_flow_history


--mysql查看所有数据库
show databases
--mysql查看所有表
show tables
--mysql查看表结构
desc t_device

二、 两种临时表格式

全局临时表和本地临时表,全局临时表可以被创建临时表的连接和其它连接同时访问,本地临时表只能被创建这个临时表的连接所访问。
全局临时表的表名以##开头,比如##、##a、##1等都是合法的全局临时表表名;
本地临时表以#开头,比如#、#a、#1都是合法的本地临时表表名。

三、 对空值的处理

isnull(sal, 0) --sqlserver
nvl(sal, 0) --oracle
ifnull(sal, 0) --mysql

四、单表复制

select * into hzm_x_flow_history from x_flow_history   --sqlserver
create table emp2 as select * from emp --oracle

--mysql复制表结构
 create table a like users;      
create table b select * from users limit 0;

--mysql复制表结构以及数据
create table c select * from users;
--显示创表的sql
show create table users\a;      

五、sqlserver设置IDENTITY_INSERT为ON

create table t_test1 (
    id int identity(1, 1),
    username varchar(20),
    sal int
)
GO
SET IDENTITY_INSERT t_test1 ON

六、SQL循环

declare @i int
set @i = 1
while @i < 500
begin 
insert into t_test1(id, username, sal) values(@i, 't' + cast(@i as nvarchar), @i)
set @i = @i + 1
end

七、分页

--sqlserver效率不高
select top(100) * from t_testTop where id not in (select top(1000000) id from t_testTop) 

--稳定性有待验证(不通用)
select top(100) * from t_testTop where id > (SELECT MAX(id) FROM (SELECT TOP(1000000) id FROM t_testTop) AS T)


--oracle
SELECT sal FROM
(
         SELECT emp.*, ROWNUM RN
         FROM (SELECT * FROM emp order by sal desc) emp
         WHERE ROWNUM <= 10
) WHERE RN >= 6 

  --mysql

  select * from t_device limit 1, 5

八、创建主键、序列

--mysql
id int primary key auto_increment
--sqlserver id int primary key identity(1, 1)
--oracle create sequence id_seq id int primary key insert into xx values(id_seq.nextval)



原文地址:https://www.cnblogs.com/hzm112567/p/2848840.html