黑马程序员SQl server数据管理

本文介绍了SQL Server中对数据的基本操作,包括单行和多行插入、更新、删除以及查询。讲解了INSERT、UPDATE、DELETE、TRUNCATE语句的用法,并详细阐述了SELECT查询的语法,包括WHERE、ORDER BY、GROUP BY和HAVING子句的使用。此外,还提到了在查询中处理NULL值、使用IN和BETWEEN关键字的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------  

一、单行插入

插入可分为:全部插入和部分插入

-全部插入的写法有两种:把所有的列名列出来、省略列名。

 部分插入:只需把部分的列名列出来

语法

INSERT [INTO]<表名> [列名]VALUES<值列表>

注意原则:对应一致,(,)values(,)

例如创建一个表:

create table t1

(id int, strnchar(5),date datetime)

--全部插入

INSERT t1(id,str ,date)VALUES(1,'a' ,'2010-1-5')

INSERT t1 VALUES(1,'a2' ,'2010-2-5')

--部分插入

insert t1(id,str)values(5,'55')

二、多行插入

插入分为两种形式

1、从现有的表【一个或多个AA2】取数据放到现有的表B中【B必须已经存在】

语法

一个表

INSERT [INTO] <表名B>([列名])SELECT <列名>FROM<源表名A>

多个表

INSERT [INTO] <表名B>([列名]) SELECT <列名>FROM <源表名A>UNION SELECT <列名>FROM <源表名A2>

例如:

insertt3(x,y)

select id,str + CAST(dateasnvarchar(10))from t1 union

select a,b from t2

2、从现有的表【一个或多个AA2】取数据放到新建的表B中【B原来不存在】

语法

SELECT (列名) INTO<新建的表名> FROM <现有的表>

 

三、更新

1.语法

UPDATE<表名>SET <列名=更新值>[WHERE <更新条件>]

更新数据行:最好有WHERE <更新条件>

四、删除表的数据

1.语法

DELETE[FROM]  <表名> [WHERE<删除条件>]

注意事项:删除数据行:最好有WHERE <删除条件>,删除主表数据时,不能删除被从表外键值所引用的数据行。

五、删除所有数据-TRUNCATE

语法

TRUNCATE TABLE <表名>

TruncateDelete区别

1、使用TRUNCATE TABLE要比DELETE语句效率高

2TRUNCATE TABLE没有WHERE删除条件

3TRUNCATE TABLE可以重置自增长列

六、基本查询

定义:查询是对数据库服务器数据进行检索的一种请求

查询通常用的语句为SELECT语句

SELECT 语句从SQL Server中检索出数据,然后以一个或多个结果集的形式将其返回给用户,结果集以表格排列,由行和列组成

查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来

语法

SELECT[ALL|DISTINCT][TOP n[PERCENT] ] select_list

FROM {<表资源>} [,…n]

[WHERE] <搜索条件>

[GROUP BY] {<分组表达式>}[,…n] [HAVING] <搜索条件>

[ORDER BY]{<字段名[ASC|DESC]>} [,…n]

每个关键字的含义:

DISTINCT 从结果集中消除了重复的行

TOP n 限定了要返回的行数

select_list选择列表指定按照指定顺序查找并显示的列,可以包含字段名,表达式,局部变量;字段名用分开,最后一个除外 { *|{表名|表别名}.*|{字段名|表达式}[[AS]字段别名]|字段别名=表达式} [,...n]

FROM子句指定表资源,即从中检索到结果集数据的表的列表

WHERE子句指定限制查询的条件

ORDER BY子句对结果集按某种条件进行排序

GROUP BY 子句是对结果集进行分组

HAVING子句是在分组的时候,对字段或表达式指定搜索条件

注意事项 TOP后使用无符号的整数,如果TOP nPERCENT生成小数则取整

WITH TIES :返回与TOP n(PERCENT)行中的最后一行的值相同的行

使用ORDER BY 排序应注意的问题

SQL Server 并不主动为结果集中的行排序

SQL Server 缺省按升序排列

ORDER BY 子句中指定的列不一定要出现在选择列表中

ORDER BY 子句中可以引用某字段在选择列表中的位置而进行排序

可以按照字段名、计算出的值或表达式进行排序

ORDER BY 子句指定的列不能超过8060字节,不能用于数据类型text image 字段

in关键字

IN和多个OR运算符连起来的效果是等价的,使用IN,注意IN列值中不能包含NULL,这将返回不可预测的结果集

语法:where 列名[not] in(value_lise)

查询Northwind数据库中Suppliers表中的数据

要求:country字段为Japan或Italy

between and关键字

语法:where 列名[not] between 小值and 大值

注意事项:结果集中包含边缘值,相当于表达式(>=xAND <=y);要使结果集不包含边缘值,则使用(>xAND <y);要返回不在指定区域的行时,使用NOT BETWEEN;查询Northwind

Null值处理

    语法:where 列名is [not] null

查询Northwind数据库中Suppliers表中CompanyName,Fax列的数据

要求:CompanyName不为空,和fax为空

注意事项:

C#中,String s=””和String s=null区别

String s=””;在内存中开辟了一块空的空间

而String s=null;连空间都没开辟

group by

语法

SELECT [ALL | DISTINCT]select_list

FROM {<表资源>} [,…n]

[WHERE] <搜索条件>

[GROUP BY] {<分组表达式>}[,…n] [HAVING] <搜索条件>

[ORDER BY] {<字段名[ASC|DESC]>} [,…n]

注意事项:

--WHERE子句指定限制查询的条件,从数据源中去掉不符合其搜索条件的数据

--GROUP BY子句根据列的内容对结果集中的记录进行分组,并对组中数据进行汇总操作;常与聚合函数联合使用

--HAVING子句是在分组的时候,对字段或表达式指定搜索条件,去掉不符合其组搜索条件的各组数据行

使用GROUP BY时,注意:

对于指定的一组,只生成一条记录,不返回详细信息

可以有WHERE 子句,则只对满足WHERE 子句的记录进行分组和汇总

使用HAVING 子句,在分组的同时对字段或表达式指定搜索条件

只在使用GROUP BY子句的同时,才能使用HAVING子句来限制分组

 

------- Windows Phone 7手机开发.Net培训、期待与您交流! ------  详细请查看:http://net.itheima.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值