當前位置:首頁 » 編程語言 » sql如何計算相關性
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql如何計算相關性

發布時間: 2022-06-11 08:12:26

sql2005兩個表的相關性問題

像你這種情況,最好不要有冗餘欄位,如果一個表欄位過多,用一個id 把兩個表關聯起來就行了,就是A(id,col1,col2,col3) B(id,col4) 這樣。如果不想改表結構就做觸發器吧 當A有操作時,同時操作B表。

⑵ SQL裡面如何計算兩列地址(中文)的相似度

相似度公式:Kq*q/(Kq*q+Kr*r+Ks*s)(Kq>0,Kr>=0,Ka>=0)設q是字元串1和字元串2中都存在的單詞的總數,s是字元串1中存在,字元串2中不存在的單詞總數,r是字元串2中存在,字元串1中不存在的單詞總數,t是字元串1和字元串2中都不存在的單詞總數。

createFUNCTION[dbo].[F_strcompare](@str1VARCHAR(8000),
@str2VARCHAR(8000))
RETURNSVARCHAR(10)
AS
BEGIN
DECLARE@iINT,
@jINT,
@kINT,
@retVARCHAR(10)

SELECT@i=MAX(strlen),
@j=MIN(strlen),
@k=0
FROM(SELECTstrlen=Len(@str1)
UNION
SELECTstrlen=Len(@str2))t

IF(@j=0)
RETURN'0'

WHILE@j>0
BEGIN
IFSubstring(@str1,@j,1)=Substring(@str2,@j,1)
SET@k=@k+1

SET@j=@j-1
END

SET@ret=Rtrim(CAST(@k*100.0/@iASNUMERIC(3,0)))

RETURN@ret
END

⑶ sql表建立相關性

你的這個表設計的有問題,不符合第三範式。
如果levelcode是ID格式化後的內容並且有據可循,那麼我推薦不需要這個欄位,而是在業務層進行計算和現實,不需要放在資料庫欄位里存儲,就好比有了:姓和名2個欄位,為什麼還要全名呢?根據姓+名就好了。

我不知道你這個問題的目的是要做什麼。

如果你需要插入的時候自動根據ID,創建levelcode,那麼最好在業務層組織數據然後插入

如果你查詢的時候在資料庫里查詢,那麼就通過視圖。

不過我還是建議,無論是查詢還是插入或者修改,都通過業務層的代碼進行組織。

⑷ SQL SERVER 2008 如何查看對象的相關性

在2008中,在表對象右鍵,可以找到view dependences的選項,就可以看見所有相關涉及到的對象。

⑸ SQL 搜索結果相關性排序問題

如果先按標題中同時出現"資料庫"和"Sql"
>>
內容中同時出現"資料庫"和"Sql"
>>
標題中出現"資料庫"或"Sql"
>>內容中出現"資料庫"或"Sql"
再按時間降序只能用添加輔助列的方法實現:
Select
Title,Content,case
when
Title
like
'%資料庫%'
and
Title
like
'%Sql%'
then
1
when
Content
like
'%資料庫%'
and
Content
like
'%Sql%'
then
2
when
Title
like
'%資料庫%'
or
Title
like
'%Sql%'
then
3
when
Content
like
'%資料庫%'
or
Content
like
'%Sql%'
then
4
end
as
priority
from
Article
order
by
priority,tTime
desc

⑹ sql 語句

select * from 資料庫名.dbo.sysobjects where xtype = 'U' order by name asc
差資料庫下的表名

SELECT * FROM 資料庫名.dbo.SysColumns WHERE id=Object_Id('資料庫名.dbo.表名')

sp_helpdb ----------查本伺服器中所有資料庫 可跟庫名
例:sp_helpdb 庫名
-------------------------------------------------------------
sp_databases -------------查看本伺服器中可用的資料庫
--------------------------------------------------------------------
sp_helpfile -------------------查看當前工作著的資料庫
-----------------------------------------------------------
sp_helpfilegroup ---------------查看當前工作著的組的信息。可加參數,跟組名
例:sp_helpdb 庫名
----------------------------------------------------------------
sp_renamedb -----------改資料庫名
例:sp_renamedb 舊庫名,新庫名
----------------------------------------------------------------
select groupname from sysfilegroups where status=24
---------查看文件組 =8是查只讀文件組 =16是查默認文件組 =24是查即只讀又默認
---------------------------------------------------------------------------
sp_dboption ----------修改資料庫選項值
例:sp_dboption 庫名 選項 值
值決定真假 一般用:true/faule 或off/on表示
選項一般常用為:use only(資料庫擁有者)single user(單一用戶)read only(只讀)
--------------------------------------------------------------------------
dbcc shrinkdatabase ---------收縮資料庫
例:dbcc shrinkdatabase (庫名,10)
收縮庫,剩餘空間保留10%,後面如果不加notruncate,則釋放空間操作系統,
加truncateonly,歸還空間給操作系統,但忽略所給的百分比數值。
----------------------------------------------------------------------
dbcc shrinkfile ---------收縮文件
用法與ddcc shrinkdatabase相同。
----------------------------------------------------------------------
alter database ---------------修改資料庫
用法:這是起始句,告訴要做的是修改資料庫,然後再接要做什麼工作。每次只做一項工作
alter database 庫名
add file 文件名....to filegroup 文件組名
----------------增加庫文件,格式與建庫時括弧里指定大小時的格式一樣
add log file 文件名 -------------增加日誌文件
remove file 文件名 ---------刪除庫內的文件
add filegroup 文件組名 -----------增加一個文件組
modify file 文件名 -------------修改文件屬性
modify filegroup 組名 ------------修改文件組屬性
---------------------------------------------------------------------------
drop database --------------刪除資料庫
例:drop database 庫名1,庫名2 ---------可同時刪除兩個庫
------------------------------------------------------------------------
create table 表名
(列名 類型,
列名 類型) -------------------建立表
--------------------------------------------------------------------
select * from 表名 ---------查詢表結構
--------------------------------------------------------------------
select @@dbts ----------查詢最後一次操作
--------------------------------------------------------------------
insert into 表名
(列名,列名)
values (變數,變數.....) ------------向表中插入數據
如省略列名,則必須把每列的變數填全,不可缺少。可以省略 into
--------------------------------------------------------------------
sp_addtype 自定義類型名 系統類型名 -------用戶自定義類型
--------------------------------------------------------------------
sp_droptype 自定義類型名 -----------刪除自定義類型
如有資料庫正在使用該自定義類型,則不能刪除
--------------------------------------------------------------------
alter table ---------修改表結構
用法: alter table 表名
alter column 列名 類型 ---------修改列的類型
drop column 列名 --------刪除列
add (column) 列名 --------增加列,實際用時不加 column
-----------------------------------------------------------------
sp_help -------------查看資料庫中對象信息
用法: sp_help 表名 ---------------查表的信息
或 sp_help 庫名 --------------查庫信息
後面可以跟庫名或者表名,是查資料庫或者表的信息
-----------------------------------------------------------------
sp_spaceused --------查看對象佔用的空間信息
用法: sp_spaceused ----------查當前庫佔用空間信息
或 sp_spaceused 表名 ----------查指定表佔用空間信息
後面可以加表名查看錶占空間信息。如不加,則查看當前資料庫。
------------------------------------------------------------------
sp_depends ------------查看對象的相關性
用法: sp_depends 表名 -----------後面加表名
------------------------------------------------------------------
sp_rename ---------------重新命名
用法: sp_rename 舊表名,新表名 ---------改表名
或 sp_rename '表名.舊列名','新列名' 'column' -------修改列名
--------------------------------------------------------------------
create index --------------創建索引
用法: create index 索引名 on 表名 (列名) ------創建索引
或: create unique clustered index 索引名 on 表名 (列名)
------創建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引
---非簇集索引用:nonclustered
----------------------------------------------------------------------
select top ---------查表中前幾行
用法: select top 3 * from 表名 -------查表中前三行
或: select top 10 percent * from 表名 -------顯示表中前10%數據
------------加入percent是百分比的意思。只以大於的最小整數,無小數
----------------------------------------------------------------------
select 列名,列名,列名 from 表名 -------顯示表中特定的列
----------------------------------------------------------------------
select *,列名 from 表名 ----------查詢表中所有,後面再加一列
----------------------------------------------------------------------
select distinct ----------查詢不重復數據 distinct用於去掉重復數據
用法: select distinct * from 表名 ---------查表中不重復數據
或: select distinct * into 新表名 from 舊表名 ------查舊表中不重復數據同時生成新表
-------------------------------------------------------------------------------------
select 列名+列名 from 表名 -------允許有計算式出現,顯示無列名的計算結果
如想加列名,則: select 列名+列名 as 新列名 from 表名
-------------------------------------------------------------------------
select 年齡,聯系電話,cast (年齡 as varchar(2))+聯系電話 from 表名
--------把整型數據年齡轉化為字元型與字元型數據聯系電話相加
----------------------------------------------------------------------------
ctrl+o(字母O) --------清空數據。空值與別的數據運算結果為空
----------------------------------------------------------------------------
select 原始列名 別名 from 表名
select 原始列名 as 別名 from 表名
select 別名=原始列名 from 表名
--------指定別名的三種方法。非法符號可''或[]引起來,不得直接使用。
----------------------------------------------------------------------------
select * from 表名
where 年齡 between 20 and 30 ---------顯示年齡在20到30之間的人
-------between是從條件一到條件二之間的限制
-----------------------------------------------------------------------
select * from 表名
where 年齡 in (20,21,22) ---------顯示年齡為20、21、22的人
--------in是限制在這些條件內的,是顯示一個取值范圍
-----------------------------------------------------------------------
select * from 表名
where 聯系電話 like '[1-3]%' --------查電話是1-3開頭的人
--------like是像這些條件的語句,能用通配符:%、_、[]、[^]
--------意思分別代表:所有字元、一個字元、一位上可取值、一位上不可取值
----------------------------------------------------------------------
select * from 表名
where 姓名 like '[e[]%'
or 姓名 like '%e]'
escape 'e' ------------顯示以『[』開頭或以『]』結尾的所有數據,中間有不顯示
----------escape ''是指定通配符
-----------------------------------------------------------------------------
order by ---------給數據排序
用法: select * from 表名
order by 年齡 -----------排序顯示年齡。默認為升序(asc)要降序必須加desc
------------------------------------------------------------------------
select distinct top 3 from 表名
order by 年齡 desc --------顯示最大的三種年齡
-------------------------------------------------------------------------
select * from 表名
where 年齡 in (select distinct top 3 年齡 from 表名 order by 年齡)
order by 年齡 -----------顯示年齡最小的所有人,並排序
-------------------------------------------------------------------------
select 姓名,
case
when MCSE成績 >=80 and MCSE成績<=100
then '考的不錯'
when MCSE成績 >=60 and MCSE成績<80
then '考的一般'
when MCSE成績 >=0 and MCSE成績<60
then '不及格'
when MCSE成績 is null
then '這小子沒考試'
else '異常數據'
end
MCSE成績
from 表名
-----------判斷語句 null是空值的意思,不能用等號連接,只能用is
-----------case到end為一列里的判斷,case在這里是取值,結果用於輸出,不顯示原值
-----------------------------------------------------------------------------
select 列名1,
case 列名2
when 1 then '男生'
when 0 then '女生'
else '未知'
end
from 表名
--------這里case取列名,是用於這一列每項取值比較,在這里列名2用的是bit型數據
-------------------------------------------------------------------------
select * into 庫1.表1 from 庫2.表2
-----------把庫2中表2移到庫1中
------------------------------------------------------------------------
數據維護三個命令:
insert ---------向表中插入數據
update ---------修改表中的數據
delete ---------刪除表中的數據
------------------------------------------------------------------------
insert into 表名 -----------(into可有可無)
(列1,列2,列3,列4) -----------表的原始列,用括弧括起來
values ----------有這條命令只能插入一條數據
(數1,數2,數3,數4) ----------插入的數值
---------可以省略原始列清單,但必須把所有列都賦值
------------------------------------------------------------------------
insert into 表1
(列1,列2,列3,列4)
select * from 表2 where sex=1
----------將表2中sex列等於1的數據信息插入表1中
-------------------------------------------------------------------------
update 表名
set 姓名='丁一'
where 姓名='李一' ----------把表中姓名叫李一的改為丁一。
------------where後面跟定位的列與值
-------------------------------------------------------------------------
update 表名
set 學號=14,
姓名=陳強
where 學號=1 ------------把學號為1的同學改為學號14,姓名陳強
-----------------------------------------------------------------------
update 表名
set 學號=年齡+7,
姓名='陳一強',
年齡=29
where 學號=14
-------把學號為14的同學資料改為年齡加七賦給學號姓名改為陳一強,年齡改為29
-------如果沒用where定位,則修改全部值
------------------------------------------------------------------------
delete 表名
where 學號>30 ---------把學號大於30的資料刪除
--------如不指定條件,則刪表內所有數據。這是記錄日誌文件的操作
----------------------------------------------------------------
truncate table 表名
-------清空表。不記錄日誌文件的操作。
--------------------------------------------------------------------
create view 圖名 -------------新建視圖
用法: create view 圖名
as
select 列名 from 表名
------------------------------------------------------------------------------
syscomments ------------這個表存著視圖代碼的信息
------------------------------------------------------------------------------
alter view 圖名
with encryption
as
select 列名 from 表名 -----------用with encyption語句給視圖原代碼加密
-------------不可恢復,除非保留源代碼
------------------------------------------------------------------------------
sp_helptext 圖名 -----------查看視圖源代碼
-----------------------------------------------------------------------------
select text from syscomments
where id =(select id from sysobjects where name ='圖名')
---------查視圖的代碼
-----------------------------------------------------------------------------
create view 圖名
as
select * from 源圖名 ------------基於源圖創建新視圖
-----------------------------------------------------------------------------
create view 圖名
as
select 列1 as 新列1,列2 新列2,列3=新列3 ---------起別名的三種方法
from 表名 -----------在新視圖中為列起別名,則所見的是新起的別名
-----------------------------------------------------------------------------
sp_depends 表名 -----------查該表的相關性,有多少表、圖與之相關。
-------------------------------------------------------------------------------
create view 圖名
select * from 表名
where 年齡<20
with check option ---------強制插入數據符合年齡小於20的條件,加在where後面
-----------是約束insert和update語句的
-------------------------------------------------------------------------------
select 男公民.姓名,女公民.姓名 from 男公民,女公民
where 男公民.配偶編號=女公民.編號
------------查結婚男女。較原始的語法,後被下列語法取代
或: select 男公民.姓名,女公民.姓名
from 男公民 join 女公民 on 男公民.配偶編號=女公民.編號
-------新的形式,在join之前省略了inner語句。
--可用左連接(*=或left outer join)右連接(=*或right outer join)全連接(full outer)
----where不能做全連接,但可以做連接的約束
-------------------------------------------------------------------------------
select * from 男公民
where 配偶編號 in (select 編號 from 女公民)
--------嵌套查詢,查配偶編號在女公民表中編號列中出現過的
-------------------------------------------------------------------------------
select distinct 客戶表.*
from (select * from 訂單表 where 訂單年份=2004) as d,客戶表
where d.客戶號=客戶表.客戶號
-----子查詢放在from身後,也可以放在where身後
----------------------------------------------------------------------------
select (select 子查詢語句) from 表名
-------這種格式要求子查詢查出的必須是唯一的數據
----------------------------------------------------------------------------
select a.員工編號,a.員工姓名,b.員工姓名 as 領導姓名
from 員工表 as a,員工表 as b
where a.部門領導編號=b.員工編號

select a.員工編號,a.員工姓名,b.員工姓名 as 領導姓名
from 員工表 as a join 員工表 as b on a.部門領導編號=b.員工編號

select a.員工編號,a.員工姓名,
(select 員工姓名 from 員工表 as b where a.部門領導編號=b.員工編號) as 領導姓名
from 員工表 as a
---------三種查詢員工領導的方法
------如果裡面總經理領導編號是這空的,這種查詢方法不顯示空值。如要顯示,則用左連接
-----------------------------------------------------------------------------
sp_tables -----------查當前資料庫中的所有表
------------------------------------------------------------------------------
select * from 男公民
union ------------聯合。自動升序排序,並去掉重復語句
select * from 女公民
-----查詢結果是男公民和女公民表的總集。如果不去掉重復的,則用 union all
-----如果要降序排,則要在最後一個select語句後面加上order by 列名 desc
-----用union查詢時,結果集內列數必須相同,並且數據類型必須相互兼容
-----多表聯合查詢加order by時,後面必須跟第一個結果集的列名
------------------------------------------------------------------------------
select top 2 成績 from 表
order by 成績 desc ---------查前兩種最好成績
-------------------------------------------------------------------------------
select top 2 with ties 成績 from 表
order by 成績 desc ---------查前兩種最好成績所有人的信息
-------------------------------------------------------------------------------
select top 1 a.成績
from (select distinct top 3 成績 from 表 order by 成績 desc) as a
order by 成績 ---------嵌套查詢,查考成績第三名的值
-------------------------------------------------------------------------------
select max (SQL成績),min (MCSE成績) from 表
-----查SQL最高分和MCSE最低分
-----常用的函數:max(最大),min(最小),sum(總和),avg(平均值)
-----count(*)統計表內數據的行數。count(列名)統計表內列里非空值的行數
-------------------------------------------------------------------------------
select count(*) from 表名 --------查表內有多少行數據
-------------------------------------------------------------------------------
select count(列名) from 表名 ------------查表內列中有多少行非空數據
-------------------------------------------------------------------------------
select min(成績),max(成績),sum(成績),avg(成績),count(*),count(成績) from 表名
--------返回顯示數據只有一行。中間不能加列名,如想加,可以在後面加列。
-------------------------------------------------------------------------------
group by ---------分組統計,後面跟的是列名
---------上面select檢索多少原始列,後面group by就要跟多少原始列
例: select 性別,avg(年齡) from 表名
group by 性別 -------統計性別的平均年齡
-------------------------------------------------------------------------------
select 年齡,avg(年齡) from 表名
where 年齡<23
group by 年齡 -------查年齡小於23歲的各年齡段平均年齡
-------或也可用如下方法:
select 年齡,avg(年齡) from 表名
group by 年齡
having<23 -------having是統計之後的條件,where是統計之前的條件
--------having是做為group by的子句出現的,不能單獨使用
------------------------------------------------------------------------------
select 年齡,avg(年齡) from 表名
where 年齡<23
group by all 年齡 -------顯示所有年齡,但只統計年齡小於23的,大於23的顯示空值
------------------------------------------------------------------------------
select 品牌,顏色,sum(價格),avg(價格) from 汽車表
group by 品牌,顏色
with cube -------多維統計,按不同品牌不同顏色統計,也是group by的子句
--------其結果出現把各品牌統計一下,最後再統計所有品牌、所有顏色的總統計
------------------------------------------------------------------------------
select 品牌,顏色,sum(價格),avg(價格) from 汽車表
group by 品牌,顏色
with rollup ------只按第一列統計,也是group by的子句
---------即統計品牌各顏色和所有品牌所有顏色的總統計
------------------------------------------------------------------------------
select 品牌,顏色,價格 from 汽車表
compute sum(價格),avg(價格) ----------出現兩個結果集
------------查原始列,另外統計所有的總和與平均值
-------------------------------------------------------------------------------
select 品牌,sum(價格),avg(價格) from 汽車表
group by 品牌 ------只對汽車品牌進行統計。進行分組的列不一定用來統計
------------------------------------------------------------------------------
select 品牌,顏色,價格 from 汽車表
order by 品牌
compute sum(價格),avg(價格) by 品牌
--------按品牌分組統計。分別顯示品牌各款,然後再顯示函數計算值
------------------------------------------------------------------------------
exists --------存在。相當於一個判斷開關。說對了執行,說錯了放棄
用法: select * form 表名
where exists (select * from 表名 where 性別='男')
------如果存在性別為男的,執行查詢。如果不存在,則不執行命令。
-----------------------------------------------------------------------------
數據完整性:1.實體完整性----用unique(唯一)或主鍵控制,數據不能重復
2.值域完整性----用check控制。控制的是列中不能有非法數據
3.引用完整性----一列的取值完全依賴於前一列時,用這個。
4.用戶自定義完整性
------------------------------------------------------------------------------
create table 表名
(列1 int primary key, --------設置列級主鍵,緊跟在設置列的後面。
列2 int)
-------------------------------------------------------------------------------
create table 表名
(列1 int,
列2 int,
primary key (列1)) --------設置表級主鍵,放在建表語句的最後面。
-------------------------------------------------------------------------------
create table 表名
(列1 int constraint pk_表 primary key,
列2 int)
--------把列1設為主鍵,並且起名叫:pk_表。constraint是命名的命令
create table 表名
(列1 int,
列2 int,
列3 int,
constraint pk_表 primary key (列1,列2))
-------把列1和列2合起來設為表級的聯合主鍵,並起名叫pk_表
sp_helpconstraint ----------查表中約束的信息
用法: sp_helpconstraint 表名
alter table 表名
drop 約束名 ---------------刪除約束
--------drop默認刪的是約束,所以不用指定要刪什麼東西,直接給約束名就行

還有好多,寫不下了。等有機會在給你吧。

⑺ SQL怎麼查看視圖相關性

在資料庫中的查詢分析器重,使用sp_helptext 試圖名 按F5或點執行就可以得到這個試圖的源語句,通過看源語句可以看出這個試圖是由哪幾個表關聯,關聯的條件以及顯示欄位取值的。

⑻ sql server沒有求相關系數的函數

sql2005有沒有類似excel CORREL的函數,實現相關系數的計算
excel中的相關系數是可以用CORREL 函數計算出來。
假設的兩組數據為:A1:A7和B1:B7,在C1輸入公式=CORREL(A1:A7,B1:B7)即可。
CORREL 函數語法具有下列參數 :
CORREL(array1, array2)

Array1 必需。第一組數值單元格區域。

Array2 必需。第二組數值單元格區域。

其中 x 和 y 是樣本平均值 AVERAGE(array1) 和 AVERAGE(array2)。

⑼ sql表關系相關

你好
那就需要改代碼了唄
要不然代碼也不知道從哪個表獲取信息啊
感覺你的問題沒描述清楚。
你問問你身邊的人,
看看他們能看懂你描述的問你題不。

⑽ sql 怎樣計算各門店關聯性最高的商品

select A .name ,B.name,C.name from A inner join B on(A.yid=B.Yid)inner join (B.yid=C.Yid) where (你的條件。。。)