首页 黑马程序员 sql

黑马程序员 sql

举报
开通vip

黑马程序员 sql黑马程序员 sql 黑马程序员 SQL WP7培训、.NET培训、期待与您交流! 数据库概述: ? DBMS(DataBase Management System,数据库管理系统)和数据库。平时谈到的“数据库”可能有两种含义: MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)。 ? 不同品牌的DBMS有自己的不同特点:MYSQL、MSSQLServer、DB2、Oracle、Access、Sybase等。对于开发人员来讲,大同小异。 ? SQL。。。SQL...

黑马程序员 sql
黑马程序员 sql 黑马程序员 SQL WP7 培训 焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载 、.NET培训、期待与您交流! 数据库概述: ? DBMS(DataBase Management System,数据库管理系统)和数据库。平时谈到的“数据库”可能有两种含义: MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)。 ? 不同品牌的DBMS有自己的不同特点:MYSQL、MSSQLServer、DB2、Oracle、Access、Sybase等。对于开发人员来讲,大同小异。 ? SQL。。。SQLServer。。。MSSQLServer 这是最常见的错误。 ? 除了Access、SQLServerCE等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。 数据库中的概念: ? Catalog(分类)(又叫数据库DataBase、表空间TableSpace),不同类的数据应该放到不同的数据库中 。 优点: 1. 便 于对各个Catalog进行个性化管理 2. 避免命名冲突 3. 安全性更高 ? Table(表):书都放到书架上,碗都放到橱柜中,不同类型的资料收到不同的“格子”中。将这种区域叫做“表”(Table)。不同的表根据放的数据不同,进行空间的优化,找起来方便。 ? 列(Column)、字段(Field) 主键(PrimaryKey) 主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由都要设定主键。 主键有两种选用策略:业务主键 和 逻辑主键。 业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键 是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(账号升位),因此推荐用逻辑主键。 SQL Server Management Studio Express 创建数据库,创建表,创建主键 SQL语句中 通过 -- 为代码做注释。 常用字段类型: bit 相当于C#中的bool 这里的bit只有两个值 0 和 1 . 10) :10个字符 datetime 系统时间 int 整数型 varchar 纯英文的字符 nvarchar 含有英文之外的字符 nvar50) 长度为50字符的nvarchar nvarmax) 无限大 varchar 和 n)的区别: n)不足长度n的部分用空格填充。 SQL语句入门 ? SQL语句是是和DBMS“交谈”专用的语句。不同DBMS都认SQL语法。 ? SQL语句中字符串用单引号。 ? SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的。 ? 创建表、删除表不仅可以手工完成,还可以执行SQL语句完成。在自动化步署、数据导入中用的很多,Create TABLE Person03(Number int,Name nvar10),Age int):这里是使用SQL语句创建一个表 DROP TABLE T_Person1 :这里是使用SQL语句删除一个表。 ? 简单的Insert语句。INSERT INTO T_Person(ld,Name,Age)VALUES(1,’jim’,20) 使用SQL语句往表里填数据。 ? SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。Create Table 、Drop Table、After Table等属于DDL, Select、Insert、Delete、Update 等属于DML。 主键的选择策略: ? SQLServer中两种常用的主键数据类型:int(或bigint)+标识列(又称自动增长字段); uniqueidentifier(又称Guid、UUID) ? 用标识能实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在Insert的时候不用指定主键的值。将字段的“是标识列”设置为“是”,一个表只能有一个标志列。 ? Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这样保证每次生成的GUID永远都不会重复,无论是同一个计算机上还是不同的计算机。在公元3400年以前产生的GUID与任何其他产生过的GUID都不相同。 SQLServer中生 成GUID的函数newid(),.Net中生成GUID的方法:Guid.NewGuid(),返回是Guid类型。 ? 在SQLServer中,可以调用下列指令产生一个GUID码。 select newId(); ? int自增字段的优点:占用空间小,无需开发人员干预、易读;缺点:效率低; 数据库导入导出的时候很痛苦。 ? GUID的优点:效率高、数据导入导出方便; 缺点:占用空间大、不易读。 ? 业界主流倾向于使用GUID。 数据的插入: ? into Person1(Name,Age)values(‘Lilei’,20) *红色部分可省略。 ?使用GUID做主键,插入数据方法: ? 可以给字段默认值,如果Guid类型主键的默认值设定为newid()就会自动生成。(很少这么干) ? 如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。 数据的更新: ? 更新一个列:UPDATE T_Person SET Age=30 ? 更新多个列:UPDATE Person SET Age=30,Name=’Lucky’ ? UPDATE Person01 SET Age=Age+1 在字段本身的基础上+1 ? UPDATE Person01 SET NickName=N青年人 where Age30 上式为一个带过滤语句的 更新语句。Age>30 时 NickName=’青年人’ ? SQL语句中 [等于] 条件 就用“=”而非C#中的“==”。 ? SQL语句中 [不等于]条件 可用“!=” 也可“”. ? SQL语句中 [或] 用“or” 而非C#中的“||” ,[且] and [非] not ? 数据的删除: ? 删除表中全部数据:DELETE From T_Person ? Delete只删除数据,表还在,和Drop Table不同,后者连表都删除。 ? Delete也可以带where子句删除一部分数据: from T_Person Where Age>20 ? 数据检索: ? 简单的数据检索:select *from Person03 *表所有字段 ? 如仅检索其中个别字段:select FName,FAge from Person03 ? 使用条件: select * from Person03 where FSalary5000 (工资小于5K) ? select的更多用法: select getdate(); 获取当前时间 select newid(); 获取一个GUID码 select 1+2 3 select @@Version 查询软件版本 select count(*)from Person03 查有多少条数据 select count(*)from Person03 where FSalary>5000 查询工资大于5000的人数 SQL聚合函数: select max(FSalary)from Person03 查最高工资 select min(FSalary)from Person03 查最低工资 select avg(FSalary)from Person03 平均工资 select sum(FSalary)from Person03 求和 数据排序: 按(年龄)排排列所有员工: select * from Person03 order by FAge (年龄)按升、降序排列 select * from Person03 order by FAge asc/DESC 年龄并列的人,工资再按升序排列 select * from Person03 order by FAge desc,FSalary asc //可用,分隔多个条件,越往前越优先。 order by 可放在where 子句后: select * from Person03 where FAge>=25 order by FAge desc,FSalary asc :25岁以上的员工,按年龄降序排列,年龄相同的,工资按升序排列。 通配符过滤: ? 通配符过滤使用LIKE。 ? 单字符匹配的通配符为半角下划线“_” ,它匹配单个出现的字符。 ? 多字符匹配的通配符为半角百分号“%”它匹配任意次数(零或多个)出现的任意字符。“k%”匹配以“k”开头、任意长度的字符串。 select * from Person03 where FName like %y; 空值处理: ? 数据库中,一个列如果没有指定值,那么值就为null,这个null和C#中的null不同,数据库中的null表示“不知道”,而不是表示没有。因此 select null+1结果还是null,因为“不知道”加1的结果还是“不知道”。SQL中使用is null is not null 来判断。 例:下面是一个错误的子句 select * from Person03 //此举本意是想查询FName为空的数据 where FName=null //“不知道”的意思! 正确的方式为: select * from Person03 where FName is null 另:不为空的数据为: select * from Person03 where FName is not null ? isnull(expression,value):如果expression不为空则返回expression,否则,返回value。例: select isnull (FName,佚名)as 姓名from Person03 多值匹配: select * from Person03 //查询年龄为3、25、28的成员 where FAge=23 or FAge=25 or FAge=28 另一种方法: select * from Person03 where FAge in (23,25,28) select * from Person03 where FAge>20 and FAge30 //取年龄20-30间的成员 另一种简便方法: select * from Person03 where FAge between 27 and 30 数据分组: ? 按照年龄分组,统计各个年龄段的人数: select FAge,count(*)from Person03 group by FAge ? Group by 子句必须放到where语句之后。 select FAge,count(*)from Person03 where FAge>=25 group by FAge ? 没出现在Group by 子句中的列是不能放到select 语句后的列名列表中的。(聚合函数中除外)聚合函数:sum avg max min select FAge, FName,count(*)from Person03 group by FAge //错误用法 select FAge,max(FSalary),count(*)from Person03 group by FAge //正确用法 ,句中虚线部分使用聚合函数 Having语句: ? 聚合函数是不能出现在where子句中的。 select FAge,count(*) from Person03 where count(*)>1 group by FAge //错误的。用意是想检索按年龄分组,人员为1的组不显示,怎么解决才好? se人间没有永恒的夜晚,世界没有永恒的冬天。
本文档为【黑马程序员 sql】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:8
分类:初中语文
上传时间:2017-09-20
浏览量:46