SQL語句大全—解決方案

2021-12-25 松勤軟體測試

1,用order by select top 30 recid from A order by ricid 如果該欄位不是自增長,就會出現問題


2,在那個子查詢中也加條件:select top 30 recid from A where recid>-1

例2:查詢表中的最後以條記錄,並不知道這個表共有多少數據,以及表結構。

set @s = 'select top 1 * from T   where pid not in (select top ' + str(@count-1) + ' pid  from  T)'

print @s      exec  sp_executesql  @s


3:獲取當前資料庫中的所有用戶表

select Name from sysobjects where xtype='u' and status>=0

4:獲取某一個表的所有欄位

select name from syscolumns where id=object_id('表名')

select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')

兩種方式的效果相同

5:查看與某一個表相關的視圖、存儲過程、函數

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

6:查看當前資料庫中所有存儲過程

select name as 存儲過程名稱 from sysobjects where xtype='P'

7:詢用戶創建的所有資料庫

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')

或者

select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

8:查詢某一個表的欄位和數據類型

select column_name,data_type from information_schema.columns

where table_name = '表名'

9:不同伺服器資料庫之間的數據操作

--創建連結伺服器

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '遠程伺服器名或ip地址 '

exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用戶名 ', '密碼 '

--查詢示例

select * from ITSV.資料庫名.dbo.表名

--導入示例

select * into 表 from ITSV.資料庫名.dbo.表名

--以後不再使用時刪除連結伺服器

exec sp_dropserver  'ITSV ', 'droplogins '

--連接遠程/區域網數據(openrowset/openquery/opendatasource)

--1、openrowset

--查詢示例

select * from openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)

--生成本地表

select * into 表 from openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)

--把本地表導入遠程表

insert openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名

select *from 本地表

--更新本地表

update b

set b.列A=a.列A

from openrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼 ',資料庫名.dbo.表名)as a inner join 本地表 b

on a.column1=b.column1

--openquery用法需要創建一個連接

--首先創建一個連接創建連結伺服器

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '遠程伺服器名或ip地址 '

--查詢

select * FROM openquery(ITSV,  'SELECT *  FROM 資料庫.dbo.表名 ')

--把本地表導入遠程表

insert openquery(ITSV,  'SELECT *  FROM 資料庫.dbo.表名 ')

select * from 本地表

--更新本地表

update b

set b.列B=a.列B

FROM openquery(ITSV,  'SELECT * FROM 資料庫.dbo.表名 ') as a 

inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset

SELECT   *  FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta

--把本地表導入遠程表

insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').資料庫.dbo.表名

select * from 本地表 

相關焦點

  • 經典SQL語句大全
    9、說明:創建視圖:create view viewname as select statement刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句選擇:select * from table1 where 範圍插入:insert into table1(field1,field2
  • 最基本的SQL語句大全
    實際上常見的解決方案是建立如下所示的循環: Randomize RNumber = Int(Rnd*499) +1   While Not objRec.EOF If objRec("ID") = RNumber THEN ... 這裡是執行腳本 ...
  • Mysql sql語句大全
    刪除索引:index create viewname select drop viewname10、說明:幾個簡單的基本的sql語句選擇:* table1語句搞定資料庫分頁select 10 b.* (top from order 排序欄位 ) a,表名 b b.主鍵欄位 = a.主鍵欄位 by declare intend
  • SQL語句大全,所有的SQL都在這裡
    9、說明:創建視圖:create view viewname as select statement 刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句選擇:select
  • SQL語句大全(完整版)
    9、說明:創建視圖:create view viewname as select statement 刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句選擇:select
  • SQL語句解決重複數據並進行單一入庫問題,你值得了解
    02解決方案:這裡有三個解決方法:1、利用ignore關鍵字方法原理:忽略了有唯一索引欄位的相同數據,只添加不同的數據,成功的操作條數是添加的真實條數,若沒有ignore關鍵字會報錯sql為:INSERT IGNORE INTO tb_user (username,ped,edit_time) values("小明",1,2018……
  • 15000 字的 SQL 語句大全
    nvarchar(600)  set @sql=’select top』+str(@end-@start+1)+』+from T where rid not in(select top』+str(@str-1)+』Rid from T where Rid>-1)』  exec sp_executesql @
  • 一道簡單的sql語句題
    結果才發現,數據分析崗位大多注重的是資料庫的能力,比如sql語句的考察,hive的考察,以及一些運營思維的考察,所以第一次面試就很悲劇啦,不過題目還是很有代表性的。其他的不寫了,這裡只分享一個關於sql的題目。1、問題引出現在有兩個數據表,一個數據表記錄司機的信息,比如司機id,司機姓名,司機註冊時間等等,一個數據表記錄一天的訂單情況,比如訂單ID,訂單司機id,訂單時間。
  • 新鮮出爐的SQL語句大全
    語句選擇:select * from table1 where 範圍語句搞定資料庫分頁select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
  • SQL語句的常用語法
    下面就為大家帶來一篇sql語句的常用語法 。個人覺得挺不錯的,學習MYSQL資料庫還是有點幫助的,給大家做個參考吧。
  • MySQL-SQL語句執行流程
    優化器:  按照 MySQL 認為最優的方案去執行。,會先查詢緩存,以這條 sql 語句為 key 在內存中查詢是否有結果,如果有直接緩存,如果沒有,執行下一步。通過分析器進行詞法分析,提取 sql 語句的關鍵元素,比如提取上面這個語句是查詢 select,提取需要查詢的表名為 tb_student,需要查詢所有的列,查詢條件是這個表的 id='1'。然後判斷這個 sql 語句是否有語法錯誤,比如關鍵詞是否正確等等,如果檢查沒問題就執行下一步。
  • SQL 資料庫語句
    9、說明:創建視圖:create view viewname as select statement刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句選擇:select * from table1 where 範圍插入:insert into table1(field1,field2) values(value1
  • PL/SQL動態執行DDL語句
    PL/SQL動態執行DDL語句PL/SQL程序中可以執行DML語句和事物控制等語句,如經常用到select into進行但賦值語句,但是直接執行DDL語句
  • mysql常用sql語句總結
    index)索引種類Key 普通索引;Unique key 唯一索引;(主要起到約束的作用,比如註冊郵箱;)Primary key 主鍵索引;(一張表只能有一個;)Fulltext 全文索引;(中文環境下無效,,要分詞+索引,一般用第三方解決方案
  • SQL語句性能調整之ORACLE的執行計劃
    這個語句的優點就是它的缺點,這樣在用該方法查看執行時間較長的sql語句時,需要等待該語句執行成功後,才返回執行計劃,使優化的周期大大增長。  如果不想執行語句而只是想得到執行計劃可以採用:  Sql> set autotrace traceonly  這樣,就只會列出執行計劃,而不會真正的執行語句,大大減少了優化時間。
  • 優化SQL查詢:如何寫出高性能SQL語句
    執行計劃是資料庫根據SQL語句和相關表的統計信息作出的一個查詢方案,這個方案是由查詢優化器自動分析產生的,比如一條SQL語句如果用來從一個 10萬條記錄的表中查1條記錄,那查詢優化器會選擇「索引查找」方式,如果該表進行了歸檔,當前只剩下5000條記錄了,那查詢優化器就會改變方案,採用 「全表掃描」方式。
  • 優化 SQL 查詢:如何寫出高性能SQL語句
    (點擊上方公眾號,可快速關注)來源:一棵樹www.cnblogs.com/atree/archive/2011/02/13/sql_optimize
  • oracle常用SQL語句(匯總版)
    Oracle資料庫常用sql語句ORACLE 常用的SQL語法和數據對象一.數據控制語句 (DML) 部分1
  • Oracle SQL精妙SQL語句講解
    INTO t_lock (ID) VALUES (v_cnt); COMMIT; --提交並且釋放lock END; -- 硬解析/軟解析 DROP TABLE t_hard PURGE; CREATE TABLE t_hard (ID INT); SELECT * FROM t_hard; DECLARE sql
  • 如何解決PL/SQL中文亂碼問題
    打開PL/SQL執行sql語句,中文顯示亂碼??? 如何解決上述問題,辦法如下: 1)輸入sql語句select userenv('language') from dual 按下F8執行語句,查看資料庫字符集; 2)輸入sql語句select * from V$NLS_PARAMETERS查看本地字符集;