6.SQL Server Sql语句
1.Select 查询
select * from users 查询用户表所有信息
select name,age as 年龄 from users Where name='zhangsan' and age=10 增加查询条件
select 12 * 13 as 计算结果 into userInfo 执行结果插入到一张新表
select name from users order by age desc, Num desc 排序 desc 降序 Asc升序
group by 分组查询 AVG(列名) 平均值 Coung() 合计行
//根据不同的员工类别 来分组查询有多少人 是属于不同的员工类别的
select COUNT(*) as 合计 ,员工类别 from users group by员工类别
Group by 有两个关键字 cube 和 rollup
2.Select 函数
AVG(column) | 返回某列的平均值 |
FORMAT() |
FORMAT 函数用于对字段的显示进行格式化。 |
NOW() |
NOW 函数返回当前的日期和时间。 |
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。 | GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 |
COUNT(column) | 返回某列的行数(不包括NULL值) |
COUNT(*) | 返回被选行数 |
COUNT(DISTINCT column) | 返回相异结果的数目 |
FIRST(column) | 返回在指定的域中第一个记录的值(SQLServer2000 不支持) |
LAST(column) | 返回在指定的域中最后一个记录的值(SQLServer2000 不支持) |
MAX(column) | 返回某列的最高值 |
MIN(column) | 返回某列的最低值 |
STDEV(column) | |
STDEVP(column) | |
SUM(column) | 返回某列的总和 |
HAVING | 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。 |
查询 分组 排序 去读取数据~~~
3. Insert插入数据
INSERT INTO 表名称 VALUES (值1, 值2,....) INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
/*这里是向表中所有的列插入数据 省略 values*/
3.1 insert into student values('1','jack',20);
数据表备份~
SELECT INTO 语句 new table 必须是是不存在的
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
3.2
select * into #temp1 from table1 //这里先将数据保存在临时表中
3.3
从其他数据表读取数据插入到列中
Insert Table (列名称) Select (列名称) from 表名称 where...
如: 只插入一列
insert test(AreaName) select Name from OT_User
如:插入表中所有行 前提是表中的结构是相同的
insert ceshi1 select * from ceshi
4.Update 更新数据
UPDATE top 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
如:update top (10) CountTable set AreaName='China' where ...... //更新前10行
4.1 Update 使用from 子句 更新的数据 来自于不同的表中
使用多表链接的方式将 其他表的数据更新到我们的表中~
如:
update 学生信息 set 性别=b.sex , 家庭住址=b.address from 学生信息 a join 学生入学登记 b on a.姓名=b.name where b.sex='男' --学生信息表中 性别和家庭住址 初始为空 --通过多表关联 学生登记表 只要条件符合的 数据就可以更新到 学生信息表中~
5.delete 语句 DELETE 语句用于删除表中的行。
DELETE FROM 表名称 WHERE 列名称 = 值 不加where 删除表中所有行~
6. Top 关键字 及表达式
select top 10 * from users --查找10行显示 select top 10 percent from users --查找10%的行显示
另一种使用变量的方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
declare @i int --声明变量i set @i=20 --变量i赋值20 select top (@i) * from OT_User --查询前20行数据
查询10行数据 如果第10行 和下面行的 数据相同 一起并列显示
with ties一般是和Top , order by相结合使用的 如果top的排序列 最后一行 和 下一行相同 会显示排序列的多行值
select top 3 with ties * from ceshi order by AreaDesc desc --查找3行数据 根据 AreaDesc 进行排序 如果第4行的 AreaDesc 数据 和第3行AreaDesc 数据相同 就会并列显示 4行数据
7.COMPUTE 子句 对已经查询后的结果集 进行合计 比如 求平均值 最大值 求和 等等
compute by 子句 COMPUTE 子句在结果集内生成控制中断和分类汇总。 必须和 order by 一起使用
compute by 子句 根据查询的结果 根据order by 列名 再次进行汇总~~~
查询用户表 后的结果集 进行 操作 最大值(职级),最小值(职级),count(职级) 合计当前职级的行数 根据 职级来进行汇总 前提 order by 职级列
select * from OT_User order by EmployeeRank compute Max(EmployeeRank),Min(EmployeeRank),count(EmployeeRank) by EmployeeRank
8.where
IN 操作符 相反还有 not in
IN 操作符允许我们在 WHERE 子句中规定多个值。
SQL IN 语法
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)