A. sql查詢很快,插入到申明表很慢
可能是由於表的索引不合理或者表的數據量過大,導致插入數據時,資料庫需要做大量的計算,從而導致插入數據變慢。可以嘗試優化表的索引,減少表中的數據量,以提高插入數據的速度。
B. SQL 查詢最後一條記錄
selectt1.takeEffectdt,t2.goods_no,t2.balanceprice
fromt1,t2,(
selectmax(adjustcustid)adj,goods_no
fromt2
groupbygoods_no
)t22
wheret1.adjustcustid=t2.adjustcustid
andt2.adjustcustid=t22.adj
andt2.goods_no=t22.goods_no
C. 知道為什麼SQL查詢語句不能使用*嗎 考驗你們的小細節
作為運行效率來說的話, 有2種情況。
第一種情況, 是返回了太多沒有用處的列,導致網路傳輸的數據過多。
* 要返回所有的列的信息。
如果你表的列很多, 又存在很多 二進制的數據類型的話。
例如有某個 安保系統, 有個 進出門的日誌表。 這個門需要 2個人, 各刷一次卡,才能進入。
這個表包含下面的列:
自增流水、門口代碼、日期時間、第一次刷卡的卡片代碼,第二次刷卡的卡片代碼,第一次刷卡的照片,第二次刷卡的照片,......其他列
現在發現可能有安全問題, 說昨天有東西丟了。
那麼首先就是先
SELECT
日期時間、門口代碼,第一次刷卡的卡片代碼,第二次刷卡的卡片代碼
FROM
表
WHERE
門口代碼 = '那個丟東西房間的門'
AND 日期時間 > 昨天0點
先看看都哪些人刷卡了, 然後再去有重點地去查看那些 可能有問題的 刷卡記錄的 照片信息。
否則你直接
SELECT
*
FROM
表
WHERE
門口代碼 = '那個丟東西房間的門'
AND 日期時間 > 昨天0點
一次就會有太多的數據, 從伺服器 傳遞到你的客戶端。 而這些數據, 又可能是你用不上的。
第二種情況, 是如果檢索的列都包含在索引裡面了, 那麼查詢效率要快很多。
還是上面那個例子。
假如存在有這樣的索引 (門口代碼, 日期時間)
SELECT
日期時間、門口代碼
FROM
表
WHERE
門口代碼 = '那個丟東西房間的門'
AND 日期時間 > 昨天0點
這個查詢, 連表都不需要查詢了, 直接查詢完索引, 就能返回了。
在 SQL Server 中, 可以通過 Include 來包含一個額外的數據到索引上面。
例如:
CREATE NONCLUSTERED INDEX idx_TestDoc
ON 表 (門口代碼, 日期時間)
Include(第一次刷卡的卡片代碼,第二次刷卡的卡片代碼) ;
上面的索引創建完畢的話
SELECT
日期時間、門口代碼,第一次刷卡的卡片代碼,第二次刷卡的卡片代碼
FROM
表
WHERE
門口代碼 = '那個丟東西房間的門'
AND 日期時間 > 昨天0點
也不需要訪問表了, 直接查詢索引, 就能返回了。
這個情況,用 select * 嘛, 是不行的。就要先去訪問好索引, 然後通過索引裡面的 信息, 去表裡面定位到具體的行數據, 最後再檢索出來。
D. PB嵌入式sql查詢時間段數據-高手幫忙
這么寫就對了
datetime day_start,day_end
day_start=datetime(date(em_day_start.text),time("00:00:00"))
day_end=datetime(date(em_day_end.text),time("23:59:29"))
select count(borrow_id)
into :borrow_sum
from borrow
where borrow_date>day_start and borrow_date<day_end;
st_b_sum.text=string(borrow_sum)+" 條"
E. 加快SQL查詢速度
首先是給每個表建索引,這個對查詢很重要哦。另外就是可以試著創建一下簡單的視圖,然後在視圖的基礎上再進行檢索。
F. sqlserver如何查詢上月每天17點到第二天早上9點的數據
可以使用以下SQL語句來查詢上月每天17點到第二天早上9點的數據:SELECT * FROM table_name WHERE date BETWEEN DATEADD(MONTH,-1,GETDATE()) AND DATEADD(DAY,1,DATEADD(HOUR,17,GETDATE())) AND time BETWEEN '17:00:00' AND '09:00:00';
G. sql資料庫轉義符不見了
sql資料庫轉義符不見了是因為你不小心點到了格式化操作。因為格式化的操作是會把sql資料庫裡面的所有數據都進行清除掉了。那麼在這樣的情況下就會出現轉義符不見了的情況。
H. SQL 資料庫常用命令及語法舉例
SQL2000常用命令,語法使用方法
(1) 數據記錄篩選:
sql="select * from 數據表 where 欄位名=欄位值 order by 欄位名 [desc]"
sql="select * from 數據表 where 欄位名 like '%欄位值%' order by 欄位名 [desc]"
sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 [desc]"
sql="select * from 數據表 where 欄位名 in ('值1','值2','值3')"
sql="select * from 數據表 where 欄位名 between 值1 and 值2"
(2) 更新數據記錄:
sql="update 數據表 set 欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"
(3) 刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)
(4) 添加數據記錄:
sql="insert into 數據表 (欄位1,欄位2,欄位3 …) values (值1,值2,值3 …)"
sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表)
(5) 數據記錄統計函數:
AVG(欄位名) 得出一個表格欄平均值
COUNT(*|欄位名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把數據欄的值相加
引用以上函數的方法:
sql="select sum(欄位名) as 別名 from 數據表 where 條件表達式"
set rs=conn.execute(sql)
用 rs("別名") 獲取統的計值,其它函數運用同上。
(5) 數據表的建立和刪除:
CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數據表名稱 (永久性刪除一個數據表)
4. 記錄集對象的方法:
rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁為N條記錄
2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
說明:增加一個欄位(沒有刪除某個欄位的語法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
說明:更改表得的定義把某個欄位設為主鍵。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
說明:把主鍵的定義刪除。
3、建立索引
CREATE INDEX index_name ON table_name (column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。
4、刪除
DROP table_name
DROP index_name
二、的資料形態 DATATYPEs
smallint
16 位元的整數。
interger
32 位元的整數。
decimal(p,s)
p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數
點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
float
32位元的實數。
double
64位元的實數。
char(n)
n 長度的字串,n不能超過 254。
varchar(n)
長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n)
和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是為
了支援兩個字元長度的字體,例如中文字。
vargraphic(n)
可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date
包含了 年份、月份、日期。
time
包含了 小時、分鍾、秒。
timestamp
包含了 年、月、日、時、分、秒、千分之一秒。
三、資料操作 DML (Data Manipulation Language)
資料定義好之後接下來的就是資料的操作。資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update) 、刪除資料(delete)四種模式,以下分 別介紹他們的語法:
1、增加資料:
INSERT INTO table_name (column1,column2,...)
valueS ( value1,value2, ...)
說明:
1.若沒有指定column 系統則會按表格內的欄位順序填入資料。
2.欄位的資料形態和所填入的資料必須吻合。
3.table_name 也可以是景觀 view_name。
INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。
2、查詢資料:
基本查詢
SELECT column1,columns2,...
FROM table_name
說明:把table_name 的特定欄位資料全部列出來
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
三)交叉連接
交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數
據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等
於6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合並成一個結果集合顯示,即執行聯合查詢。UNION的語法格式為:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement為待聯合的SELECT查詢語句。
ALL選項表示將所有行合並到結果集合中。不指定該項時,被聯合查詢結果集合中的重復行將只保留一
行。
聯合查詢時,查詢結果的列標題為第一個查詢語句的列標題。因此,要定義列標題必須在第一個查詢語
句中定義。要對聯合查詢結果排序時,也必須使用第一查詢語句中的列名、列標題或者列序號。
在使用UNION 運算符時,應保證每個聯合查詢語句的選擇列表中有相同數量的表達式,並且每個查詢選
擇表達式應具有相同的數據類型,或是可以自動將它們轉換為相同的數據類型。在自動轉換時,對於數值類
型,系統將低精度的數據類型轉換為高精度的數據類型。
在包括多個查詢的UNION語句中,其執行順序是自左至右,使用括弧可以改變這一執行順序。例如:
查詢1 UNION (查詢2 UNION 查詢3)
INSERT語句
用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:
INSERT INTO EMPLOYEES valueS
('Smith','John','1980-06-10',
'Los Angles',16,45000);
通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。
我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。
如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。
回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。
同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。
對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd)
I. DBA必備的23款最佳SQL管理工具,精選
因為市場上有許多的SQL管理工具,所以要為SQL項目管理選擇工具是一件有挑戰性的事。為大家推薦23款SQL工具的精選列表,希望朋友們喜歡。其中幾款已經在昨天的SQL查詢優化工具一文中,做過推薦。
Aqua Data Studio是一個功能豐富的通用SQL集成開發環境(IDE),它使資料庫開發人員,DBA和數據/業務分析人員能夠從單個界面開發,管理和分析30多個平台的數據。
特徵:
dbForge Studio for SQL Server是一個功能強大的IDE,用於SQL Server管理,管理,開發,數據報告,分析等等。執行復雜資料庫任務的SQL開發人員和DBA可以使用GUI工具來加速幾乎所有資料庫體驗,例如設計資料庫,編寫SQL代碼,比較資料庫,同步模式和數據,生成有意義的測試數據等等。
特徵:
dbWatch是一個完整的資料庫監控和管理解決方案,適用於SQL Server,Oracle,PostgreSQL,Sybase,MySQL和Azure。專為在大型內部部署,混合或雲資料庫環境中進行主動管理和日常維護自動化而設計。
特徵:
Jet Profiler for MySQL是MySQL資料庫伺服器的實時查詢性能和診斷工具。該工具自2009年開發,非常穩定。
特徵:
Adminer是一個用於管理資料庫,表,關系,索引和用戶的SQL管理工具。它支持所有流行的資料庫管理系統,如MySQL,PostgreSQL,SQLite,MS SQL,Oracle和MongoDB。
特徵:
它是一種用於分析微軟SQL Server資料庫結構差異的SQL管理工具。它允許比較資料庫對象,如表,列,索引,外鍵,模式等。
特徵:
EMS SQL Manager允許用戶創建和編輯SQL Server資料庫對象,並創建,修改,執行和保存SQL查詢。
特徵:
它是一個基於JAVA的資料庫管理工具。這種符合JDBC的SQL管理工具允許用戶查看資料庫結構並發出SQL命令。它還支持Firebird,微軟Access,微軟SQL Server,MySQL,Oracle,Sybase等資料庫。
特徵:
SQLite Database Browser是一個開源SQL工具,允許用戶創建,設計和編輯SQLite資料庫文件。它允許用戶顯示由它們和應用本身發出的所有SQL命令的日誌。
特徵:
DBeaver是一個面向開發人員和資料庫管理員的開源資料庫工具。它支持JDBC兼容的資料庫,如MySQL,Oracle,IBM DB2,SQL Server,Firebird,SQLite和Sybase。
特徵:
DbVisualizer Free是一個SQL管理工具。它允許用戶管理各種資料庫,包括Oracle,Sybase,SQL Server,MySQL,Informix,H3和SQLite。
特徵:
HeidiSQL是另一種可靠的SQL管理工具。它使用流行的MySQL伺服器,微軟SQL資料庫和PostgreSQL設計。它允許用戶瀏覽和編輯數據,創建和編輯表,視圖,觸發器和預定事件。
特徵:
FlySpeed SQL Query是所有資料庫用戶和開發人員的數據處理工具。它允許用戶在不熟悉SQL語法的情況下在不同的資料庫伺服器上構建查詢。
特徵:
SQL Diagnostic Manager是Idera開發的性能監控工具。它提供診斷解決方案,幫助用戶評估其SQL Server中的運行狀況和性能。
特徵:
ManageEngine開發的免費SQL性能監控工具。它允許用戶密切關注SQL Server性能!此工具還可以幫助用戶監控SQL Server的性能和可用性。它可以與MS SQL 2012和2014等所有MS SQL版本一起使用。
特徵:
ApexSQL Monitor是一個基於Web的SQL管理應用程序。它為監控多個SQL Server實例提供支持。
特徵:
適用於微軟SQL Server的AppDynamics資料庫管理產品的一種全面SQL工具。它用於監控SQL Server的2000,2005,2008,2012和2014版本。
特徵:
Toad是另一個SQL Server DBMS工具。它通過廣泛的自動化,直觀的工作流程和內置的專業知識最大化了生產力。此SQL管理工具可解決問題,管理更改並提升最高級別的代碼質量。
特徵:
Zenoss提供ZenPacks來管理微軟SQL Server,MySQL,Oracle資料庫和PostgreSQL。每個ZenPack都具有每個平台的特定功能,並提供可用的API來確定應監控的內容。
特徵:
Lepide的SQL Server Storage Manager是一個用於分析SQL Server性能的開源實用程序。它提供了對存儲空間和性能的完全可視性。
特徵:
SQL Server Management Studio Express是一個用於訪問,管理和開發SQL所有組件的開源工具。此工具支持SQL Server的大多數管理任務。
特徵:
SolarWinds Database Performance Analyzer是用於資料庫管理的性能監視和分析工具。它還找出了瓶頸的原因並降低了資料庫操作的總體成本。
特徵:
Sequel Pro是一款快速,易用的資料庫管理工具,適用於MySQL。此SQL管理工具有助於與資料庫進行交互。使用此軟體添加新資料庫,添加新表,添加新行和任何其他類型的資料庫也很容易。
特徵:
J. 在SQL中怎麼查看版本號
方法一:通過代碼
打開sqlserver管理器,連接進入資料庫,然後點擊「新建查詢」。