新聞中心
數(shù)據(jù)庫是當(dāng)今互聯(lián)網(wǎng)時(shí)代中不可缺少的一部分,而其中最核心的環(huán)節(jié)就是數(shù)據(jù)管理。數(shù)據(jù)庫中的數(shù)據(jù)需要被組織起來,以便更好地進(jìn)行管理和運(yùn)用。表格是數(shù)據(jù)庫中的重要組成部分,可以幫助我們更加有效地處理和組織數(shù)據(jù)。在數(shù)據(jù)庫中創(chuàng)建新表格是一個(gè)必要的步驟,那么本文將向你講解如何在SQL中創(chuàng)建新表格。

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出葉縣免費(fèi)做網(wǎng)站回饋大家。
什么是SQL?
SQL是結(jié)構(gòu)化查詢語言(Structured Query Language)的縮寫,是用于與關(guān)系數(shù)據(jù)庫交互的標(biāo)準(zhǔn)語言。SQL是在1970年代初期由 IBM 的 System R 項(xiàng)目研制而成,由于其結(jié)構(gòu)化的特點(diǎn),在當(dāng)時(shí)的數(shù)據(jù)庫系統(tǒng)中得到了廣泛的應(yīng)用,并成為了許多數(shù)據(jù)庫系統(tǒng)的標(biāo)準(zhǔn)語言。
在數(shù)據(jù)庫中使用SQL,可以實(shí)現(xiàn)以下四個(gè)方面的功能:
1. 數(shù)據(jù)記錄的添加、刪除、修改和查詢
2. 數(shù)據(jù)庫的創(chuàng)建、刪除和維護(hù)
3. 數(shù)據(jù)庫訪問控制和權(quán)限管理
4. 數(shù)據(jù)的備份和恢復(fù)
SQL建表的基本語法
創(chuàng)建數(shù)據(jù)表需要使用 CREATE TABLE 語句。 CREATE TABLE 語句的語法可以分為以下幾個(gè)部分:
1. CREATE TABLE – 告訴數(shù)據(jù)庫你要?jiǎng)?chuàng)建一個(gè)新表格
2. 表格名稱 – 為新表格命名
3. 括號內(nèi)的列和數(shù)據(jù)類型 – 括號中列和列數(shù)據(jù)類型之間用逗號分隔
4. 每個(gè)列的數(shù)據(jù)類型
5. 用于定義列的約束,例如主鍵、唯一鍵、非空等約束
下面是一個(gè)例子:
CREATE TABLE customers (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
first_name varchar(255) NOT NULL,
last_name varchar(255) NOT NULL,
eml varchar(255) NOT NULL UNIQUE,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
在這個(gè)例子中,我們要?jiǎng)?chuàng)建一個(gè)名為 customers 的數(shù)據(jù)表格,其中包含了五列,分別是 id、first_name、last_name、eml 和 created_at。id 列是主鍵且自動遞增,first_name 和 last_name 列是不可為空值,而 eml 列是唯一的,created_at 列是時(shí)間戳類型,且不可為空,除非使用默認(rèn)值 CURRENT_TIMESTAMP。
SQL數(shù)據(jù)類型
建立數(shù)據(jù)表之前,我們需要確定每一列的數(shù)據(jù)類型。以下是幾種常見的數(shù)據(jù)類型:
1. INT: 存儲整數(shù),如數(shù)字 2、0 或 -100
2. VARCHAR: 存儲文本字符串,如“Hello World”
3. TEXT: 存儲長文本字符串,用于存儲大塊的文本,如文章、博客等
4. DATE 和 TIME: 存儲日期和時(shí)間
5. FLOAT 和 DOUBLE: 存儲帶有小數(shù)點(diǎn)的數(shù)值
6. BOOLEAN: 存儲布爾值
SQL約束
除了數(shù)據(jù)類型之外,在創(chuàng)建數(shù)據(jù)表格時(shí),我們還可以定義該表中每個(gè)列的約束,以確保數(shù)據(jù)的完整性、準(zhǔn)確性和一致性。以下是一些基本的SQL約束:
1. PRIMARY KEY: 用于定義該列為主鍵,主鍵值必須是唯一的,且不能為 NULL
2. NOT NULL: 用于定義該列不能為 NULL
3. UNIQUE: 用于定義該列的值必須唯一
4. DEFAULT: 用于為某些列定義默認(rèn)值
5. FOREIGN KEY: 用于保持表格之間的關(guān)聯(lián)性
使用 SQL 建表的流程
1. 打開工具軟件(如 MySQL Workbench)并連接數(shù)據(jù)庫
2. 打開 SQL 輸入框,鍵入“CREATE TABLE”語句,并輸入所需的表格名稱和列
3. 確定每個(gè)列的數(shù)據(jù)類型和約束
4. 保存語句,點(diǎn)擊運(yùn)行或者發(fā)送
5. 在數(shù)據(jù)庫中檢查新數(shù)據(jù)表格是否創(chuàng)建成功
注意事項(xiàng)
1. 確保檢查所有輸入的大小寫
2. 確保列的數(shù)據(jù)類型和列的約束完全正確
3. 確保列名稱和表格名稱不要使用SQL的保留字
建立一個(gè)新數(shù)據(jù)表格是SQL管理數(shù)據(jù)庫的基本操作,SQL建表語句具有結(jié)構(gòu)簡單、易于更新和操作等優(yōu)點(diǎn)。在使用 SQL 語句創(chuàng)建一個(gè)新數(shù)據(jù)表格之前,我們需要確定每個(gè)列的數(shù)據(jù)類型和約束類型。為了確保創(chuàng)建的數(shù)據(jù)表格符合要求,我們需要注意大小寫、數(shù)據(jù)類型和約束,不要使用 SQL 的保留字作為列名稱或表格名稱。通過這篇文章希望為你提供了SQL建表的基本語法和使用流程,加強(qiáng)SQL語言的實(shí)踐掌握。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
數(shù)據(jù)庫基礎(chǔ)用SQL語言創(chuàng)建student表 急………..
/*1:建立學(xué)生表*/
create
table
student
(
SNO
char(10)
primary
key,
SNAME
char(4),
SSEX
char(2),
SAGE
int,
sdept
char(5)
);
/*2:建立course表*/
create
table
course(
CNO
char(10)
primary
key,
CNAME
char(20),
TEACHER
char(20)
);
/*3:建立課程表*/
create
table
SC
(
CNO
char(5)
primary
key,
CNAME
char(10),
TNO
char(3),
foreign
key(TNO)
references
teacher(TNO)
);
/*4:建立SC表*/
create
table
sc(
SNO
char(3),
CNO
char(5),
primary
key(SNO,CNO),
GRADE
VARCHAR2(10),
foreign
key(SNO)
references
student(SNO),
foreign
key(CNO)
references
course(CNO)
);
類似的一個(gè)例子
你看渣手著改一下名字早洞
大小如睜嫌就行了
sql數(shù)據(jù)庫 建立三個(gè)表 student(學(xué)號 姓名 性別) sc(學(xué)號 課程號 成績)course(課程號 課程名 分?jǐn)?shù) )
select a.姓名, b.*
from students a,
(select sc.學(xué)號, avg(sc.成績), count(sc.課程號) 不及格數(shù)桐和量啟圓
from sc
where sc.成績 1) b
where a.學(xué)號 = b.學(xué)號悄輪塌
order by a.學(xué)號;
select 姓名,savg from (select 學(xué)號,avg(成績)as savg from sc where 成績=2) t1,student where t1.學(xué)號=student.學(xué)號
1. Group By 語句簡介:
Group By語句從英文的字面意義上理解就是“根據(jù)(by)一定的規(guī)則進(jìn)行分組(Group)”。它的作用是通過一定的規(guī)則將一個(gè)數(shù)據(jù)集劃分成若干個(gè)小的區(qū)卜談域,然后針對若干個(gè)小區(qū)域進(jìn)行數(shù)據(jù)處理。 2. Group By 的使用: 上面已經(jīng)給出了對Group By語句的理解?;谶@個(gè)理解和SQL Server 2023的聯(lián)機(jī)幫助,下面對Group By語句的各種典型使用進(jìn)行依次列舉說明。 2.1 Group By : 這個(gè)恐怕是Group By語句最常見的用法了,Group By + (可以有多個(gè))。在執(zhí)行了這個(gè)操作以后,數(shù)據(jù)集將根據(jù)分組字段的值將一個(gè)數(shù)據(jù)集劃分成各個(gè)不同的小組。比如有如下數(shù)據(jù)集,其中水果名稱(FruitName)和出產(chǎn)國家(ProductPlace)為聯(lián)合主鍵: FruitName ProductPlace Price
Apple China $1.1
Apple Japan $2.1
Apple USA $2.5
Orange China $0.8
Banana China $3.1
Peach USA $3.0
如果我們想知道每個(gè)國家有多少種水果,那么我們可以通過如下SQL語句來完成: SELECT COUNT(*) AS 水果種類, ProductPlace AS 出產(chǎn)國 FROM T_TEST_FRUITINFO GROUP BY ProductPlace 這個(gè)SQL語句就是使用了Group By + 分組字段的方式,那么這句SQL語句就可以解釋成“我按照出產(chǎn)國家(ProductPlace)將數(shù)據(jù)集進(jìn)行分組,然后分別按照各個(gè)組來統(tǒng)計(jì)各自的記錄數(shù)量?!焙芎美斫鈱Π?。這里值得注意的是結(jié)果集中有兩個(gè)返回字段,一個(gè)是ProductPlace(出產(chǎn)國), 一個(gè)是水果種類。如果我們這里水果種類不是用Count(*),而是類似如下寫法的話: SELECT FruitName, ProductPlace FROM T_TEST_FRUITINFO GROUP BY ProductPlace 那么SQL在執(zhí)行此語句的時(shí)候會報(bào)如下的類似錯(cuò)誤:者轎 選擇列表中的列 ‘T_TEST_FRUITINFO.FruitName’ 無效,因?yàn)樵摿袥]有包含在聚合函數(shù)或 GROUP BY 子句中。 這就是我們需要注意的一點(diǎn),如果在返回集字段中,這些字段要么就要包含在Group By語句的后面,作為分組的依據(jù);要么就要被包含在聚合函數(shù)中。我們可以將Group By操作想象成如下的一個(gè)過程,首先系統(tǒng)根據(jù)SELECT 語句得到一個(gè)結(jié)果集,如最開始的那個(gè)水果、出產(chǎn)國家、單價(jià)的一個(gè)詳細(xì)表。然后根據(jù)分組字段,將具有相同分組字段的記錄歸并成了一條記錄。這個(gè)時(shí)候剩下的那些不存在于Group By語句后面作為分組依據(jù)的字段就有可能出現(xiàn)多個(gè)值,但是目前一種分組情況只有一條記錄,一個(gè)數(shù)據(jù)格是無法放入多個(gè)數(shù)值的,所以這里就需要通過一定的處理將這些多值的列轉(zhuǎn)化成單值,然后將其放在對應(yīng)的數(shù)據(jù)格中,那么完成這個(gè)步驟的就是聚合函數(shù)。這就是為什么這些函數(shù)叫聚合函數(shù)(aggregate functions)了。 2.2 Group By All : Group By All + 分組字段, 這個(gè)和前面提到的Group By 的形式多了一個(gè)關(guān)鍵字ALL。這個(gè)關(guān)鍵字只有在使用了where語句的,且where條件篩選掉了一些組的情況才可以首弊肆看出效果。在SQL Server 2023的聯(lián)機(jī)幫助中,對于Group By All是這樣進(jìn)行描述的: 如果使用 ALL 關(guān)鍵字,那么查詢結(jié)果將包括由 GROUP BY 子句產(chǎn)生的所有組,即使某些組沒有符合搜索條件的行。沒有 ALL 關(guān)鍵字,包含 GROUP BY 子句的 SELECT 語句將不顯示沒有符合條件的行的組。 其中有這么一句話“如果使用ALL關(guān)鍵字,那么查詢結(jié)果將包含由Group By子句產(chǎn)生的所有組…沒有ALL關(guān)鍵字,那么不顯示不符合條件的行組?!边@句話聽起來好像挺耳熟的,對了,好像和LEFT JOIN 和 RIGHT JOIN 有點(diǎn)像。其實(shí)這里是類比LEFT JOIN來進(jìn)行理解的。還是基于如下這樣一個(gè)數(shù)據(jù)集: FruitName ProductPlace Price
Apple China $1.1
Apple Japan $2.1
Apple USA $2.5
Orange China $0.8
Banana China $3.1
Peach USA $3.0
首先我們不使用帶ALL關(guān)鍵字的Group By語句: SELECT COUNT(*) AS 水果種類, ProductPlace AS 出產(chǎn)國 FROM T_TEST_FRUITINFO WHERE (ProductPlace ‘Japan’) GROUP BY ProductPlace 那么在最后結(jié)果中由于Japan不符合where語句,所以分組結(jié)果中將不會出現(xiàn)Japan。 現(xiàn)在我們加入ALL關(guān)鍵字: SELECT COUNT(*) AS 水果種類, ProductPlace AS 出產(chǎn)國 FROM T_TEST_FRUITINFO WHERE (ProductPlace ‘Japan’) GROUP BY ALL ProductPlace 重新運(yùn)行后,我們可以看到Japan的分組,但是對應(yīng)的“水果種類”不會進(jìn)行真正的統(tǒng)計(jì),聚合函數(shù)會根據(jù)返回值的類型用默認(rèn)值0或者NULL來代替聚合函數(shù)的返回值。 2.3 GROUP BY WITH CUBE | ROLLUP: 首先需要說明的是Group By All 語句是不能和CUBE 和 ROLLUP 關(guān)鍵字一起使用的。 首先先說說CUBE關(guān)鍵字,以下是SQL Server 2023聯(lián)機(jī)幫助中的說明: 指定在結(jié)果集內(nèi)不僅包含由 GROUP BY 提供的正常行,還包含匯總行。在結(jié)果集內(nèi)返回每個(gè)可能的組和子組組合的 GROUP BY 匯總行。GROUP BY 匯總行在結(jié)果中顯示為 NULL,但可用來表示所有值。使用 GROUPING 函數(shù)確定結(jié)果集內(nèi)的空值是否是 GROUP BY 匯總值。 結(jié)果集內(nèi)的匯總行數(shù)取決于 GROUP BY 子句內(nèi)包含的列數(shù)。GROUP BY 子句中的每個(gè)操作數(shù)(列)綁定在分組 NULL 下,并且分組適用于所有其它操作數(shù)(列)。由于 CUBE 返回每個(gè)可能的組和子組組合,因此不論指定分組列時(shí)所使用的是什么順序,行數(shù)都相同。 我們通常的Group By語句是按照其后所跟的所有字段進(jìn)行分組,而如果加入了CUBE關(guān)鍵字以后,那么系統(tǒng)將根據(jù)所有字段進(jìn)行分組的基礎(chǔ)上,還會通過對所有這些分組字段所有可能存在的組合形成的分組條件進(jìn)行分組計(jì)算。由于上面舉的例子過于簡單,這里就再適合了,現(xiàn)在我們的數(shù)據(jù)集將換一個(gè)場景,一個(gè)表中包含人員的基本信息:員工所在的部門編號(C_EMPLINFO_DEPTID)、員工性別(C_EMPLINFO_SEX)、員工姓名(C_EMPLINFO_NAME)等。那么我現(xiàn)在想知道每個(gè)部門各個(gè)性別的人數(shù),那么我們可以通過如下語句得到: SELECT C_EMPLINFO_DEPTID, C_EMPLINFO_SEX, COUNT(*) AS C_EMPLINFO_TOTALSTAFFNUM FROM T_PERSONNEL_EMPLINFO GROUP BY C_EMPLINFO_DEPTID, C_EMPLINFO_SEX 但是如果我現(xiàn)在希望知道: 1. 所有部門有多少人(這里相當(dāng)于就不進(jìn)行分組了,因?yàn)檫@里已經(jīng)對員工的部門和性別沒有做任何限制了,但是這的確也是一種分組條件的組合方式); 2. 每種性別有多人(這里實(shí)際上是僅僅根據(jù)性別(C_EMPLINFO_SEX)進(jìn)行分組); 3. 每個(gè)部門有多少人(這里僅僅是根據(jù)部門(C_EMPLINFO_DEPTID)進(jìn)行分組);那么我們就可以使用ROLLUP語句了。 SELECT C_EMPLINFO_DEPTID, C_EMPLINFO_SEX, COUNT(*) AS C_EMPLINFO_TOTALSTAFFNUM FROM T_PERSONNEL_EMPLINFO GROUP BY C_EMPLINFO_DEPTID, C_EMPLINFO_SEX WITH CUBE 那么這里你可以看到結(jié)果集中多出了很多行,而且結(jié)果集中的某一個(gè)字段或者多個(gè)字段、甚至全部的字段都為NULL,請仔細(xì)看一下你就會發(fā)現(xiàn)實(shí)際上這些記錄就是完成了上面我所列舉的所有統(tǒng)計(jì)數(shù)據(jù)的展現(xiàn)。使用過SQL Server 2023或者RDLC的朋友們一定對于矩陣的小計(jì)和分組功能有印象吧,是不是都可以通過這個(gè)得到答案。我想RDLC中對于分組和小計(jì)的計(jì)算就是通過Group By的CUBE和ROLLUP關(guān)鍵字來實(shí)現(xiàn)的。(個(gè)人意見,未證實(shí)) CUBE關(guān)鍵字還有一個(gè)極為相似的兄弟ROLLUP, 同樣我們先從這英文入手,ROLL UP是“向上卷”的意思,如果說CUBE的組合是絕對自由的,那么ROLLUP的組合就需要有點(diǎn)約束了。我們先來看看SQL Server 2023的聯(lián)機(jī)中對ROLLUP關(guān)鍵字的定義: 指定在結(jié)果集內(nèi)不僅包含由 GROUP BY 提供的正常行,還包含匯總行。按層次結(jié)構(gòu)順序,從組內(nèi)的更低級別到更高級別匯總組。組的層次結(jié)構(gòu)取決于指定分組列時(shí)所使用的順序。更改分組列的順序會影響在結(jié)果集內(nèi)生成的行數(shù)。 那么這個(gè)順序是什么呢?對了就是Group By 后面字段的順序,排在靠近Group By的分組字段的級別高,然后是依次遞減。如:Group By Column1, Column2, Column3。那么分組級別從高到低的順序是:Column1 > Column2 > Column3。還是看我們前面的例子,SQL語句中我們僅僅將CUBE關(guān)鍵字替換成ROLLUP關(guān)鍵字,如: SELECT C_EMPLINFO_DEPTID, C_EMPLINFO_SEX, COUNT(*) AS C_EMPLINFO_TOTALSTAFFNUM FROM T_PERSONNEL_EMPLINFO GROUP BY C_EMPLINFO_DEPTID, C_EMPLINFO_SEX WITH ROLLUP 和CUBE相比,返回的數(shù)據(jù)行數(shù)減少了不少。:),仔細(xì)看一下,除了正常的Group By語句后,數(shù)據(jù)中還包含了: 1. 部門員工數(shù);(向上卷了一次,這次先去掉了員工性別的分組限制) 2. 所有部門員工數(shù);(向上又卷了依次,這次去掉了員工所在部門的分組限制)。 在現(xiàn)實(shí)的應(yīng)用中,對于報(bào)表的一些統(tǒng)計(jì)功能是很有幫助的。 這里還有一個(gè)問題需要補(bǔ)充說明一下,如果我們使用ROLLUP或者CUBE關(guān)鍵字,那么將產(chǎn)生一些小計(jì)的行,這些行中被剔除在分組因素之外的字段將會被設(shè)置為NULL,那么還存在一種情況,比如在作為分組依據(jù)的列表中存在可空的行,那么NULL也會被作為一個(gè)分組表示出來,所以這里我們就不能僅僅通過NULL來判斷是不是小計(jì)記錄了。下面的例子展示了這里說得到的情況。還是我們前面提到的水果例子,現(xiàn)在我們在每種商品后面增加一個(gè)“折扣列”(Discount),用于顯示對應(yīng)商品的折扣,這個(gè)數(shù)值是可空的,也就是可以通過NULL來表示沒有對應(yīng)的折扣信息。數(shù)據(jù)集如下所示: FruitName ProductPlace Price Discount
Apple China $1.1 0.8
Apple Japan $2.1 0.9
Apple USA $2.5 1.0
Orange China $0.8 NULL
Banana China $3.1 NULL
Peach USA $3.0 NULL
現(xiàn)在我們要統(tǒng)計(jì)“各種折扣對應(yīng)有多少種商品,并總計(jì)商品的總數(shù)?!?,那么我們可以通過如下的SQL語句來完成: SELECT COUNT(*) AS ProductCount, Discount FROM T_TEST_FRUITINFO GROUP BY Discount WITH ROLLUP 好了,運(yùn)行一下,你會發(fā)現(xiàn)數(shù)據(jù)都正常出來了,按照如上的數(shù)據(jù)集,結(jié)果如下所示: ProductCount Discount
3 NULL
1 0.8
1 0.9
1 1.0
6 NULL
好了,各種折扣的商品數(shù)量都出來了,但是在顯示“沒有折扣商品”和“商品小計(jì)”的時(shí)候判斷上確存在問題,因?yàn)榇嬖趦蓷lDiscount為Null的記錄。是哪一條呢?通過分析數(shù)據(jù)我們知道之一條數(shù)據(jù)(3, Null)應(yīng)該對應(yīng)沒有折扣商品的數(shù)量,而(6,Null)應(yīng)該對應(yīng)所有商品的數(shù)量。需要判斷這兩個(gè)具有不同意義的Null就需要引入一個(gè)聚合函數(shù)Grouping?,F(xiàn)在我們把語句修改一下,在返回值中使用Grouping函數(shù)增加一列返回值,SQL語句如下: SELECT COUNT(*) AS ProductCount, Discount, GROUPING(Discount) AS Expr1 FROM T_TEST_FRUITINFO GROUP BY Discount WITH ROLLUP 這個(gè)時(shí)候,我們再看看運(yùn)行的結(jié)果: ProductCount Discount Expr1
3 NULL 0
1 0.8 0
1 0.9 0
1 1.0 0
6 NULL 1
對于根據(jù)指定字段Grouping中包含的字段進(jìn)行小計(jì)的記錄,這里會標(biāo)記為1,我們就可以通過這個(gè)標(biāo)記值將小計(jì)記錄從判斷那些由于ROLLUP或者CUBE關(guān)鍵字產(chǎn)生的行。Grouping(column_name)可以帶一個(gè)參數(shù),Grouping就會去判斷對應(yīng)的字段值的NULL是否是由ROLLUP或者CUBE產(chǎn)生的特殊NULL值,如果是那么就在由Grouping聚合函數(shù)產(chǎn)生的新列中將值設(shè)置為1。注意Grouping只會檢查Column_name對應(yīng)的NULL來決定是否將值設(shè)置為1,而不是完全由此列是否是由ROLLUP或者CUBE關(guān)鍵字自動添加來決定的。 2.2 Group By 和 Having, Where ,Order by語句的執(zhí)行順序: 最后要說明一下的Group By, Having, Where, Order by幾個(gè)語句的執(zhí)行順序。一個(gè)SQL語句往往會產(chǎn)生多個(gè)臨時(shí)視圖,那么這些關(guān)鍵字的執(zhí)行順序就非常重要了,因?yàn)槟惚仨毩私膺@個(gè)關(guān)鍵字是在對應(yīng)視圖形成前的字段進(jìn)行操作還是對形成的臨時(shí)視圖進(jìn)行操作,這個(gè)問題在使用了別名的視圖尤其重要。以上列舉的關(guān)鍵字是按照如下順序進(jìn)行執(zhí)行的:Where, Group By, Having, Order by。首先where將最原始記錄中不滿足條件的記錄刪除(所以應(yīng)該在where語句中盡量的將不符合條件的記錄篩選掉,這樣可以減少分組的次數(shù)),然后通過Group By關(guān)鍵字后面指定的分組條件將篩選得到的視圖進(jìn)行分組,接著系統(tǒng)根據(jù)Having關(guān)鍵字后面指定的篩選條件,將分組視圖后不滿足條件的記錄篩選掉,然后按照Order By語句對視圖進(jìn)行排序,這樣最終的結(jié)果就產(chǎn)生了。在這四個(gè)關(guān)鍵字中,只有在Order By語句中才可以使用最終視圖的列名,如: SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount FROM T_TEST_FRUITINFO WHERE (ProductPlace = N’china’) ORDER BY IDE 這里只有在ORDER BY語句中才可以使用IDE,其他條件語句中如果需要引用列名則只能使用ID,而不能使用IDE。
2023年3月計(jì)算機(jī)等級考試二級VFP筆試:
一、選擇題
(1)下列關(guān)于棧敘述正確的是
A) 棧頂元素更先能被刪除
B)棧頂元素最后才能被刪碼族除
C)棧底元素永尺枯遠(yuǎn)不能被刪除
D)以上三種說法都不對
(2)下列敘述中正確的是
A)有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)
B)只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)陵模洞
C)循環(huán)鏈表是非線性結(jié)構(gòu)
D)雙向鏈表是非線性結(jié)構(gòu)
(3)某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)
A)3
B)4
C)6
D)7
(4)在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是
A)軟件集成測試計(jì)劃
B)軟件詳細(xì)設(shè)計(jì)說明書
C) 用戶手冊
D)軟件需求規(guī)格說明書
(5)結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括
A)順序結(jié)構(gòu)
B)GOTO跳轉(zhuǎn)
C)選擇(分支)結(jié)構(gòu)
D)重復(fù)(循環(huán))結(jié)構(gòu)
(6)下面描述中錯(cuò)誤的是
A) 系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)
B)軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過程
C)數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一
D)PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具
(7)負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是
A)數(shù)據(jù)定義語言
B)數(shù)據(jù)管理語言
C)數(shù)據(jù)操縱語言
D)數(shù)據(jù)控制語言
(8)一個(gè)教師可講授多門課程,一門課程可由多個(gè)教師講授。則實(shí)體教師和課程間的聯(lián)系是
A)1:1聯(lián)系
B)1:m聯(lián)系
C) m:1聯(lián)系
D) m:n聯(lián)系
(9)有三個(gè)關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是
A)自然連接
B)交
C)除
D)并
(10)定義無符號整數(shù)類為UInt,下面可以作為類T實(shí)例化值的是
A)-369
B)369
C)0.369
D)整數(shù){1,2,3,4,5}
(11)在建立數(shù)據(jù)庫表時(shí)給該表指定了主索引,該索引實(shí)現(xiàn)了數(shù)據(jù)完整性中的
A)參照完整性
B)實(shí)體完整性
C)域完整性
D)用戶定義完整性
(12)執(zhí)行如下命令的輸出結(jié)果是
?15%4,15%-4
A)3 -1
B)3 3
C)1 1
D)1 -1
(13)在數(shù)據(jù)庫表中,要求指定字段或表達(dá)式不出現(xiàn)重復(fù)值,應(yīng)該建立的索引是
A)惟一索引
B)惟一索引和候選索引
C)惟一索引和主索引
D)主索引和候選索引
(14)給student表增加一個(gè)“平均戍績”字段(數(shù)值型,總寬度6} 2位小數(shù))的SQL命令是
A)ALTER TABLE studeni ADD平均成績N(b,2)
B)ALTER TABLE student ADD平均成績D(6,2)
C)ALTER TABLE student ADD平均成績E(6,2)
D)ALTER TABLE student ADD平均成績Y(6,2)
(15)在Visual FoxPro中,執(zhí)行SQL的DELETE命令和傳統(tǒng)的FoxPro DELETE命令都可以刪除數(shù)據(jù)庫表中的記錄,下面正確的描述是
A)SQL的DELETE命令刪除數(shù)據(jù)庫表中的記錄之前,不需要先用USE命令打開表
B)SQL的DELETE命令和傳統(tǒng)的FoxPro DELETE命令刪除數(shù)據(jù)庫表中的記錄之前, 都需要先用命令USE打開表
C)SQL的DELETE命令可以物理地刪除數(shù)據(jù)庫表中的記錄,而傳統(tǒng)的FoxPro DELETE 命令只能邏輯刪除數(shù)據(jù)庫表中的記錄
D)傳統(tǒng)的FoxPro DELETE命令還可以刪除其它工作區(qū)中打開的數(shù)據(jù)庫表中的記錄
(16)在Visual FoxPro中,如果希望跳出SCAN…ENDSCAN循環(huán)語句、執(zhí)行ENDSCAN后面的語句,應(yīng)使用
A)LOOP語句
B)EXIT語句
C)BREAK語句
D)RETURN語句
(17)在Visual FoxPro中,“表”通常是指
A)表單
B)報(bào)表
C)關(guān)系數(shù)據(jù)庫中的關(guān)系
D)以上都不對
(18)刪除student表的“平均成績”字段的正確SQL命令是
A)DELETE TABLE student DELETE COLUMN平均成績
B)ALTER TABLE student DELETE COLUMN平均成績
C)ALTER TABLE student DROP COLUMN平均成績
D)DELETE TABLE student DROP COLUMN平均成績
(19)在Visual FoxPro中,關(guān)于視圖的正確描述是
A)視圖也稱作窗口
B)視圖是一個(gè)預(yù)先定義好的SQL SELECT語句文件
C)視圖是一種用SQL SELECT語句定義的虛擬表
D)視圖是一個(gè)存儲數(shù)據(jù)的特殊表
(20)從student表刪除年齡大于30的記錄的正確SQL命令是
A)DELETE FOR年齡>30
B)DELETE FROM student WHERE年齡>30
C)DEL ETE student FOP年齡>30
D)DELETE student WF IERE年齡>30
(21)在Vaual FoxPro中,使用LOCATL FOR }expL>命令按條件查找記錄,當(dāng)查找到滿足條件的之一條記錄后,如果還需要查找下一條滿足條件的記錄,應(yīng)該
A)再次使用LOCATE命令重新查詢
B)使用SKIP命令
C)使用CONTINUE命令
D)使用GO命令
(22)為了在報(bào)表中打印當(dāng)前時(shí)間,應(yīng)該插入的控件是
A)文本框控件
B)表達(dá)式
C)標(biāo)簽控件
D)域控件
(23)在Visual FoxPro中,假設(shè)student表中有40條記錄,執(zhí)行下面的命令后,屏幕顯示的結(jié)果是
?RECCOUNT()
A)0
B)1
C)40
D)出錯(cuò)
(24)向student表插入一條新記錄的正確SQL語句是
A)APPEND INTO student VALUES(’0401’,’王芳’,’女’,18)
B)APPEND student VALUES(’0401’,’王芳’,’女’,18):
C)INSERT INTO student VALUES(’0401’,’王芳’,’女’,18)
D)INSERT student VALUES(’0401’,’王芳’,’女’,18)
(25)在一個(gè)空的表單中添加一個(gè)選項(xiàng)按鈕組控件,該控件可能的默認(rèn)名稱是
A)Optiongroup 1
B)Checkl
C)Spinnerl
D)Listl
(26)恢復(fù)系統(tǒng)默認(rèn)菜單的命令是
A)SET MENU TO DEFAULT
B)SET SYENU TO DEFAULT
C)SET SYSTEM MENU TO DEFAULT
D)SET SYSTEM TO DEFAULT
(27)在Visual F’oxPro中,用于設(shè)置表單標(biāo)題的屬性是
A)Text
B)Title
C)Lable
D)Caption
(28)消除SQL SELECT查詢結(jié)果中的重復(fù)記錄,可采取的方法是
A)通過指定主關(guān)鍵字
B)通過指定惟一索引
C)使用DISTINCT短語
D)使用UNIQUE短語
(29)在設(shè)計(jì)界面時(shí),為提供多選功能,通常使用的控件是
A)選項(xiàng)按鈕組
B)一組復(fù)選框
C)編輯框
D)命令按鈕組
(30)為了使表單界面中的控件不可用,需將控件的某個(gè)屬性設(shè)置為假,該屬性是
A)Default
B)Enabled
C)Use
D)Enuse
第(31)-(35)題使用如下三個(gè)數(shù)據(jù)庫表:
學(xué)生表:student(學(xué)號,姓名,性別,出生日期,院系)
課程表:course(課程號,課程名,學(xué)時(shí))
選課成績表:score(學(xué)號,課程號,成績)
其中出生日期的數(shù)據(jù)類型為日期型,學(xué)時(shí)和成績?yōu)閿?shù)值型,其它均為字符型。
(31)查詢“計(jì)算機(jī)系”學(xué)生的學(xué)號、姓名、學(xué)生所選課程的課程名和成績,正確的命令是
A)SELECT s.學(xué)號,姓名,課程名,成績
FROM student s, score sc, course c
WHERE s.學(xué)號= sc.學(xué)號,sc.課程號=c.課程號,院系=’計(jì)算機(jī)系’
B)SELECT學(xué)號,姓名,課程名,成績
FROM student s, score sc, course c
WHERE s.學(xué)號=sc.學(xué)號AND sc.課程號=c.課程號AND院系=’計(jì)算機(jī)系’
C)SELECT s.學(xué)號,姓名,課程名,成績
FROM(student s JOIN score sc ON s.學(xué)號=sc.學(xué)號).
JOIN course cON sc.課程號=c.課程號
WHERE院系=’計(jì)算機(jī)系’
D)SELECT學(xué)號,姓名,課程名,成績
FROM(student s JOIN score sc ON s.學(xué)號=sc.學(xué)號)
JOIN course c ON sc.課程號=c.課程號
WHERE院系=’計(jì)算機(jī)系’
(32)查詢所修課程成績都大于等于85分的學(xué)生的學(xué)號和姓名,正確的命令是
A)SELECT學(xué)號,姓名FROM student s WHERE NOT EXISTS
(SELECT*FROM score sc WHERE sc.學(xué)號=s.學(xué)號AND成績<85)
B)SELECT學(xué)號,姓名FROM student s WHERE NOT EXISTS
(SELECT * FROM score sc WHERE sc.學(xué)號=s.學(xué)號AND成績>= 85)
C)SELECT學(xué)號,姓名FROM student s,score sc
WHERE s.學(xué)號=sc.學(xué)號AND成績>= 85
D)SELECT學(xué)號,姓名FROM student s,score sc
WHEkE s.學(xué)號=sc.學(xué)號AND ALL成績>=85
(33)查詢選修課程在5門以上(含5門)的學(xué)生的學(xué)號、姓名和平均成績,并按平均成
績降序排序,正確的命令是
A)SELECT s.學(xué)號,姓名,平均成績FROM student s,score sc
WHEREs.學(xué)號=sc.學(xué)號
GROUP BY s.學(xué)號HAVING COUNT(*)>=5 ORDER BY平均成績DESC
B)SELECT學(xué)號,姓名,AVG(成績)FROM student s,score sc
WHERE s.學(xué)號=sc.學(xué)號AND COUNT(*)>=5
GROUP BY學(xué)號ORDER BY 3 DESC
C)SELECT s.學(xué)號,姓名,AVG(成績)平均成績FROM student s,score sc
WHERE s.學(xué)號=sc.學(xué)號AND COUNT(*)>= 5
GROUP BY s.學(xué)號ORDER BY平均成績DESC
D)SELECT s.學(xué)號,姓名,AVG(成績)平均成績FROM student s,score sc
WHERE s.學(xué)號=sc.學(xué)號
GROUP BY s.學(xué)號HAVING COUNT(*)>=5 ORDER BY 3 DESC
(34)查詢同時(shí)選修課程號為C1和C5課程的學(xué)生的學(xué)號,正確的命令是
A)SELECT學(xué)號FROM score sc WHERE課程號=’C 1’AND學(xué)號IN
(SELECT學(xué)號FROM score sc WHERE課程號=’C5’)
B)SELECT學(xué)號FROM score sc WHERE課程號=’C1’AND學(xué)號=
(SELECT學(xué)號FROM score sc WHERE課程號=’C5’}
C)SELECT學(xué)號FROM score sc WHERE課程號=’C 1’ AND課程號=’C5’
D)SELECT學(xué)號FROM score sc WHERE課程號=’C 1’OR ’C5’
(35)刪除學(xué)號為“”且課程號為“C1”的選課記錄,正確命令是
A)DELETE FROM score WHERE課程號=’C 1’AND學(xué)號=’’
B)DELETE FROM score WHERE課程號=’C 1’OR學(xué)號=’’
C)DELETE FORM score WHERE課程號=’C 1’AND學(xué)號=’’
D)DELETE score WHERE課程號=’C 1’AND學(xué)號=’’
二、填空題
(1)有序線性表能進(jìn)行二分查找的前提是該線性表必須是存儲的。
(2)一棵二叉樹的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為ABDECF則后序遍歷結(jié)果為。
(3)對軟件設(shè)計(jì)的最小單位(模塊或程序單元)進(jìn)行的測試通常稱為測試。
(4)實(shí)體完整性約束要求關(guān)系數(shù)據(jù)庫中元組的屬性值不能為空。
(5)在關(guān)系A(chǔ)(S, SN, D)和關(guān)系B(D,CN, NM)中,A的主關(guān)鍵字是S, B的主關(guān)鍵字是D,則稱是關(guān)系A(chǔ)的外碼。
(6)表達(dá)式EMPTY(.NULL.)的值是。
(7)假設(shè)當(dāng)前表、當(dāng)前記錄的“科目”字段值為“計(jì)算機(jī)”(字符型),在命令窗口輸入如下命令將顯示結(jié)果。
m=科目-“考試”
?m
(8)在Visual FoxPro中假設(shè)有查詢文件queryl.qpr,要執(zhí)行該文件應(yīng)使用命令。
(9)SQL語句“SELECT TOP 10 PERCENT*FROM訂單ORDER BY金額DESC”的查詢結(jié)果是訂單中金額的10%的訂單信息。
(10)在表單設(shè)計(jì)中,關(guān)鍵字表示當(dāng)前對象所在的表單。
(11)使用SQL的CREATE TABLE語句建立數(shù)據(jù)庫表時(shí),為了說明主關(guān)鍵字應(yīng)該使用關(guān)鍵詞KEY。
(12)在Visual FoxPro中,要想將日期型或日期時(shí)間型數(shù)據(jù)中的年份用4位數(shù)字顯示,應(yīng)當(dāng)使用SET CENTURY命令進(jìn)行設(shè)置。
(13)在建立表間一對多的永久聯(lián)系時(shí),主表的索引類型必須是。
(14)為將一個(gè)表單定義為頂層表單,需要設(shè)置的屬性是。
(15)在使用報(bào)表向?qū)?chuàng)建報(bào)表時(shí),如果數(shù)據(jù)源包括父表和子表,應(yīng)該選取報(bào)表向?qū)А?/p>
可以這樣寫:我已經(jīng)測試過了:
select student.姓名,avg(sc.成猛做績)
from student,sc
where student.學(xué)號=sc.學(xué)號 and 姓名彎兆
in
(
select student.姓名 from student,sc
where student.學(xué)號=sc.學(xué)號 and sc.成績=2
)
group by student.姓名
另外group by的詳細(xì)資料更好使用sql自帶的枝鬧衡幫助文檔,那里最全的,其他的資料都是從哪盜版過去的,遇到group by問題可以問我的。
關(guān)于數(shù)據(jù)庫sql建立表 039的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價(jià)值。
本文名稱:SQL建表:如何在數(shù)據(jù)庫中創(chuàng)建新表格?(數(shù)據(jù)庫sql建立表039)
文章來源:http://fisionsoft.com.cn/article/dhcsico.html


咨詢
建站咨詢
