SQL語言

SQL語言主要組成部分
  • 數據定義語言(DDL,Data Definition Language)
    是指用來定義和管理數據庫以及數據庫中的各種對象的語句,這些語句包括CREATE,ALTER和DROP等語句。在SQL Server中,數據庫對象包括表、視圖、觸發器、存儲過程、規則、缺省、用戶自定義的數據類型等。這些對象的創建、修改和刪除等都可以通過CREATE\ALTER和DROP等語句來完成。
  • 數據操縱語言(DML,Data Manipulation Language)
    是指用來查詢、添加、、修改和刪除數據庫中數據語句,這些語句包括SELECT、INSERT、UPDATE、DALETE等。在默認情況下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成員纔有權利執行數據操縱語言。
  • 數據控制語言(DCL,Data Control Language)
    是用來設置或者更改數據庫用戶或角色權限的語句,這些語句包括GRANT、REVOKE、DENY等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員纔有權利執行數據控制語言。

SQL語句
  • DDL
    建立表結構Create
CREATE TABLE <表名>
舉例:
CREATE TABLE Student(
	sno char(10) primary key,
	sname varchar(20) not null,
	sage smallint,
	ssex char(2),
	sdept varchar(20))
CREATE TABLE Course(
	cno char(10),
	primary key(cno),
	cname varchar(20),
	cpno char(10),
	credit smallint)
CREATE TABLE SC(
	sno char(10),
	cno cahr(10),
	grade smallint,
	primary key(sno,cno))

刪除表結構Drop

Drop Table student //一單一個表被刪除,數據將不能被恢復

📺將整個關係模式(表結構)徹底刪除,表中的數據也將被刪除
修改表結構Alter

Alter Table Student Add phone char(16) //增加表中的屬性
Alter Table Student Alter column sdept varchar(100) not null //修改表中的某屬性
Alter Table Studnet Drop column sage //刪除表中的某屬性

練習:

--創建Student,Course,SC三張表(暫時不建立外碼和唯一碼Unique)
CREATE TABLE Student
CREATE TABLE Course
CREATE TAVLE SC
--爲Student表添加籍貫(50個長度的變長字符串)列,查看錶結構
Alter Table Student Add native varchar(50)
SHOW TABLE Student
--將Student表中的“籍貫”列的類型精度改爲100,查看錶結構
Alter Table Student Alter column native varchar(50)
SHOW TABLE Student
--刪除Student表的“籍貫”列
Alter Table Studnet Drop solumn native
--刪除這三張表
DROP TABLE Student
DROP TABLE Course
DROP TABLE SC
  • DML
    插入數據
    📟用SQL 的插入語句,向數據庫中添加數據
Insert Into Student
Values('01001','張三',27,'M','CS') //按關係模式的屬性順序
Insert Into Student ( sno , sage, sname)
		Values (01002,NULL, ‘李四’) //按指定的屬性順序,也可以只添加部分屬性(非Null屬性爲必需

修改數據
📷改變符合條件的某個(某些)元組的屬性值

--將001學生轉入MA系
Update Student
Set sdept='MA' Where sno='001'
--所有學生年齡加1
Update Student
Set sage=sage+1

刪除數據
🎥只能對整個元組操作,不能只刪除某些屬性上的值。只能對一個關係起作用,若要從多個關係中刪除元組,則必須對每個關係分別執行刪除命令。從關係r中刪除滿足P的元組,知識刪除數據,不是刪除定義(表結構)。

--刪除學號爲001的學生的結伴信息
Delete From Student Where sno='001'
--刪除選課而未參加考試的學生的選課信息
Delete From SC Where score is null
--刪除所有學生的選課信息
Delete From SC

練習:

--爲Student(10行以上),Course(8行以上),SC(25行以上)表添加記錄
Insert Into Student
Values(XXXXX)
--爲Student表添加列“班級號” (10個長度定長字符串)
Alter Table Student
Add columns classid char(10)
--爲學生填寫班級號(數字)
Update Student
Set calssid='XXX' Where sno='XX'

數據查詢

☎️數據查詢時數據庫應用的核心功能
Where子句
📞查詢滿足指定條件的元組可以通過Where子句來實現。使where子句中的邏輯表達式返回True值的元組,是符合要求的元組,將被選擇出來。

比較:<<=>>==<> 等
確定範圍:
Between  A  and  B、Not Between A and B
確定集合:INNOT IN
字符匹配:LIKENOT LIKE
空值:IS NULLIS NOT NULL
多重條件:ANDORNOT
  • LIKE
    字符匹配:Like,Not Like
    通配符:%匹配任意字符串;_匹配任意一個字符
    大小寫敏感
--列出張姓學生的學號、姓名
Select sno,sname
From Student
Where sname LIKE '張%'
--列出張姓且單名的學生的學號、姓名
Select sno,sname
From Student
Where sname LIKE '張_'
  • 轉義符escape
--列出課程名中帶有‘_’的課程號即課程名
Select cno,cname
From Course 
Where canme LIKE '%\_%' escape '\'
  • From
    列出將被查詢的關係(表)
--列出所有學生的學號、姓名、課程號、成績
Select Student.sno,cno,grade
From Student,SC
Where Student.sno=SC.sno
  • Order By
    指定結果集中元組的排列次序
    耗時
    ASC升序(缺省)、DESC降序
--列出CS系中的男生的學號、姓名、性別和年齡,並按年齡進行排序(降序)
Select sno,sname,ssex,sage
From Student
Where sdept='CS' and ssex='M'
Order By sage DESC
--檢索選修C01或C02的學生學號
Select Sno FROM SC
Where Cno='C01' OR Cno='C02'
--檢索成績在70-80分之間的學生學號,課程號和成績
Select * From SC
Where grade BETWEEN 70 and 80
--檢索學號001,003,004的同學的性別,年齡(年齡按升序排列)
Select Sno,sage From Student
Where Sno IN ('001','003','004')
ORDER BY sage
//IN表示匹配若干指定值的行
--檢索張三同學所學課程的課程號及成績
Select Cno,grade
From Student,SC
Where Student.Sno=SC.Sno AND Sname='張三'
--檢索所有學生的姓名、選課名稱和成績
Select Sname,Cname,grade
From Student,SC,Course
Where Student.Sno=SC.Sno and SC.Cno=Course.Cno

練習:

--查詢選修“C05”課程,並且年齡不大於26歲的學生的學號和成績,並按成績降序排列
Select Sno,grade
From SC,Student
Where Cno='C05' and SC.Sno=Student.Sno and Sage<=26
Order By grade DESC
--查詢MA系的女同學
Select Sno
From Student
Where Sdept='MA' and Ssex='F'
--查詢CS系姓李的學生選修的課程列出學號,課程號和成績
Select Sno,Cno,grade
From Student,SC,Course
Where Sdept='CS' and Student.Sno=SC.Sno adn Course.Cno=SC.Cno and Sname LIKE "李%"
--查詢選修了數據庫課程的學生的學號,成績,按成績降序排列
Select Sno,grade
From SC,Course
Where Cname='數據庫' and SC.Cno=Course.Cno
Order By grade DESC
--找出學分爲4分以上的課程的選修情況,列出學號,課程名,成績
Select Sno,Cname,grade
From SC,Course
Where SC.Cno=Course.Cno and credit>4
--檢索數據庫的成績在90分以上的學生的學號和姓名
Select Sno,Sname
From Course,SC,Student
Where Student.Sno=SC.Sno and SC.Cno=Course.Cno and grade>90
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章