一、 查看当前库有哪些表以及表结构
--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)