第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
第5章 关系数据库标准语言SQL 主讲:张丽芳.
第2章 SQL语言初步 2.1 SQL的基本概念 2.2 基本表、索引的创建、删除和修改操作 2.3 SQL的查询语句——SELECT
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术 实践.
Chap 11 SQL基本查詢指令.
第八章 DataGrid 與 DataTable 瀏覽器 DataTable DataGrid 存取 顯示表格 暑資碩三 房玄博 報告.
ASP.NET 網頁製作教本 – 從基本語法學起
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
Access数据库程序设计 总复习.
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
文科计算机小公共课规划教材 Access 程序设计.
Chap 13 視界與資料庫程式設計.
第 10 章 更多的查詢技巧.
创建数据库 MySql创建数据库的语法: CREATE DATABASE 数据库名; 例: CREATE DATABASE mydb;
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
计算机应用基础 上海大学计算中心.
第3章 数据查询与SQL命令.
資料庫管理 資管二 賴柏融.
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
資料庫系統 Database Systems
第 8 章 資料的 新增、修改與刪除.
課程名稱:資料庫系統 授課老師:李春雄 博士
PHP與MySQL 入門學習指南 凱文瑞克 著 第 23 章 資料型別.
第十一章 資料庫設計與權限設定.
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
Chapter 12 T-SQL 語法與 ASP.NET.
Chap 10 SQL定義、操作與控制指令.
第 7 章 建立資料表與 資料庫圖表.
資料庫安全 (Database Security)
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
ASP.NET 網頁製作教本 – 從基本語法學起
主 讲 教 师:陆有军 Web技术与应用 第六章 ADO.NET 主 讲 教 师:陆有军
第6章 ADO.NET数据访问接口 6.
SQL Server 2000 数据库入门.
課程名稱:資料庫系統 授課老師:李春雄 博士
第7章 ADO.NET操作SQL Server数据库
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
建立/修改/刪除資料表 建立資料表 使用Enterprise Manager工具
MySQL数据库基础与实例教程 之 MySQL表结构的管理 郭水泉.
第九章 進階的查詢技巧.
讲课人:王璞 浙江工商职业技术学院.
5.1.1 使用 ExecuteReader()操作数据库
SQL SERVER 一些经典语句 1.
第十七章 資料庫SQL 17-1 SELECT 17-2 INSERT 17-3 UPDATE 17-4 DELETE.
第3章 关系数据库标准语言SQL.
C# 程序设计教程 同济大学计算机系基础学科组
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
数据库技术与应用.
MySQL开发规范 DB组-张浩.
数据库技术.
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
查询与视图 蔡海洋.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
第4章 表的创建与维护 4.1 数据类型 4.2 数据完整性约束 4.3 创建数据表 4.4 修改数据表 4.5 删除数据表.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
第4章 数据查询.
Presentation transcript:

第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章 王有禮教授編著

新增資料庫 用SQL command來建立資料庫的語法如下: Create Database 新資料庫名稱 連結字串的寫法,其中database的值要設定成master,即“database=master”。 範例程式 <%@ Page Language="vb" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQLClient" %> <script runat="server"> sub Page_Load(obj as object, e as eventArgs) dim Conn as new _ SQLConnection("server=localhost;uid=sa;pwd=;database=master") dim objCmd as new SQLCommand("Create Database CourseInformation", Conn) try objCmd.Connection.Open objCmd.ExecuteNonQuery Response.write("Successful.") catch ex as Exception Response.write("Error updating the database.") end try objCmd.Connection.Close end sub </script> 透視ASP.NET-第12章 王有禮教授編著

新增資料表(1/2) 方法一: 方法二: Create table 新資料表名稱 ( 欄位名稱一 資料型別(長度) 是否允許Null …) 方法二: Select 欄位名稱一, 欄位名稱二, … into 新資料表名稱 from 舊資料表名稱 where 條件式 透視ASP.NET-第12章 王有禮教授編著

新增資料表(2/2) Create table的SQL Command Create table Students ( <%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQLClient" %> <script runat="server"> sub Page_Load(obj as object, e as eventArgs) dim Conn as new SQLConnection _ ("server=localhost;uid=sa;pwd=;database=CourseInformation") dim strSQL as string strSQL = "Create table Students ( " strSQL += "StudentName varchar(16) Not Null, " strSQL += "StudentNo char(5) Primary Key, " strSQL += "Department varchar(16) Not Null, " strSQL += "Class char(4) Not Null)" dim objCmd as new SQLCommand(strSQL, Conn) try objCmd.Connection.Open objCmd.ExecuteNonQuery Response.write("Successful.") catch ex as Exception Response.write("資料庫更改錯誤") end try objCmd.Connection.Close end sub </script> Create table的SQL Command Create table Students ( StudentName varchar(16) Not Null, StudentNo char(5) Primary Key, Department varchar(16) Not Null, Class char(4) Not Null) 透視ASP.NET-第12章 王有禮教授編著

SQL Server中的資料型態(1/2) 名稱 說明 bit 一個位元,值為0、1或Null。 int 四位元組的整數。 smallint 二位元組的整數。 tinyint 一位元組的整數。 numeric 十進位數,例numeric(6,2)表示6位數,其中兩位是小數。最多可到38位數。 decimal 意義同numeric。 float 浮點數,值介於-1.79E+308到1.79E+308之間,有效位數最多可到53位數。 real 浮點數,值介於-3.4E+38到3.4E+38之間,有效位數最多可到24位數。 datetime 日期和時間,精確度到秒。 smalldatetime 日期和時間,精確度到分。 char 固定字串長度,不管實際字串長短,都要用掉宣告的長度,最長可用8000字元。 varchar 變動字串長度,所用空間視實際字串長度而定,最長可用8000字元。 透視ASP.NET-第12章 王有禮教授編著

SQL Server中的資料型態(2/2) 名稱 說明 text 變動字串長度,最長可用2GB字元。 nchar Unicode編碼,固定字串長度,最長可用4000字元。 nvarchar Unicode編碼,變動字串長度,最長可用4000字元。 ntext Unicode編碼,最長可用2GB字元。 binary 固定長度的二元碼,最長為8000個位元組。 varbinary 變動長度的二元碼,最長為8000個位元組。 image 變動長度的二元碼,最長為2GB個位元組,可用來儲存圖片資料。 money 金額資料型態,範圍在-9.2E+15到9.2E+15之間。 smallmoney 金額資料型態,範圍在-2.1E+6到2.1E+6之間。 timestamp 時間戳記,此欄不可設定值,系統會自動設定時間。 uniqueidentifier 資料表中tuple的唯一識別碼。 透視ASP.NET-第12章 王有禮教授編著

Grades、Courses、Teachers的建立 複合attributes為主鍵的語法: Constraint 主鍵名稱 Primary Key (欄位名稱一, 欄位名稱二, …) Create table Grades ( StudentNo char(5) Not Null, CourseID char(4) Not Null, Scores decimal(9) Null, Constraint StudentNo_CourseID Primary Key (StudentNo, CourseID)) Create table Courses ( CourseName varchar(16) Not Null, CourseID char(4) Primary Key, TeacherName varchar(16) Not Null, CoursePoints int Not Null) Create table Teachers ( TeacherName varchar(16) Primary Key, TeacherTitle varchar(16) Not Null) 透視ASP.NET-第12章 王有禮教授編著

新增資料 方法一: 方法二: 方法三: 例一: 例二: Insert into 資料表名稱(欄位名稱一, 欄位名稱二, …) Values (欄位值一, 欄位值二, …) 方法二: Insert into 資料表名稱 方法三: Default values 例一: Insert into Students(StudentName, StudentNo, Department, Class) values ("李景維", "M9903", "資管系", "二") 例二: Insert into Students values ("李景維", "M9903", "資管系", "二") 範例程式:WebPage1203.aspx 透視ASP.NET-第12章 王有禮教授編著

修改資料 Update 資料表名稱 set 欄位名稱一=欄位值一, 欄位名稱二=欄位值二, … where 條件式 例如王立詳教授升等為副教授,則資料表Teachers的內容要做修改,其statement如下: Update Teachers set TeacherTitle = "副教授" where TeacherName = "王立詳" 欄位值不一定要是常數,也可以是變數、運算式或小括弧中含一個子查詢(視 同一個算式)。算式中可以有"+"(加)、"-"(減)、"*"(乘)、"/"(除)、"%"(餘數)等簡單的算術運算符號,也可以有邏輯運算符號"and"、"or"、"not",另外還提供數學、字串、日期等函數。例如: Update Grades set Scores = sqrt(Scores) * 10 透視ASP.NET-第12章 王有禮教授編著

刪除資料 Delete 資料表名稱 where 條件式 Delete 資料表名稱: Truncate table 資料表名稱: 一行一行的方式刪除資料表中所有的資料,資料表仍然存在 Truncate table 資料表名稱: 一次刪光資料表中所有的資料,資料表仍然存在 Drop table資料表名稱: 整個資料表一起刪去,資料表不再存在 例如吳致賢要退選平行計算,可用第一種語法,其寫法如下: Delete Grades where StudentNo = "B9901" and CourseID = "EE01" 透視ASP.NET-第12章 王有禮教授編著

查詢資料 由於是查詢資料,通常都要顯示在螢幕上,故須配合DataGrid、DataList、Repeater等控制標籤一起使用。 查詢的基本語法如下: Select 欄位名稱一, 欄位名稱二, … [into 新資料表名稱] from 資料表名稱 [where 條件式] [group by 欄位名稱A, 欄位名稱B, …] [having 尋找條件式] [order by 排序算式 [ASC|DESC]] 上述語法中以中括號表示的子句是可有可無的, 不在中括號內的子句是不可或缺的, 中括號內的項目則是以regular expression表示。 透視ASP.NET-第12章 王有禮教授編著

簡單的資料查詢(1/2) Select 欄位名稱一, 欄位名稱二, … from 資料表名稱 例如從Students資料表中選出學生姓名及系別,其寫法如下: Select StudentName, Department from Students <%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQLClient" %> <script runat="server"> sub Page_Load(obj as Object, e as EventArgs) dim myConnection as new SQLConnection _ ("server=localhost;uid=sa;pwd=;database=CourseInformation") dim myCommand as new SQLDataAdapter _ ("select StudentName, Department from Students", myConnection) dim ds as DataSet = new DataSet() myCommand.Fill(ds, "Students") ListData.DataSource = ds.Tables("Students") ListData.DataBind() end sub </script> <html><body><form runat="server"> <asp:DataGrid ID="ListData" Runat="server" BorderColor="black" CellPadding="4" Font-Size="8pt" HeaderStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-BackColor="#cccccc" AutoGenerateColumns="false"> <Columns> <asp:BoundColumn HeaderText="姓名" DataField="StudentName" /> <asp:BoundColumn HeaderText="系別" DataField="Department" /> </Columns> </asp:DataGrid> </form></body></html> 透視ASP.NET-第12章 王有禮教授編著

簡單的資料查詢(2/2) 選出所有的欄位,其語法如下: 例如Select * from Students 最典型的查詢語法如下: 例如: where 條件式 例如: Select StudentName, Department from Students where Department = "資管系" 透視ASP.NET-第12章 王有禮教授編著

Where條件式 表12.2 條件式中的運算符號 運算子 說明 = 等於 < 小於 > 大於 <>或!= 不等於 <= 小於等於 >= 大於等於 !> 不大於 !< 不小於 In 限定的欄位 Between 介於一個範圍之間 Like 格式檢查 透視ASP.NET-第12章 王有禮教授編著

Where範例(1/2) 例一: 例二: 例如要在資料表Grades中,找出成績在80到95之間的學生,可以寫成: Select * from Grades where CourseID in ("BM01", "BM02", "BM03") 例二: 印出的資料是沒修企管系課程的學生,可以寫成: where CourseID not in ("BM01", "BM02", "BM03") 例如要在資料表Grades中,找出成績在80到95之間的學生,可以寫成: where Scores between 80 and 95 例如果要找出資料表Grades中課程代號有“M”的tuples,其寫法如下: where CourseID like "%M%" 此statement的“%M%”中的“%” 表示0個以上的任意字元,所以 “%M%”的意思是0個以上的任意字元, 其後跟隨一個英文字母“M”, 其後再跟隨0個以上的任意 透視ASP.NET-第12章 王有禮教授編著

Where範例(2/2) 如果“M”一定要是第2個字元,則可利用底線符號“_”,如下例: Select * from Grades where CourseID like “_M%” 若要求某幾個字元都可以,則可以利用中括號。例如從資料表Teachers中找出副教授或助理教授,可以寫成: Select * from Teachers where TeacherTitle like "[副助]%“ 如果like之後的字串寫成“[^副助]%”,則意思正好相反,是指第一個字元不可以是“副”或“助”。 若是一連串的字元都可以,例如可由A到H開頭的字串,則可寫成"[^A-H]%"。中括號的用法並不限定在字串的開頭才可使用,字串的其他位置也可以使用。 底線符號“_”表示該位置一定要有一個字元, 所以“_M%”的意思是,任意一個字元其後跟 隨英文字母"M",其後再跟隨0個以上的任意字元。 透視ASP.NET-第12章 王有禮教授編著

合併資料表的查詢(1/5) 合併資料表的基本語法如下: Select 欄位名稱一, 欄位名稱二, … from 資料表名稱一 合併類型 資料表名稱二 on 合併條件 例如我們要將學生資料表Students和成績資料表Grades合併成學生成績資料表StudentScores,其寫法如下: Select Students.StudentName, Students.StudentNo, Students.Department, Students.Class, Grades.CourseID, Grades.Scores from Students inner join Grades on Students.StudentNo = Grades.StudentNo 範例程式:WebPage1207.aspx 瀏覽WebPage1207.aspx 透視ASP.NET-第12章 王有禮教授編著

合併資料表的查詢(2/5) 若也要顯示李世傑的資料,但是課程代號及成績以Null代之。以避免有學生未選課,而學校並不知情。則合併類型要用left outer join,其SQL statement如下: Select Students.StudentName, Students.StudentNo, Students.Department, Students.Class, Grades.CourseID, Grades.Scores from Students left outer join Grades on Students.StudentNo = Grades.StudentNo 若將WebPage1207.aspx的第9行到第13行換成上述SQL statement,則顯示的畫面如圖12.15。 圖12.15 合併類型為left outer join 透視ASP.NET-第12章 王有禮教授編著

合併資料表的查詢(3/5) 合併類型為left outer join的原因是,學生資料表Students是位在left outer join的左邊。若學生資料表Students是位在右邊,則from部分要寫成 from Grades right outer join Students 若不管合併類型左或右邊的資料表,即使沒有對應的資料,也要顯示該筆資料,可用full outer join,即from部分寫成: from Grades full outer join Students 透視ASP.NET-第12章 王有禮教授編著

合併資料表的查詢(4/5) 把Students、Grades、Courses、Teachers這四個資料表合併成表11.2,其程式如圖12.16的WebPage1208.aspx。 <%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQLClient" %> <script runat="server"> sub Page_Load(obj as Object, e as EventArgs) dim myConnection as new SQLConnection _ ("server=localhost;uid=sa;pwd=;database=CourseInformation") dim strSQL as string strSQL = "Select Students.StudentName, Students.StudentNo, " strSQL += "Students.Department, Students.Class, " strSQL += "Courses.CourseName, Courses.CourseID, Courses.CoursePoints, " strSQL += "Grades.Scores, " strSQL += "Teachers.TeacherName, Teachers.TeacherTitle " strSQL += "from Students inner join Grades " strSQl += "inner join Courses " strSQL += "inner join Teachers " strSQL += "on Courses.TeacherName = Teachers.TeacherName " strSQL += "on Courses.CourseID = Grades.CourseID " strSQL += "on Students.StudentNo = Grades.StudentNo " dim myCommand as new SQLDataAdapter(strSQL, myConnection) dim ds as new DataSet() myCommand.Fill(ds, "StudentScores") ListData.DataSource = ds.Tables("StudentScores") ListData.DataBind end sub </script> 透視ASP.NET-第12章 王有禮教授編著

合併資料表的查詢(5/5) 圖12.17 瀏覽WebPage1208.aspx <html><body><form runat="server"> <asp:DataGrid ID="ListData" Runat="server" BorderColor="black" CellPadding="4" Font-Size="8pt" HeaderStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-BackColor="#cccccc" AutoGenerateColumns="false"> <Columns> <asp:BoundColumn HeaderText="學生姓名" DataField="StudentName" /> <asp:BoundColumn HeaderText="學號" DataField="StudentNo" /> <asp:BoundColumn HeaderText="系別" DataField="Department" /> <asp:BoundColumn HeaderText="年級" DataField="Class" /> <asp:BoundColumn HeaderText="課程名稱" DataField="CourseName" /> <asp:BoundColumn HeaderText="課程代號" DataField="CourseID" /> <asp:BoundColumn HeaderText="開課老師" DataField="TeacherName" /> <asp:BoundColumn HeaderText="老師職稱" DataField="TeacherTitle" /> <asp:BoundColumn HeaderText="學分" DataField="CoursePoints" /> <asp:BoundColumn HeaderText="成績" DataField="Scores" /> </Columns> </DataGrid> </form></body></html> 圖12.16 WebPage1208.aspx 圖12.17 瀏覽WebPage1208.aspx 透視ASP.NET-第12章 王有禮教授編著

統計資料查詢(1/2) 在SQL Server中,常用的統計函數有:Count、Max、Min、Avg、Sum,Count是計算總數的,Max是找欄位中的最大值,Min是找欄位中的最小值,Avg是計算所有欄位值的平均值,Sum是將所有欄位值加總。 圖12.19的WebPage1209.aspx就是算資料表Grades的上述統計資料。 <%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQLClient" %> <script runat="server"> sub Page_Load(obj as Object, e as EventArgs) dim myConnection as new SQLConnection _ ("server=localhost;uid=sa;pwd=;database=CourseInformation") dim strSQL as string strSQL = "Select Count(*) as TotalPerson, " strSQL += "Max(Scores) as MaxScore, " strSQL += "Min(Scores) as MinScore, " strSQL += "Avg(Scores) as AvgScore, " strSQL += "Sum(Scores) as SumScore " strSQL += "from Grades" dim myCommand as new SQLDataAdapter(strSQL, myConnection) dim ds as new DataSet() myCommand.Fill(ds, "StudentScores") ListData.DataSource = ds.Tables("StudentScores") ListData.DataBind end sub </script> <html><body><form runat="server"> 透視ASP.NET-第12章 王有禮教授編著

統計資料查詢(2/2) 圖12.20 瀏覽WebPage1208.aspx <asp:DataGrid ID="ListData" Runat="server" BorderColor="black" CellPadding="4" Font-Size="8pt" HeaderStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" AlternatingItemStyle-BackColor="#cccccc" AutoGenerateColumns="false"> <Columns> <asp:BoundColumn HeaderText="學生人數" DataField="TotalPerson" /> <asp:BoundColumn HeaderText="最高分" DataField="MaxScore" /> <asp:BoundColumn HeaderText="最低分" DataField="MinScore" /> <asp:BoundColumn HeaderText="平均分數" DataField="AvgScore" /> <asp:BoundColumn HeaderText="分數總和" DataField="SumScore" /> </Columns> </DataGrid> </form></body></html> 圖12.19 WebPage1209.aspx 圖12.20 瀏覽WebPage1208.aspx 透視ASP.NET-第12章 王有禮教授編著