3.数据库操控语言(DML):
Select 语句:select <列名> from 表名 where 条件表达式
Insert 语句:insert into 表名[列名] values(值)
Update 语句:update 表名 set 列1=更新值,列2=更新值 where 条件表达式
Delete 语句:delete from 表名 where 条件表达式
Truncate 语句:删除表中的记录
a)Truncate table 表名
插入多行数据:select …into…语句
a)该语句用于把查询的结果存放到一个新表中(不存在的表);
b)Into 后面直接跟上新建的表名称;
c)注意:使用select ..into…向表中添加数据时,这个表必须是原数据库中不存在的新表,否则会出错;
d)例如:select * into table2 from table1 where id=2
一次插入多行:insert into …select….语句:
a)语法:insert into 表名[列名列表] select 语句
b)例如:insert into table2(name,age) select name ,age from table1
五、第五章 数据查询
1.查询分为两大类:一类是用于数据检索的选择查询(select query),另一类是用于更新的行为查询(Action query);
2.数据查询 概述:
任何一种SQL语言中,SELECT 语句都是一个使用频率最高的查询语言;
SQL Server 中:SELECT 语句是一个最基本和最重要的语句,功能是执行一个选择查询,查询的数据源可以是一个货多个表或视图;
SELECT 用途:
a)选择查询;
b)对记录排序;
c)对字段汇总计算;
d)用检索到的记录创建新表;
设置字段别名:显示选择查询的结果时,表头第一行显示的是各个输出字段的名称;
a)例如:SELECT ID AS 学号,姓名=name,sex 性别 from t_user
字段的计算:(用法与语言中一般字符拼接类似)
a)例如:select name+”-”+sex as 姓名-性别 from t_user
使用关键字限制记录行数:
a)All :返回全部记录
b)Distinct::过滤重复记录;select distinct id from t_user
c)Top :显示前面若干条记录:select top 4 * from t_user //select top 40 percent * from t_user 获取40%条记录;
对查询记录的选择与处理:
a)对查询的结果进行筛选:
使用where 语句: > >= = < <= <> !> !<
范围表达式:between….and…/// not between ….and ……select * from t_user id between 2 and 4
列表运算符(判断表达式是否为列表中的指定项):in(项1,项2) IN关键字可以选择与列表中的任意值匹配的行; not in(value1,value2,value3)
空值判断符:判断表达式是否为空
i.Is null
ii.Is not null
逻辑运算符:用于多条件的逻辑连接
i.Not
ii.And
iii.Or
模式匹配符:判断值是否与指定的字符通配格式相符:
i.Like
ii.Not like
iii.LIKE 关键字搜索与指定模式匹配的字符串、日期或时间值;
b)对查询的结果排序:
使用ORDER BY 子句:在order by 子句中可以使用一个或多个排序要求,优先级次序从左到右;使用asc 和desc 规定排序的方式:asc 升序 desc:降序; null 值被默认的为最小的值;
例如:select * from t_User where name=’xiao’ order by age desc,id asc
c)对查询结果计算:
使用sum函数计算字段的累加和:sum函数用于统计数值型字段的综合,它只能用于数值型字段,而且null值将被忽略; select sum(age) from t_user
使用avg 函数计算字段的平均值:avg函数用于计算一个数值型字段的平均值,null值在计算过程中忽略;
使用max 和 min 函数计算字段的最大值和最小值:
使用count 函数用于统计字段中选取的项数或查询输出记录行数;
d)对查询结果进行分组:
使用group by 子句:将结果集内的记录分成若干个组来输出,每个组中记录的记录在指定的字段中具有相同的值;
i.注意:当指定group by 时,字段列表中任一非聚合表达式内的所有字段都应包含在GROUP BY 列表中,或者group by 表达式必须与字段列表表达式完全匹配;
ii.分组表达式是执行分组时所依据的一个表达式,通常是一个字段名。在字段列表中指定的字段别名不能作为分组表达式来使用;另外,text ,ntext ,image 以及bit数据类型的字段也不能在分组表达式中;
使用having 子句:having 子句用于指定组或聚合的搜索条件,该子句通常与group by 子句一起使用,如果不使用group by 子句,则having 子句的行为与where 子句一样;不同的是,where 子句搜索条件在进行分组操作之前应用,而having 搜索条件在进行分组操作之后应用;
i.特点:having 子句可以包含聚合函数;
ii.Having 子句可以引用字段表中出现的任意项;
iii.Having 是运算聚合后的数据进行条件筛选;
iv.例如:统计平均成绩大于75分的科目
Select subject ,avg(score) from t_user group by subject having avg(score)>75
六、第六章 联接查询
1.内部联接查询:联接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系型数据库的主要特征;
内部联接基本语法:select 列 from 表1inner join 表2 on 条件表达式
带条件的内部联接:select 列 from 表1inner join 表2 on 条件表达式 where 条件表达式
Inner join—类似where子句:使用where实现内部联接查询:select 列 from 表1,表2 where 条件表达式
更复杂的链接查询:select 字段列表 from 表1 inner join 表2 on 条件表达式1 inner join 表3 on 条件表达式2…..
2.外部联接查询:分为左外部联接和右外部联接两种。以主表所在的方向区分外部联接,主表在join的左边,则称为左外部联接,反之..;
外部联接语法:select 字段列表 from 表1 <left/right>[outer] join 表2 on 条件表达式
3.使用union 和 union all 进行并集运算:对两组查询进行并集运算
Union 是一个特殊的运算符,用于将两个或两个以上的查询产生一个结果集;;
联合并不是真正的联接,作用更像是将一个查询返回的数据附加到另一个查询结果的末尾;join 将信息水平连接,而union 将数据垂直连接;
使用union注意事项:
a)两个查询select 必须有相同的列数;
b)查询中对应列的数据类型必须隐士一致;
c)Union 查询默认返回选项为:distinct ,如需返回所有则使用:union all