當前位置:首頁 » 編程語言 » sqlanyin

sqlanyin

發布時間: 2023-02-17 23:31:47

1. 在sql 用any()查詢工資是1500或3000的工資的人的姓名和編號。

any是從一個查詢集中的任一個的意思,不能直接寫結果,如果你確定了是1500,3000,就要用in(1500,3000),否則就要用any(單列查詢語句)。

2. SQL Server中,ALL,ANY,IN的用法

select * from table where 倉庫號<> "wh1" and 倉庫號<> "wh2"

3. SQL 中ANY和ALL的用法

any表示任意一個,all表示所有的。舉例如下:

1、創建測試表,create table test_any_all(id number);

4. 用SQL語句檢索出年齡大於等於18小於等於20的學生姓名和性別

1、首先,在SC表中找到學了C2的學生學號。

5. sql語句中in的用法

IN 操作符允許我們在 WHERE 子句中規定多個值。

SQL IN 語法:

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...)

(5)sqlanyin擴展閱讀:

1、IN 與 = ANY 等價,均表示,變數在(子查詢)列表之中,即 a IN (table B) 表示 a = ANY B.b

2、NOT IN 與 <> ALL 等價,而不等於<> ANY,前兩者均表示,變數不在(子查詢)列表之中,即 a NOT IN (table B) 表示 a <> ALL B.b。而如果a <> ANY B.b,則只要任意一個b<>a就true了。

3、IN 與 EXISTS 的性能區別主要來自,IN 會編列子查詢的每行記錄,然後再返回,而EXISTS 則只要遇到第一個滿足條件的記錄就馬上返回。

6. SQL資料庫的、外鍵和查詢

增加外鍵

創建表的時候增加外鍵:在所有的表欄位之後,使用foreign key(外鍵欄位) references 外部表(主鍵欄位)

在新增表之後增加外鍵:修改表結構,使用alter table 表名 add [constraint 外鍵名字] foreign key(外鍵欄位) references 父表(主鍵欄位);

修改外鍵&刪除外鍵

alter table 表名 drop foreign key 外鍵名;

外鍵條件

外鍵要存在,首先必須保證表的存儲引擎是innodb

列類型必須與父表的主鍵類型一致

一張表中的外鍵名字不能重復

增加外鍵的欄位數據已經存在,必須保證數據與父表主鍵要求對應

外鍵約束

有三種約束模式

district:嚴格模式(默認的)

cascade:級聯模式

set null:置空模式

語法:foreign key(外鍵欄位) references 父表(主鍵欄位) on delete 模式 on update 模式;

聯合查詢

基本語法:

select 語句1

union [union 選項]

select 語句2……

union 選項

all:保留所有,不管重復

distinct:去重,默認的

子查詢(sub query)

按位置分類

from子查詢

where子查詢

exists子查詢

按結果分類

標量子查詢

列子查詢

行子查詢

表子查詢

子查詢

列子查詢

=any等價於in; -- 其中一個即可

any等價於some; -- 二者是一樣的

=all為全部

-- 創建外鍵

create table my_foreign1(

idint primary key auto_increment,

name varchar (20)not null comment

'學生姓名',

c_idint comment'班級id',

-- 增加外鍵

foreign key(c_id)references

my_class(id)

)charset utf8;

-- 創建表

create table my_foreign2(

idint primary key auto_increment,

name varchar (20)not null comment

'學生姓名',

c_idint comment'班級id'  -- 普通欄位

)charset utf8;

-- 增加外鍵

alter table my_foreign2add

-- 指定外鍵的名字

constraint student_class_1  -- 可以指定多個外鍵 但是名字不能相同

-- 指定外鍵的欄位

foreign key(c_id)

-- 引用父表主鍵

references my_class(id);

-- 刪除外鍵

alter table my_foreign1drop

foreign key my_foreign1_ibfk_1;  -- my_foreign1_ibfk_1 通過外鍵的名字來刪

-- 插入數據;外鍵欄位在父表不存在

insert into my_foreign2values (

null,'郭富城',4);  -- 沒有4號班級

insert  into my_foreign2values (

null,'項羽',1);

insert  into my_foreign2values (

null,'劉邦',2);

insert  into my_foreign2values (

null,'韓信',3);

-- 更新父表的記錄

update my_classset id=4 where id=1;  -- 失敗;id=1記錄已經被學生引用

update my_foreign2set c_id=2 where id=4;  -- 更新

update my_classset id=4 where id=3;  -- 可以;沒有學生引用此班級

-- mysql中添加外鍵約束遇到一下情況:

-- cannot add foreign key constraint

-- 出現這個問題的原因是,外鍵的使用:

-- 1. 外鍵欄位不能為該表的主鍵;

-- 2. 外鍵欄位參考欄位必須為參考表的主鍵

-- 插入數據

insert into my_foreign1values (

null,'馬超','3'

);

-- 增加外鍵

alter table my_foreign1add

foreign key(c_id)references

my_class(id);  -- 失敗;因為沒有3號班了

-- 創建外鍵,指定模式;刪除置空;更新級聯

create table my_foreign3(

idint primary key auto_increment,

name varchar (20)not null,

c_idint,

-- 增加外鍵

foreign key (c_id)

-- 引用表

references my_class(id)

-- 指定刪除模式

on delete set null

-- 指定更新模式

on update cascade

)charset utf8;

-- 插入數據

insert into my_foreign3values (

null,'劉備',1),

(null,'曹操',1),

(null,'孫權',1),

(null,'祝賀量',2),

(null,'周瑜',2);

-- 解除My_foreign2表的外鍵

alter table my_foreign2drop

foreign key student_class_1;

-- 更新父表主鍵

update my_classset id=3 where id=1;

-- 刪除父表主鍵

delete from  my_classwhere id=2;

-- 聯合查詢

select * from my_class

union  -- 默認去重

select * from my_class;

select * from my_class

union all  -- 不去重

select * from my_class;

select id,c_name,roomfrom my_class

union all  -- 不去重

select name,number,idfrom my_student;

-- 需求;男生升序;女生降序(年齡)

(select * from my_student

where sex='男'

order by ageasc limit9999999)

union

(select * from my_student

where sex='女'

order by agedesc limit9999999);

select * from my_studentwhere

c_id=(

-- 標量子查詢

select idfrom my_classwhere

c_name='python1903');-- id一定只有一個值(一行一列)

insert into my_classvalues (1,

'python1907','B407');

-- 列子查詢

select * from my_studentwhere

c_idin(select idfrom my_class);

-- any,some,all

select * from my_studentwhere

c_id=any(select idfrom my_class);

select * from my_studentwhere

c_id=some(select idfrom my_class);

select * from my_studentwhere

c_id=all(select idfrom my_class);

select * from my_studentwhere

c_id!=any(select idfrom my_class);  -- 所有結果(null除外)

select * from my_studentwhere

c_id!=some(select idfrom my_class);  -- 所有結果(null除外)

select * from my_studentwhere

c_id!=all(select idfrom my_class);  -- 所有2號班級(null除外)

select * from my_studentwhere

age=(select max(age)from

my_student)

and

height=(select max(height))from

my_student);

-- 行子查詢

select * from my_student

-- (age,height)稱之內為行元素

where (age,height)=(select max(

age),max(height)from my_student);

update my_studentset height=188

where name='王五';

select * from my_studentorder by

agedesc,heightdesc limit1;

select * from my_studentorder by

heightdesc;

-- 表子查詢

select * from my_studentgroup by

c_idorder by heightdesc;  -- 每個班選出第一個學生再按身高排序

select * from (select * from

my_studentorder by heightdesc)

as studentgroup by student.c_id;

7. 資料庫當中:如果子查詢中返回的是單列多值,則必須在子查詢前使用關鍵字all或any

我來回答一下,這個問題不好說清楚....

學生表

-- 查詢1、查詢出 年齡 = 17 的所有學生

select t.* from學生表 t where t.年齡 = 17;

-- 查詢2、查詢出 年齡 = 17或者 = 18的所有學生

select t.* from 學生表 t where t.年齡in (17, 18);

-- 查詢3、查詢出 性別 = 男 的所有學生,這里因為子查詢「學生表 t2」只有一條記錄滿足條件(即單列單行),所以查詢不會報錯

select t.* from 學生表 t where t.年齡 = (

select t2.年齡

from 學生表 t2 where t2.性別 = '男'

);

-- 查詢4、查詢出 年齡 = 17 的所有學生,這里因為子查詢 「學生表 t2」 有兩條數據符合條件(即單列多行),而 「t.性別 =」 只能等於某一個給定的值,參考 「查詢1」 ,所以執行查詢會報錯;這里把 =替換為 =any 或者 in 就可以正常查詢,因為 =any 和 in 是告訴 「t.性別」 要找的數據必須在我范圍內;而 <> any 和 not in 則表示取反的意思,告訴 「t.性別」 要找的數據必須排除我給你的范圍。

select t.* from 學生表 t where t.性別 = (

select t2.性別

from 學生表 t2 where t2.年齡 = 17

);

-- ANY 和 ALL 的具體用法,這里不再贅述。。。。

-- 查詢5、多列多值,參考查詢4,子查詢 「學生表 t2」 滿足條件的有兩條,如下查詢:

select t.* from 學生表 t where t.年齡 || t.性別=any (

select t2.年齡 || t2.性別

from 學生表 t2 where t2.性別 = '男'

);

注1:其實 ANY 和 ALL 不涉及什麼多行多列,查詢5隻是一種另類的解決方案。

注2:「||」 雙數線表示 在 ORACLE 資料庫中用來做合並的關鍵字元。

總結:

首先,請不要在查詢1、2、3、4、5上過於糾結,說什麼我可以用更簡單的SQL實現你的查詢1、2、3、4、5,我這里僅僅是為了舉例說明。

select t.* from 學生表 t where t.年齡 = 17;

= 後面可以是一個 特定的值,可以是一個 子查詢等等,但是需要保證 = 後面的任何運算或查詢只返回一個值,不然SQL是無法執行的;

而 any 和 all 以及 in,表示的是一個數據范圍,即單列多行,而使用 雙豎線 是把 多列合並為一列來處理,最終還是模擬的單列多行。

8. 操作符的SQL里的操作符

相等:相等操作符在SQL語句里比較一個值與另一個值,等號(=)表示相等。在進行相等比較時,被比較的值必須完全匹配,否則就不會返回數據。如果在相等比較過程中兩個值相等,那麼這個比較的返回值就是true,否則就是false。這個布爾值(true或false)用於決定是否返回數據。
不相等:在SQL里表示不相等的操作符是<>(一個小於號和一個大於號)。如果兩個值不相等,條件就返回true,否則就返回false。另一種表示不相等的方式是!=,而且很多主要的SQL實現採用這種方式。
小於:<
大於:>
比較操作符的組合:等號可以與小於號和大於號聯合使用。 用戶對SQL關鍵字而不是符號進行比較。
is null:這個操作符用於與null值進行比較。
between:操作符between用於尋找位於一個給定最大值和最小值之間的值,這個最大值和最小值是包含在內的。between是包含邊界值的,所以查詢結果里會包含指定的最大值和最小值。
in:操作符in用於把一個值與一個指定列表進行比較,當被比較的值至少與列表中一個值相匹配時,它會返回true。使用操作符in可以得到操作符or一樣的結果,但它的速度更快。
like:操作符like利用通配符把一個值與類似的值進行比較,通配符有兩個:百分號(%);下劃線(_)。百分號代表零個、一個或多個字元;下劃線( _ )代表一個數字或字元。
exists:這個操作符用於搜索指定表裡是否存在滿足特定條件的記錄。
all:操作符all用於把一個值與另一個集合里全部值進行比較。
any/some:操作符any用於把一個值與另一個列表裡任意值進行比較。some是any的別名,它們可以互換使用。 如果想在SQL語句里利用多個條件來縮小數據范圍,我們就需要組合多個條件。這正是連接操作符的功能。
and:操作符and讓我們可以在一條SQL語句的where子句里使用多個條件。在使用and時,無論SQL語句是事務操作還是查詢,所有由and連接的條件都必須為true,SQL語句才會實際執行。
or:操作符or可以在SQL語句的where子句中連接多個條件,這時無論SQL語句是事務操作還是查詢,只要or連接的條件里有至少一個是true,SQl語句就會執行。
注意:比較操作符和邏輯操作符都可以單獨或彼此復合使用。
提示:當SQL語句里包含多個條件和操作符時,利用圓括弧把語句按照邏輯關系進行劃分可以提高語句的可讀性。當然,不恰當地使用圓括弧也會影響輸出結果。 操作符not可以顛倒邏輯操作符的含義,它可以與其他操作符構成以下幾種形式:
not equal:不相等
not between:操作符between的求反
not in:操作符in的求反
not like:操作符like的求反
is not null:操作符is null的求反
not exists:操作符exists的求反
not unique:操作符distinct的求反 加法(+)
減法(-)
乘法(*)
除法(/)
算術操作符可以彼此組合使用,並且遵循基本算數運算中的優先順序:首先執行乘法和除法,然後是加法和減法。用戶控制算術運算次序的唯一方式是使用圓括弧,圓括弧里包含的表達式會被當作一個整體進行優先求值。

9. SQL語句中WHERE NOT EXISTS ; WHERE title NOT IN; WHERE title IN 這些語句是什麼意思 這些語句後接子查詢

exists 英文存在的意思,父查詢where not exists(子查詢)---不存在子查詢則滿足父查詢出發條件, where 欄位 not in(子查詢)。操作方法如下:

1、打開SQL Server Management Studio管理工具,連接上SQL Server資料庫,打開SQL語句書寫界面。

10. 請教高手在sql里in,all,any,some的區別和具體應用范圍

給你些例子:
in 是 確定集合的

SELECT au_lname, state
FROM authors
WHERE state IN ('CA', 'IN', 'MD')
結果:
au_lname state
-------- ----
Yokomoto CA
DeFrance IN
Stringer CA
MacFeather CA
Karsen CA
Panteley MD
Hunter CA

all 是查詢還可以是子查詢
如:

select name from edit
其中name前省略了all.
name前可以加ALL|DISTINCT
all是所有記錄.
distinct是不重復的。

帶【any】的嵌套查詢和【some】的嵌套查詢功能是一樣的。早期的SQL僅僅允許使用【any】,後來的版本為了和英語的【any】相區分,引入了【some】,同時還保留了【any】關鍵詞。
any:
select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >any(select sal from scott.emp where job='MANAGER');
帶any的查詢過程等價於兩步的執行過程。
(1)執行「select sal from scott.emp where job='MANAGER'」
select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >2975 or sal>2850 or sal>2450;

some:
select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =some(select sal from scott.emp where job='MANAGER');

帶some的嵌套查詢與any的步驟相同。
(1)子查詢,執行「select sal from scott.emp where job='MANAGER'」,其結果如圖4.22所示。
(2)父查詢執行下列語句。
―――――――――――――――――――――――――――――――――――――
select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =2975 or sal=2850 or sal=2450;

熱點內容
已上傳附件 發布:2024-11-08 11:47:53 瀏覽:633
電腦配置都有哪些問題 發布:2024-11-08 11:15:29 瀏覽:727
新浪微博敏感詞資料庫 發布:2024-11-08 11:03:22 瀏覽:472
linux的終端軟體 發布:2024-11-08 11:01:46 瀏覽:204
主機如何把密碼關掉 發布:2024-11-08 10:36:25 瀏覽:720
安卓軟體如何鎖定 發布:2024-11-08 10:30:27 瀏覽:709
sql定時執行語句 發布:2024-11-08 10:29:36 瀏覽:673
邁銳寶xl值得入手哪個配置 發布:2024-11-08 10:14:13 瀏覽:634
尋歡加密 發布:2024-11-08 10:02:57 瀏覽:353
拼單源碼 發布:2024-11-08 09:58:24 瀏覽:143