SQL总结_sql总结
SQL总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql总结”。
1.SQL语句的With cte as用法:
with as短语,也叫做子查询部分。即定义一个SQL片断,该片断会让整个SQL语句所用到。eg:
with
cr as
(select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode in(select * from cr)
CTE后面必须直接跟使用CTE的SQL语句(如select,insert,update等),否则,CTE将失效。CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔。eg:
with
cte1 as
(select * from table1 where name like 'abc%'),cte2 as
(select * from table2 where id > 20),cte3 as
(select * from table3 where price
select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id
2.case when then多条件判断:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
WHEN 条件4 THEN 结果4
.........WHEN 条件N THEN 结果N
ELSE 结果X
END
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
3.select语句前面加@转义字符的作用是强制后面的字符串中不使用转义字符,当作字符串
处理。
eg:string =@“aanaa”;输出:aanaa
string =“aanaa”;
输出:aa
aa
4.select getdate():从SQL SERVER返回当前的时间与日期。
select first():函数返回指定的字段中第一个记录的值。
select last():函数返回指定的字段中最后一个记录的值。
select ucase():把字段的值转换为大写。
select lcase():把字段的值转换为小写。
select round():用于把数值字段设入为指定的小数位数。SELECT ROUND(column_name,decimals)FROM table_name
column_name 必需。要舍入的字段。decimals 必需。规定要返回的小数位数。format():用于对字段的显示进行格式化。
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD')as PerDate FROM Products
5.union与union all的区别:
对重复结果的处理,UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复
6.SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
将整个table1复制到table2中:
INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...)select value1,value2,...from Table1(要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。)
SELECT INTO FROM语句
语句形式为:SELECT value1, value2 into Table2 from Table1(要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中)
7.nchar :固定长度的 Unicode 数据,最大长度为 4,000 个字符。
nvarchar:可变长度Unicode 数据,其最大长度为4,000字符。
char: 固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
varchar:可变长度的非Unicode数据,最长为8,000 个字符。
char和varchar都是字符串类型的,用Unicode编码的字符串,结果是字符的整数值.8.select 1 from:
select 1 from mytable;与select anycol(目的表集合中的任意一行)from mytable;与select * from mytable 作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。
查看记录条数可以用select sum(1)from mytable;等价于select sum(*)from mytable;
9.SQL中的字符匹配:
[NOT] LIKE '' [ESCAPE '']
可以是一个完整的字符串,也可以含有通配符%和_
%代表任意长度的字符串。eg:a%b表示以a开头以b结尾的任意长度的字符串。_代表任意单个字符。eg:a_b表示以a开头,以b结尾的长度为3的任意字符串。ESCAPE定义转义字符,当转义符置于通配符之前时,该通配符解释为普通字符。
10.GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。HAVING短语给出选择组的条件。
11.ROW_NUMBER()OVER函数的基本用法 :
row_number()OVER(PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
select row_number()over(order by field2 desc)as row_number,* from t_table order by field1 desc Desc:倒序,Asc:正序
12.DbDataAdapter.Fill 方法(DataTable, IDbCommand, CommandBehavior):
在DataTable中添加或删除新行以匹配使用指定 DataTable 和 IDataReader 名称的数据源中的行。
13.SqlCommand.ExecuteScalar 方法:执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行。
14.inner join(等值连接)只返回两个表中联结字段相等的行
left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录
15.e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem指触发的类型为DadaList中的基本行或内容行
16.order by的用法:
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后(不管是asc 还是 desc)
eg:将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first
--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last
单列升序:select from order by;(默认升序,即使不写ASC)
单列降序:select from order by desc;
多列升序:select , from order by ,;
多列降序:select , from order by desc, desc;
多列混合排序:select , from order by desc, asc;
17.C#中NULL,“”,DBNULL,String.Empty,Convert.IsDBNull区别
(1)NULL
null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是值类型的。
(2)DBNULL
DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null,要么就是具体的为column 的类型的值。要么就是 DBNull。所以 row[column].ToString()这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible。但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。
(3)“”和String.Empty
这两个都是表示空字符串,其中有一个重点是string str1=“” 和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。
(4)Convert.IsDBNull()
Convert.IsDBNull()返回有关指定对象是否为 DBNull 类型的指示,即是用来判断对象是否为DBNULL的。其返回值是True或Flase。
string.Empty不分配存储空间
“”分配一个长度为空的存储空间
所以一般用string.Empty
null表示一个对象的指向无效,即该对象为空对象
DBNull。Value表示一个对象在数据库中的值为空,或者说为初始化,DBNull。Value对象指向有效的对象
18.DataSet.Relations.add():获取用于将表链接起来并允许从父表浏览到子表的关系的集合。DataSet.Relations.Add(“关联名称”, 父关联主键字段, 子关联外来键字段)
19.DataBind():在Page_Load方法中我们建立了一个数组(ArrayList),并通过DataBind方法将这个数组捆绑到了DropDownList控件中,使得DropDownList最后有数据显示:)
20.IN 操作符允许我们在 WHERE 子句中规定多个值。
SQL IN 语法:SELECT column_name(s)FROM table_nameWHERE column_name IN(value1,value2,...)
21.DataBinder.Eval方法:在运行时使用反射来分析和计算对象的数据绑定表达式<%# DataBinder.Eval(Container.DataItem, “ColumnName”)%>
eval()函数可计算某个字符串,并执行其中的的 JavaScript 代码。
可以理解为反射的绑定
或者理解为将Eval()里的字符串转换为表达式
在数据绑定的时候常用,其实是通过反射的手段实现了绑定
22.sql语句 count(1)与 count(*)的区别 :
count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。
23.DataTable.NewRow :创建与该表具有相同框架的新的DataRow
24.ExcuteNonQuery():
如果要创建或修改数据库结构,操作成功时返回值为-1;如果要更新记录,返回值为操作影响的记录数;
ExecuteNonQuery()方法主要用于用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,关于MyCommand的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别:
***ExecuteNonQuery():执行SQL,返回一个整型变量,如果SQL是对数据库的记录进行操作,那么返回操作影响的记录条数,如果是SQL=“CREATE TABLE LookupCodes(code_id smallint IDENTITY(1,1)PRIMARY KEY CLUSTERED, code_desc varchar(50)NOT NULL)”那么在表创建成功后该方法返回-1。
***ExecuteScalar():执行SQL,(如果SQL是查询Select)返回查询结果的第一行第一列,如果(如果SQL不是查询Select)那么返回未实列化的对象,因为对象未实列化,所以返回结果不能ToString(),不能Equals(null),也就是说返回结果没有任何作用
***executeReader方法执行SQL,(如果SQL是查询Select)返回查询结果的集合,类型是 System.Data.OleDb.OleDbDataReader,你可以通过此结果,获取查询的数据。如果(如果SQL不是查询Select)那么返回一个没有任何数据的System.Data.OleDb.OleDbDataReader类型的集合(EOF)
25.DbDataAdapter.Fill 方法(DataTable):在 DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。
26.Decimal:decimal(2,1),有效长度为2,小数位占1位。
varchar:可变长度的非Unicode数据,最长为8,000 个字符。
nvarchar:可变长度Unicode 数据,其最大长度为4,000字符。
char: 固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
nchar :固定长度的 Unicode 数据,最大长度为 4,000 个字符。
char和varchar都是字符串类型的,用Unicode编码的字符串,结果是字符的整数值.timestamp:数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”,但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的Uniqueidentifier特殊数据型
SELECT UPPER('Kelly'):upper是数据库的字符串函数,它的作用是将传递给它的英文字符串中小写字母转换为大写(大写的保持不变);
SELECT LOWER('kelly'):lower将指定字符串中的大写字母换成小写字母
SUBSTRING(colunm name,startposition,length)从指定字符串中取字符
eg:SQL实例:
显示每个地区的总人口数和总面积.
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。
显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
27.SELECT [ALL|DISTINCT] [别名] [,[别名]]…… FROM [别名] [, [别名]]……
[WHERE ]
[GROUP BY [HAVING ]]
[ORDER BY [ASC|DESC]]
INSERT
INTO [([,……])]
VALUES([,]……)
UPDATE
SET = [,=]……
[WHERE ]
DELETE
FROM
[WHERE ]
刀豆文库小编为你整合推荐8篇SQL实习总结,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
SQL语句总结一、插入记录1. 插入固定的数值语法:INSERT[INTO]表名[(字段列表)]VALUES(值列表)示例1:Insert into Students values('Mary’,24,’mary@163.com’)若没有指定给Stu......
《数据库系统概论(第四版)》体会 学号: 姓名: 班级: 教师:学 期实 验 总 结 与 心 得【实验名称】 数据库的创建 【实验内容】1、新建sql注册表。 2、新建数据库。主数据文件:逻辑......
select 姓名,sum(成绩) as 总分from 学生 inner join 成绩 on 学生.学号=成绩.学号 group by 姓名 答:从通过学号建立的学生与成绩关系表中选择选择学生成绩的姓名集合Update 学......
SQL实习总结5篇总结是在某一时期、某一项目或某些工作告一段落或者全部完成后进行回顾检查、分析评价,从而得出教训和一些规律性认识的一种书面材料,通过它可以正确认识以往学......
