當前位置:首頁 » 編程語言 » sql語句中的開根號
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql語句中的開根號

發布時間: 2023-01-19 15:22:30

❶ 我在sql 2008里有一張表大概是16行4列。也可以說一個點的三個坐標,然後

如果你的意思是4列中有除了主鍵列外其餘3列是坐標

16行就是16個坐標 第一行為參照點

那麼 假設你的表如圖 4列分別是 id,x,y,z 新表加一個列l

selectid,x,y,z,SQRT(POWER(x,2)+POWER(y,2)+POWER(z,2))from舊表

power(x,2)是x的2次方 sqrt 表示開根號

❷ SQL查詢語句

SQL查詢語句大全

SQL語句無論是種類還是數量都是繁多的,很多語句也是經常要用到的,SQL查詢語句就是一個典型的例子,無論是高級查詢還是低級查詢,SQL查詢語句的需求是最頻繁的。那麼SQL查詢語句有哪些?下面跟我一起來看看吧!

一、簡單查詢語句

1. 查看錶結構

SQL>DESC emp;

2. 查詢所有列

SQL>SELECT * FROM emp;

3. 查詢指定列

SQL>SELECT empmo, ename, mgr FROM emp;

SQL>SELECT DISTINCT mgr FROM emp; 只顯示結果不同的項

4. 查詢指定行

SQL>SELECT * FROM emp WHERE job='CLERK';

5. 使用算術表達式

SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp;

nvl(comm,1)的意思是,如果comm中有值,則nvl(comm,1)=comm; comm中無值,則nvl(comm,1)=0。

SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal為別名,可按別名排序)

SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';

6. 使用like操作符(%,_)

%表示一個或多個字元,_表示一個字元,[charlist]表示字元列中的任何單一字元,[^charlist]或者[!charlist]不在字元列中的任何單一字元。

SQL>SELECT * FROM emp WHERE ename like 'S__T%';

7. 在where條件中使用In

SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');

8. 查詢欄位內容為空/非空的語句

SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;

9. 使用邏輯操作符號

SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';

10. 將查詢結果按欄位的值進行排序

SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部門升序,並按薪酬降序)

二、復雜查詢

1. 數據分組(max,min,avg,sum,count)

SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;

SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp));

SQL>SELEC COUNT(*) FROM emp;

2. group by(用於對查詢結果的分組統計) 和 having子句(用於限制分組顯示結果)

SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;

SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;

對於數據分組的總結:

a. 分組函數只能出現在選擇列表、having、order by子句中(不能出現在where中)

b. 如果select語句中同時包含有group by, having, order by,那麼它們的順序是group by, having, order by。

c. 在選擇列中如果有列、表達式和分組函數,那麼這些列和表達式必須出現在group by子句中,否則就是會出錯。

使用group by不是使用having的前提條件。

3. 多表查詢

SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno;

SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal;

4. 自連接(指同一張表的連接查詢)

SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;

5. 子查詢(嵌入到其他sql語句中的select語句,也叫嵌套查詢)

5.1 單行子查詢

SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查詢表中與smith同部門的人員名字。因為返回結果只有一行,所以用「=」連接子查詢語句

5.2 多行子查詢

SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查詢表中與部門號為10的工作相同的員工的姓名、工作、薪水、部門號。因為返回結果有多行,所以用「IN」連接子查詢語句。

in與exists的區別: exists() 後面的子查詢被稱做相關子查詢,它是不返回列表的值的。只是返回一個ture或false的結果,其運行方式是先運行主查詢一次,再去子查詢里查詢與其對 應的結果。如果是ture則輸出,反之則不輸出。再根據主查詢中的每一行去子查詢里去查詢。in()後面的子查詢,是返回結果集的,換句話說執行次序和 exists()不一樣。子查詢先產生結果集,然後主查詢再去結果集里去找符合要求的欄位列表去。符合要求的輸出,反之則不輸出。

5.3 使用ALL

SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);查詢工資比部門號為30號的所有員工工資都高的員工的姓名、薪水和部門號。以上兩個語句在功能上是一樣的,但執行效率上,函數會高 得多。

5.4 使用ANY

SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);查詢工資比部門號為30號的任意一個員工工資高(只要比某一員工工資高即可)的員工的姓名、薪水和部門號。以上兩個語句在功能上是 一樣的,但執行效率上,函數會高得多。

5.5 多列子查詢

SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');

5.6 在from子句中使用子查詢

SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno;

5.7 分頁查詢

資料庫的每行數據都有一個對應的行號,稱為rownum.

SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2="" where="" rn="">=6;

指定查詢列、查詢結果排序等,都只需要修改最里層的子查詢即可。

5.8 用查詢結果創建新表

SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;

5.9 合並查詢(union 並集, intersect 交集, union all 並集+交集, minus差集)

SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';

合並查詢的執行效率遠高於and,or等邏輯查詢。

5.10 使用子查詢插入數據

SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2)); 先建一張空表;

SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10; 再將emp表中部門號為10的數據插入到新表myEmp中,實現數據的批量查詢。

5.11 使用了查詢更新表中的數據

SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';

簡介

SQL語言1974年由Boyce和Chamberlin提出,並首先在IBM公司研製的關系資料庫系統SystemR上實現。由於它具有功能豐富、使用方便靈活、語言簡潔易學等突出的優點,深受計算機工業界和計算機用戶的歡迎。1980年10月,經美國國家標准局(ANSI)的資料庫委員會X3H2批准,將SQL作為關系資料庫語言的美國標准,同年公布了標准SQL,此後不久,國際標准化組織(ISO)也作出了同樣的決定。

SQL從功能上可以分為3部分:數據定義、數據操縱和數據控制。

SQL的核心部分相當於關系代數,但又具有關系代數所沒有的許多特點,如聚集、資料庫更新等。它是一個綜合的、通用的、功能極強的關系資料庫語言。其特點是:

1、數據描述、操縱、控制等功能一體化。

2、兩種使用方式,統一的語法結構。SQL有兩種使用方式。一是聯機交互使用,這種方式下的SQL實際上是作為自含型語言使用的。另一種方式是嵌入到某種高級程序設計語言(如C語言等)中去使用。前一種方式適合於非計算機專業人員使用,後一種方式適合於專業計算機人員使用。盡管使用方式不向,但所用語言的語法結構基本上是一致的。

3、高度非過程化。SQL是一種第四代語言(4GL),用戶只需要提出「干什麼」,無須具體指明「怎麼干」,像存取路徑選擇和具體處理操作等均由系統自動完成。

4、語言簡潔,易學易用。盡管SQL的'功能很強,但語言十分簡潔,核心功能只用了9個動詞。SQL的語法接近英語口語,所以,用戶很容易學習和使用。

功能

SQL具有數據定義、數據操縱、和數據控制的功能。

1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式(Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。

2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。

3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。

語句結構

結構化查詢語言包含6個部分:

1、數據查詢語言(DQL: Data Query Language):其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語句一起使用。

2、數據操作語言(DML:Data Manipulation Language):其語句包括動詞INSERT、UPDATE和DELETE。它們分別用於添加、修改和刪除。

3、事務控制語言(TCL):它的語句能確保被DML語句影響的表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存點)命令、ROLLBACK(回滾)命令。

4、數據控制語言(DCL):它的語句通過GRANT或REVOKE實現許可權控制,確定單個用戶和用戶組對資料庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。

5、數據定義語言(DDL):其語句包括動詞CREATE,ALTER和DROP。在資料庫中創建新表或修改、刪除表(CREATE TABLE 或 DROP TABLE);為表加入索引等。

6、指針控制語言(CCL):它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用於對一個或多個表單獨行的操作。

語言特點

SQL風格統一

SQL可以獨立完成資料庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立資料庫、査詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作,這就為資料庫應用系統開發提供了良好的環境,在資料庫投入運行後,還可根據需要隨時逐步修改模式,且不影響資料庫的運行,從而使系統具有良好的可擴充性。

高度非過程化

非關系數據模型的數據操縱語言是面向過程的語言,用其完成用戶請求時,必須指定存取路徑。而用SQL進行數據操作,用戶只需提出「做什麼」,而不必指明「怎麼做」,因此用戶無須了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不但大大減輕了用戶負擔,而且有利於提高數據獨立性。

面向集合的操作方式

SQL採用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。

以同一種語法結構提供兩種使用方式

SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用於聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對資料庫進行操作。作為嵌入式語言,SQL語句能夠嵌入到高級語言(如C、C#、JAVA)程序中,供程序員設計程序時使用。而在兩種不同的使用方式下,SQL的語法結構基本上是一致的。這種以統一的語法結構提供兩種不同的操作方式,為用戶提供了極大的靈活性與方便性。

語言簡潔,易學易用

SQL功能極強,但由於設計巧妙,語言十分簡潔,完成數據定義、數據操縱、數據控制的核心功能只用了9個動詞:CREATE、ALTER、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。且SQL語言語法簡單,接近英語口語,因此容易學習,也容易使用。

;

❸ 在SQL語句中怎樣將計算結果開根號

1.首先要知道,oracle中開n次方的方法
select power(exp(1),ln(27)/3) from al ;--27的3次方根
2.其次要知道,orcle中分組求積的方法:

select exp(sum(ln(列))) from 表

--知道了這倆點,相信樓主也會計算了。

power()、exp()sqlserver中也可以用,
ln()函數應該也有吧,你試試。

❹ SQL一些小小小問題

問題2:
--用T-SQL流程式控制制語句編寫程序,求斐波那契數列中小於100的所有數(斐波那契數列1,2,3,5,8,13.....)

declare @i int
declare @j int
declare @t int
declare @s varchar(2000)
set @i=1
set @j=2
set @s=''
set @s=cast(@i as varchar(10))+','+cast(@j as varchar(10))
while (@j<100)
begin
set @t=@j
set @j=@j+@i
set @i=@t
if(@j<100)
set @s=@s+','+cast(@j as varchar(10))
end
print @s

---結果 1,2,3,5,8,13,21,34,55,89

問題3
create function [dbo].[getmax](@a int,@b int, @c int)
returns int
as
begin
declare @max int

if @a>@b
begin
if @a>@c
set @max=@a
else
begin
if @b>@c
set @max=@b
else
set @max=@c
end
end
else
begin
if @b<@c
set @max=@c
else
set @max=@b
end

return @max

end

--------------或者*-----------------
create function [dbo].[getmax1](@a int,@b int, @c int)
returns int
as
begin
declare @max int
select @max=max(f1)from (select @a as f1 union all select @b as f1 union all select @c as f1 ) as a

return @max

end

❺ SQL語句實現關系代數中的「除法」

給定關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算可以得到一個新的關系P(X),P是R中滿足下列條件的元組在X 屬性列上的投影: 元組在X上的分量值x的像集Y(x)包含S在Y上的投影的集合。

第一步:找出關系R和關系S中相同的屬性,即Y屬性。在關系S中對Y做投影(即將Y列取出);

第二步:被除關系R中與S中不相同的屬性列是X,關系R在屬性X上做取消重復值的投影;

第三步:求關系R中X屬性對應的像集Y;

第四步:判斷包含關系,R÷S其實就是判斷關系R中X各個值的像集Y是否包含關系S中屬性Y的所有值。

R(X,Y)÷S(Y,Z)的運算用結構化語言SQL 語句可表達為下列形式:

❻ 用SQL怎麼計算1-1000以內所有質數之和。

declare @num int --數值以內的質數和declare @sum int --質數和set @num = 1000 --100以內的指數和set @sum =0 --質數總和if @num % 2 =0 --如果是偶數轉為奇數進行運算 與下面的減2相對稱begin set @num = @num -1 --如果是偶數就變為奇數endwhile @num >= 3 --2比較特殊 2即是奇數又是偶數 begin declare @i int --變數 declare @sqltNum int --對循環的數值開根號得到的數 declare @val int --變數 替換@num set @i = 2 --設置變數值 set @val = @num --賦值 set @sqltNum =SQRT(@num) --對傳入的數字開根號 while @i<=@sqltNum begin if @num % @i = 0 begin set @val=0 break end else begin set @i+=1 continue end end set @sum = @sum+@val set @num = @num -2 --質數都是奇數 end select (@sum+2) --2比較特殊 2即是奇數又是偶數,+2是因為是從3開始計算的

❼ sql語句問題,select語句求幾何平均值,即疊乘之後開根號

1.首先要知道,oracle中開n次方的方法

selectpower(exp(1),ln(27)/3)fromal;--27的3次方根

2.其次要知道,orcle中分組求積的方法:

selectexp(sum(ln(列)))from表

--知道了這倆點,相信樓主也會計算了。




power()、exp()sqlserver中也可以用,

ln()函數應該也有吧,你試試。

❽ 如何利用sql server 2008 計算一個數的多次方根,木子中李求高人啦。

CREATE FUNCTION powToN
(
@expression decimal(15,6), --需要開方的數
@number decimal(13,6) --開方的次數
)
RETURNS decimal(15,6)
AS
BEGIN
declare @char nvarchar(15) --把開方次數轉化為分數類型的字元串類型
declare @point decimal(15,6) --中間的小數
declare @result decimal(15,6) --返回結果
if(@number is null or @expression is null)
begin
set @char='1'
set @expression=1
end
else if(@number=0 or @expression=0)
set @result=1
else
set @char='1/'+Convert(nvarchar(13),@number)

if (CHARINDEX('/', @char)>0)
Set @point = 1.0 * Cast(Left(@char,CHARINDEX('/', @char)-1) as Decimal(15,6)) / Cast(Right(@char,Len(@char)-CHARINDEX('/', @char)) as Decimal(15,6))
else
Set @point = 1.0 * Cast(@char as Decimal(15,6))

select @result=POWER(@expression,@point)
return @result
END

調用此函數
select dbo.powToN(4,2)
即4開2次方是2

此函數的思想是:先把開方的次數轉化為字元型的 然後再把字元型的轉化為小數型的 最後調用庫函數power()求的結果;如果單純的用select power(4,2)這樣求不到結果的

❾ 用SQL查詢語句如何取出「開獎號」這一列中的1 3 5位數據,比如第一列93968,它的135位數據就是998

where substr(phone,0,3) in ('134','135');
通過截取phone的前三位,要學會變通

❿ sql語句引號用法 資料庫中引號的用法

1、首先先來說一下單引號和反引號,這里的 '圖書ID' 就使用到了單引號,而

2、CREATE TABLE `book` 這里的 book 就使用到了反引號。

3、單引號:在例子中的條件值周圍使用的是單引號。SQL 使用單引號來環繞文本值。如果是數值,請不要使用引號。按照別的說法來說就是Varchar類型(也可以說是String、字元串類型)這一些在資料庫語句中使用的時候應該使用單引號,而不是直接使用。而對於數值類型的,反而是不能使用單引號。

4、反引號:它是為了區分MYSQL的保留字與普通字元而引入的符號。

5、注意劃重點:有MYSQL保留字作為欄位的,必須加上反引號來區分!

6、雙引號的用法和單引號有所類似,大多數資料庫都支持單引號和雙引號的互換,即varchar類型的變數既可以用單引號來囊括,也可以用雙引號。當然了,一邊單引號,一邊雙引號是不被允許的。

7、另外,在oracle裡面,雙引號還有一個意義,那就是保留大小寫。在oracle資料庫裡面,所有的欄位是默認為轉化成大寫後進資料庫的,所以如果有一個表名為user,這個時候select * from user;這個語句是查不出任何數據的!(明明創建了表,也會提示表不存在的錯誤)只有select * from 「user」才可以,因為上面的語句會默認轉化為大寫。

8、字元串用單引號;表名,欄位名等用反引號;大小寫沖突用雙引號。