《研发部数据库应用开发培训.ppt》由会员分享,可在线阅读,更多相关《研发部数据库应用开发培训.ppt(36页珍藏版)》请在金锄头文库上搜索。
1、北京城市网尚科技发展有限公司北京城市网尚科技发展有限公司Beijing Citynet Technology Development Co., Ltd 数据库应用开发数据库应用开发 1 1 All rights reserved 2004,Beijing CItynet Technology一、一、一、一、SQL server SQLSQL server SQLSQL server SQLSQL server SQL语言概要语言概要语言概要语言概要二、如何读懂数据库设计图二、如何读懂数据库设计图二、如何读懂数据库设计图二、如何读懂数据库设计图三、如何使用三、如何使用三、如何使用三、如何使用SQ
2、L ServerSQL ServerSQL ServerSQL Server企业管理器、查询分析器企业管理器、查询分析器企业管理器、查询分析器企业管理器、查询分析器四、四、四、四、.NET.NET.NET.NET中对于数据库访问提供的对象(熟悉中对于数据库访问提供的对象(熟悉中对于数据库访问提供的对象(熟悉中对于数据库访问提供的对象(熟悉DataSetDataSetDataSetDataSet、DataTableDataTableDataTableDataTable、DataRowDataRowDataRowDataRow对象)对象)对象)对象)五、使用五、使用五、使用五、使用SqlSqlSq
3、lSql Helper Helper Helper Helper并创建并创建并创建并创建DBAccessDBAccessDBAccessDBAccess实现数据库封实现数据库封实现数据库封实现数据库封装装装装六、如何使用六、如何使用六、如何使用六、如何使用DBAccessDBAccessDBAccessDBAccess提供的方法提供的方法提供的方法提供的方法 目录目录 2 2 All rights reserved 2004,Beijing CItynet Technology 一、一、SQL语言概要语言概要一、数据类型一、数据类型一、数据类型一、数据类型二、二、二、二、SQLSQLSQLSQ
4、L语句语句语句语句 3 3 All rights reserved 2004,Beijing CItynet Technology 数据类型数据类型Char和和Varcharlchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。l所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。ltext存储可变长度的非Unicode数据,最大长度为231-1(2,147,483,647)个字符。 4 4 All rights reserved 2
5、004,Beijing CItynet Technology 数据类型数据类型Nchar、Nvarcharlnvarchar、nchar从名称上看只是多了个字母“n”,它表示存储的是Unicode数据类型的字符。l字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还
6、是汉字;而char、varchar最多能存储8000个英文,4000个汉字。l可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 5 5 All rights reserved 2004,Beijing CItynet Technology 数据类型数据类型DateTimeldatetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。 6 6 All rights reserved 2004,Beijing CItynet Technology 数据类型数据类型BigInt、Int、
7、SmallInt、TinyIntlbigint:从-263(-9223372036854775808)到263-1(9223372036854775807)的整型数据。 int:从-231(-2,147,483,648)到231-1(2,147,483,647)的整型数据。 smallint:从-215(-32,768)到215-1(32,767)的整数数据。 tinyint:从0到255的整数数据。 Bitlbit:1或0的整数数据。 7 7 All rights reserved 2004,Beijing CItynet Technology 数据类型数据类型Decimal/Numeric
8、、Floact、Realldecimal和和numeric 这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0。 lfloat和和real float:从-1.79308到1.79308之间的浮点数字数据。 real:从-3.4038到3.4038之间的浮点数字数据。在SQL Server中,real的同义词为float(24)。 8 8 All rights reserved 2004,Beijing CI
9、tynet Technology SQL语句语句l lSelectSelectSelectSelect语句语句语句语句l lInsertInsertInsertInsert语句语句语句语句l lUpdateUpdateUpdateUpdate语句语句语句语句l lDeleteDeleteDeleteDelete语句语句语句语句l l其他常用的其他常用的其他常用的其他常用的 SQLSQLSQLSQL语句语句语句语句 9 9 All rights reserved 2004,Beijing CItynet TechnologySELECT ALL | DISTINCT FROM ,n WHERE
10、Partial Syntax1 SELECT StatementlSelect ListlWHERElFROM 1010 All rights reserved 2004,Beijing CItynet Technology 指定指定列列 employeeidemployeeidlastnamelastnamefirstnamefirstnametitletitle1DavolioNancySales Representative2FullerAndrewVice President, Sales3LeverlingJanetSales Representative4PeacockMargar
11、etSales Representative5BuchananStevenSales Manager6SuyamaMichaelSales Representative7KingRobertSales Representative8CallahanLauraInside Sales Coordinator9DodsworthAnneSales RepresentativeUSE northwindSELECT employeeid, lastname, firstname, titleFROM employeesGO 1111 All rights reserved 2004,Beijing
12、CItynet Technology WHERE 过滤行过滤行employeeidemployeeidlastnamelastnamefirstnamefirstnametitletitle5BuchananStevenSales ManagerUSE northwindSELECT employeeid, lastname, firstname, titleFROM employeesWHERE employeeid = 5GO 1212 All rights reserved 2004,Beijing CItynet Technology 修改列修改列名名1)SELECT au_fname
13、, au_lname, city, state,phone AS Telephone FROM authors-推荐使用推荐使用2)SELECT au_fname, au_lname, city, state,Telephone= phone FROM authors3)SELECT au_fname, au_lname, city, state, phone Telephone FROM authors 1313 All rights reserved 2004,Beijing CItynet Technology 更改表名更改表名1)SELECT a.* from authors as a
14、2)SELECT a.* from authors a3)select b.* from (select * from authors) as b 1414 All rights reserved 2004,Beijing CItynet TechnologyInsertl单行数据INSERT VALUESl多行数据INSERTSELECTlSELECT INTOl插入部分数据l使用默认插入数据 1515 All rights reserved 2004,Beijing CItynet Technology插入单行数据插入单行数据l语法INSERT INTO 表名 列名序列 VALUES (值
15、序列)l例子USE northwindINSERT INTO orders(ID,quantity,note)VALUES(1,10,NewOrder) GO 1616 All rights reserved 2004,Beijing CItynet TechnologyDELETEl语法DELETE FROM 表名 WHERE 删除条件 l例子USE northwindDELETE from ordersGO 1717 All rights reserved 2004,Beijing CItynet TechnologyUSE northwindUPDATE products SET uni
16、tprice = (unitprice * 1.1)GOUpdatel语法UPDATE 表名 SET 列名=常量值 | 表达式 WHERE 更新条件 l例子 1818 All rights reserved 2004,Beijing CItynet Technology 其他有用的其他有用的SQLl删除重复行l限制返回行数lIN(NOT IN)lLIKElIS NULLl查询结果排序lISNULL() 函数l联合查询 1919 All rights reserved 2004,Beijing CItynet Technology 1 1 1 1、删除重复行、删除重复行、删除重复行、删除重复行S
17、ELECTSELECTSELECTSELECT语句中使用语句中使用语句中使用语句中使用ALLALLALLALL或或或或DISTINCTDISTINCTDISTINCTDISTINCT选项来显示表中符合条件的所有行或删除其中选项来显示表中符合条件的所有行或删除其中选项来显示表中符合条件的所有行或删除其中选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为重复的数据行,默认为重复的数据行,默认为重复的数据行,默认为ALLALLALLALL。使用使用使用使用DISTINCTDISTINCTDISTINCTDISTINCT选项时,对于所有重复的数据行在选项时,对于所有重复的数据行在选项时,对于
18、所有重复的数据行在选项时,对于所有重复的数据行在SELECTSELECTSELECTSELECT返回的结果集合中只保留返回的结果集合中只保留返回的结果集合中只保留返回的结果集合中只保留一行。一行。一行。一行。2 2 2 2、限制返回的行数、限制返回的行数、限制返回的行数、限制返回的行数使用使用使用使用TOP n PERCENTTOP n PERCENTTOP n PERCENTTOP n PERCENT选项限制返回的数据行数,选项限制返回的数据行数,选项限制返回的数据行数,选项限制返回的数据行数,TOP nTOP nTOP nTOP n说明返回说明返回说明返回说明返回n n n n行,而行,而
19、行,而行,而TOP n TOP n TOP n TOP n PERCENTPERCENTPERCENTPERCENT时,说明时,说明时,说明时,说明n n n n是是是是表示一百分数,指定返回的行数等于总行数的百分之几。表示一百分数,指定返回的行数等于总行数的百分之几。表示一百分数,指定返回的行数等于总行数的百分之几。表示一百分数,指定返回的行数等于总行数的百分之几。例如:例如:例如:例如:SELECT TOP 2 *SELECT TOP 2 *SELECT TOP 2 *SELECT TOP 2 *FROM FROM FROM FROM testtabletesttabletesttable
20、testtableSELECT TOP 20 PERCENT *SELECT TOP 20 PERCENT *SELECT TOP 20 PERCENT *SELECT TOP 20 PERCENT *FROM FROM FROM FROM testtabletesttabletesttabletesttable 2020 All rights reserved 2004,Beijing CItynet Technologyl lNOT IN (NOT IN (NOT IN (NOT IN (项项项项1,1,1,1,项项项项2 2 2 2) ) ) )l l模式匹配符模式匹配符模式匹配符模式匹
21、配符( ( ( (判断值是否与指定的字符通配格式相符判断值是否与指定的字符通配格式相符判断值是否与指定的字符通配格式相符判断值是否与指定的字符通配格式相符):LIKE):LIKE):LIKE):LIKE、NOT LIKENOT LIKENOT LIKENOT LIKE空值判断符空值判断符空值判断符空值判断符( ( ( (判断表达式是否为空判断表达式是否为空判断表达式是否为空判断表达式是否为空) ) ) ):IS NULLIS NULLIS NULLIS NULL、NOT IS NULLNOT IS NULLNOT IS NULLNOT IS NULL逻辑运算符逻辑运算符逻辑运算符逻辑运算符(
22、( ( (用于多条件的逻辑连接用于多条件的逻辑连接用于多条件的逻辑连接用于多条件的逻辑连接) ) ) ):NOTNOTNOTNOT、ANDANDANDAND、ORORORORl l1 1 1 1、范围运算符例:、范围运算符例:、范围运算符例:、范围运算符例:age BETWEEN 10 AND 30age BETWEEN 10 AND 30age BETWEEN 10 AND 30age BETWEEN 10 AND 30相当于相当于相当于相当于age=10 AND age=10 AND age=10 AND age=10 AND age=302 2 2 2、列表运算符例:、列表运算符例:、列
23、表运算符例:、列表运算符例:country IN (country IN (country IN (country IN (GermanyGermanyGermanyGermany, , , ,ChinaChinaChinaChina) ) ) )3 3 3 3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于可用于可用于可用于charcharcharc
24、har、varcharvarcharvarcharvarchar、texttexttexttext、ntextntextntextntext、datetimedatetimedatetimedatetime和和和和smalldatetimesmalldatetimesmalldatetimesmalldatetime等类型查询。等类型查询。等类型查询。等类型查询。l l空值判断符例空值判断符例空值判断符例空值判断符例 WHERE age IS NULLWHERE age IS NULLWHERE age IS NULLWHERE age IS NULLl l逻辑运算符:优先级为逻辑运算符:优先
25、级为逻辑运算符:优先级为逻辑运算符:优先级为NOTNOTNOTNOT、ANDANDANDAND、OROROROR 2121 All rights reserved 2004,Beijing CItynet Technology( ( ( (四四四四) ) ) )查询结果排序查询结果排序查询结果排序查询结果排序 使用使用使用使用ORDER BYORDER BYORDER BYORDER BY子句对查询返回的结果按一列或多列排序。子句对查询返回的结果按一列或多列排序。子句对查询返回的结果按一列或多列排序。子句对查询返回的结果按一列或多列排序。ORDER BYORDER BYORDER BYORDE
26、R BY子句的子句的子句的子句的语法格式为:语法格式为:语法格式为:语法格式为:ORDER BY ORDER BY ORDER BY ORDER BY column_namecolumn_namecolumn_namecolumn_name ASC|DESC , ASC|DESC , ASC|DESC , ASC|DESC ,nnnn其中其中其中其中ASCASCASCASC表示升序,为默认值,表示升序,为默认值,表示升序,为默认值,表示升序,为默认值,DESCDESCDESCDESC为降序。例如:为降序。例如:为降序。例如:为降序。例如:SELECT *SELECT *SELECT *SELE
27、CT *FROM FROM FROM FROM usertableusertableusertableusertableORDER BY age ORDER BY age ORDER BY age ORDER BY age desc,useriddesc,useriddesc,useriddesc,userid ASC ASC ASC ASC另外,可以根据表达式进行排序。另外,可以根据表达式进行排序。另外,可以根据表达式进行排序。另外,可以根据表达式进行排序。 2222 All rights reserved 2004,Beijing CItynet Technology ISNULL ( I
28、SNULL ( check_expressioncheck_expression , , replacement_valuereplacement_value ) ) 参数参数参数参数check_expressioncheck_expression将被检查是否为将被检查是否为将被检查是否为将被检查是否为 NULLNULL的表达式。的表达式。的表达式。的表达式。check_expressioncheck_expression 可以是任何类型的。可以是任何类型的。可以是任何类型的。可以是任何类型的。replacement_valuereplacement_value在在在在 check_expre
29、ssioncheck_expression 为为为为 NULLNULL时将返回的表达式。时将返回的表达式。时将返回的表达式。时将返回的表达式。replacement_valuereplacement_value 必须与必须与必须与必须与 check_expresssioncheck_expresssion 具有相同的类型。具有相同的类型。具有相同的类型。具有相同的类型。 返回类型返回类型返回类型返回类型返回与返回与返回与返回与 check_expressioncheck_expression 相同的类型。相同的类型。相同的类型。相同的类型。注释注释注释注释如果如果如果如果 check_expr
30、essioncheck_expression 不为不为不为不为 NULLNULL,那么返回该表达式的值;否则返回,那么返回该表达式的值;否则返回,那么返回该表达式的值;否则返回,那么返回该表达式的值;否则返回 replacement_valuereplacement_value。示例示例示例示例A. A. 将将将将 ISNULL ISNULL 与与与与 AVG AVG 一起使用一起使用一起使用一起使用下面的示例查找所有书的平均价格,用值下面的示例查找所有书的平均价格,用值下面的示例查找所有书的平均价格,用值下面的示例查找所有书的平均价格,用值 $10.00 $10.00 替换替换替换替换 ti
31、tles titles 表的表的表的表的 price price 列中的所有列中的所有列中的所有列中的所有 NULL NULL 条条条条目。目。目。目。USE USE pubsGOSELECTpubsGOSELECT AVG(ISNULL(priceAVG(ISNULL(price, $10.00)FROM , $10.00)FROM titlesGOtitlesGO下面是结果集:下面是结果集:下面是结果集:下面是结果集:- 14.24 (1 - 14.24 (1 row(srow(s) affected) affected)B. B. 使用使用使用使用 ISNULLISNULL下面的示例为下
32、面的示例为下面的示例为下面的示例为 titles titles 表中的所有书选择书名、类型及价格。如果一个书名的价格是表中的所有书选择书名、类型及价格。如果一个书名的价格是表中的所有书选择书名、类型及价格。如果一个书名的价格是表中的所有书选择书名、类型及价格。如果一个书名的价格是 NULLNULL,那么在结果集中显示的价格为那么在结果集中显示的价格为那么在结果集中显示的价格为那么在结果集中显示的价格为 0.000.00。USE USE pubsGOSELECTpubsGOSELECT SUBSTRING(titleSUBSTRING(title, 1, 15) AS Title, type A
33、S Type, , 1, 15) AS Title, type AS Type, ISNULL(priceISNULL(price, 0.00) , 0.00) AS AS PriceFROMPriceFROM titlesGOtitlesGO 2323 All rights reserved 2004,Beijing CItynet Technologyl l二、联合查询二、联合查询二、联合查询二、联合查询内连接左连接右连接关键词inner join、left join、right join 2424 All rights reserved 2004,Beijing CItynet Tech
34、nologyJoin用途:用途:当你要从两个或者以上的表中选取结果集时,你就会用到当你要从两个或者以上的表中选取结果集时,你就会用到JOIN。例:例:“Employees”表中的数据如下,(其中表中的数据如下,(其中ID为主键)为主键):ID Name 01 Hansen, Ola02 Svendson, Tove03 Svendson, Stephen04 Pettersen, Kari“Orders”表中的数据如下:表中的数据如下:ID Product01 Printer03 Table03 Chair用用Employees的的ID和和Orders的的ID相关联选取数据:相关联选取数据:
35、2525 All rights reserved 2004,Beijing CItynet TechnologySELECT Employees.Name, Orders.ProductFROM Employees, OrdersWHERE Employees.ID = Orders.ID返回结果:返回结果:Name ProductHansen, Ola PrinterSvendson, Stephen TableSvendson, Stephen Chair或者你也可以用或者你也可以用JOIN关键字来完成上面的操作:关键字来完成上面的操作:SELECT Employees.Name, Ord
36、ers.ProductFROM EmployeesINNER JOIN OrdersON Employees.ID = Orders.ID INNER JOIN的语法:的语法:SELECT field1, field2, field3FROM first_tableINNER JOIN second_tableON first_table.keyfield = second_table.foreign_keyfield 解释:解释:INNER JOIN返回的结果集是两个表中所有相匹配的数据。返回的结果集是两个表中所有相匹配的数据。 2626 All rights reserved 2004,B
37、eijing CItynet TechnologylLEFT JOIN的语法:的语法:SELECT field1, field2, field3FROM first_tableLEFT JOIN second_tableON first_table.keyfield = second_table.foreign_keyfield l用用”Employees”表去左外联结表去左外联结”Orders”表去找出相关数据:表去找出相关数据:SELECT Employees.Name, Orders.ProductFROM EmployeesLEFT JOIN OrdersON Employees.ID
38、 = Orders.ID l返回结果:返回结果:Name ProductHansen, Ola PrinterSvendson, ToveSvendson, Stephen TableSvendson, Stephen ChairPettersen, Kari l解释:解释:LEFT JOIN返回返回”first_table”中所有的行尽管在中所有的行尽管在” second_table”中没有相中没有相匹配的数据。匹配的数据。 2727 All rights reserved 2004,Beijing CItynet TechnologylRIGHT JOIN的语法:的语法:SELECT fi
39、eld1, field2, field3FROM first_tableRIGHT JOIN second_tableON first_table.keyfield = second_table.foreign_keyfield l用用”Employees”表去右外联结表去右外联结”Orders”表去找出相关数据:表去找出相关数据:SELECT Employees.Name, Orders.ProductFROM EmployeesRIGHT JOIN OrdersON Employees.ID = Orders.ID l返回结果:返回结果:Name ProductHansen, Ola Pr
40、interSvendson, Stephen TableSvendson, Stephen Chairl解释:解释:RIGHT JOIN返回返回” second_table”中所有的行尽管在中所有的行尽管在”first_table”中没有相匹配的数据。中没有相匹配的数据。 2828 All rights reserved 2004,Beijing CItynet Technology 二、数据库设计图讲解二、数据库设计图讲解 2929 All rights reserved 2004,Beijing CItynet Technology 3030 All rights reserved 200
41、4,Beijing CItynet Technology 三、使用企业管理器和查询分析器三、使用企业管理器和查询分析器l(实例) 3131 All rights reserved 2004,Beijing CItynet Technology 四、四、ADO.NETlDataSetlDataSet 对象是支持 ADO.NET 的断开式、分布式数据方案的核心对象。DataSet 是数据的内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。 l一个 ADO.NET DataSet 包含 DataTable 对象所表示的零个或更多个表的集合。DataTableCollection 包含
42、 DataSet 中的所有 DataTable 对象。lDataTable 在 System.Data 命名空间中定义,表示内存驻留数据表。l它包含 DataColumnCollection 所表示的列和 ConstraintCollection 所表示的约束的集合,这些列和约束一起定义了该表的架构。DataTable 还包含 DataRowCollection 所表示的行的集合,而 DataRowCollection 则包含表中的数据。lDataTablelDataRow(实例) 3232 All rights reserved 2004,Beijing CItynet Technology
43、 五、使用五、使用Sql Helper并创建并创建DBAccess实现实现 数据库封装数据库封装l实例 3333 All rights reserved 2004,Beijing CItynet Technology 六、如何使用六、如何使用DBAccess提供的方法提供的方法l(实例)DataGrid控件的使用 3434 All rights reserved 2004,Beijing CItynet Technology 学习学习sql server有用的网址有用的网址l http:/ 3535 All rights reserved 2004,Beijing CItynet Technology谢谢! Thank s for your attention !