黑马程序员_Sql语句基础
来源:互联网 发布:华云数据与中昌数据 编辑:程序博客网 时间:2024/05/19 19:39
------- ASP.Net+Unity开发、.Net培训、期待与您交流! -------
1、 Sql语句的注意事项:
(1)、Sql语句中的关键字可以大小写不敏感,但是除了关键字以外,其他语句是大小写敏感的,例如SELECT * from table1同select * from table1,因为select是关键字。但是select * from table1却不同于select* from TABLE1,这两个语句查询的是不同表中的数据。
(2)、数据库中常用的数据类型有:字符串数据类型、时间数据类型和数字数据类型。其中字符串数据类型和时间数据类型在使用时要用单引号包括在内。
(3)、创建和删除表不仅可以在Sql Server中手工完成,还可以执行Sql语句完成。用Sql语句创建和删除表在自动化部署、数据导入中应用很广泛。
(4)、Sql语句中出现中文时,前边加一个N,不容易出错。例如:select * from table1 where name=N’张晓明’
2、Sql语句的类型:
Sql语句分为数据定义语言(DDL)和数据操作语言(DML)。DDL是对数据表的创建、修改和删除(createa/alter/drop table),DML是对数据的增删查改(insert/delete/select/update)。
3、 Sql Server中常用的两种主键类型:
(1)、int(或bigint)类型+标识列,即自动增长字段。优点:占用空间小,无需开发人员干预,易读。缺点:操作的时候效率低,导入导出时比较麻烦
(2)、uniqueidentifier类型,也叫GUID类型(globalunique identifier):全球唯一标识符。GUID算法是产生唯一标识符的高效算法,使用MAC网卡、ip地址、纳秒级时间、芯片的IO码等算出来,永远不会重复。在Sql Server中用内置函数newid()获取GUID。优点:效率高,导入导出时方便。缺点:占用空间大,不易读。
注:业界主流倾向使用GUID。
4、 聚合函数
Sql中常用的聚合函数有:max()最大、min()最小、sum()求和、avg()求平均值、count()总数。
5、 数据排序:用order by (升序为ASC,降序为DESC,默认为ASC,可以不写)
注意:orderby语句一定要写在where语句后面,例:select * fom table1 where age>18 order byage,意义为:将数据查询出来,where语句过滤掉不符合条件的数据,将剩下的数据按照age进行升序排序(默认为升序)。
6、 通配符过滤,即模糊匹配,用关键字like
单字符通配符:半角下划线”_”,匹配单个出现的字符。
多字符通配符:半角百分号”%”,匹配零或多个出现的字符。
例子:select* from table1 where name like ‘_晓明’(查找名字叫“晓明”的数据)。
Select * from table1 wherename like ‘%家%’(查找名字中有“家”字的数据)。
7、 空值处理(Null)
数据库中的Null表示“不知道”,Null的任何运算都是Null,例如:select 1+Null,结果为Null。也不能用“=“查找Null值,例如:select* from table1 where name=Null,根本就查找不出name为Null的数据。正确的查询语句为:select * from table1 where name is Null,要用is关键字。
8、 多值匹配(in和between…and…)
当Sql语句中出现多个限制条件时,要用多个and写出条件,例如:select * from table1 where
age=12 and age=18 and age=20 and ag=29,这时候就可以用in来简化语句的书写,select * from table1 where agein(12,18,20,29)。如果条件为某个范围,还可以用between…and..来写,select * from table1 where age between 12 and29。
9、 数据分组(group by)
(1)、没有出现在group by后面的列是不能出现在select语句后的列名列表中的(除聚合函数外),错误:selectname,age from table1 group by age,
正确:selectage,count(*) from table1 group by age
(2)、group by语句必须放在where语句之后(和order类似,按条件查询后再分组)
10、having语句
聚合函数不能出现在where语句中,要使用聚合函数的结果来作为查询条件,就要用having语句,having语句要放在groupby语句之后。例:
select age,count(*) from table1 group by age having count(*)>1
注意:having不能使用未分组的参数,having不能代替where,having是对分组后信息的过滤,能用的列只限于select中出现的列。
11、限制结果集行数(top关键字)
例:selecttop 3 * from table1 order by salary DESC,只查询表中的前3行数据。和子查询相结合可以实现Sql语句分页,提高分页的效率。
12、抑制重复数据,(distinct关键字)
例:selectdistinct * from table1,如果有重复的行,则只显示一行, 其他重复行不显示。
13、联合结果集(union关键字)
Union关键字用来联合两个或多个表的数据,例子:
Select name,age from table1
Union
Select name,age from table2
Union使用的条件:
(1)、两个select语句中的列要相同(数量相同、数据类型相同或兼容),数量不同可以补足相同类型的任意数据。
(2)、union默认会合并重复的数据(效果同distinct),如果不想合并,可以在union后加all,一般如果不想合并重复的话,要养成在union后面加all的习惯。
14、数据库中的内置函数(Sql Server)
(1)数字函数
ABS():求绝对值函数
Celing():舍入到最大整数,如分页计算总页数,用到了这个函数
floor():舍入到最小整数
round(number,int):四舍五入(舍入到离我半径最近的数),number为要处理的数,int为精度
(2)、字符串函数
Len():获取字符串的长度
Lower():转化为小写字母
Upper():转化为大写字母
LTRrim():去掉左空格
RTRim():去掉右空格
Substring(string,starr_position,length):取子字符串
(3)、日期函数
Getdate():获取当前如期
Dateadd(datepart,number,date):计算增加以后的日期
Datediff(datepart,startdate,enddate):计算两个日期的差值
Datepart(datepart,date):返回一个日期的特定部分
参数中的datepart为日期的计算单位,可选值为:year、quarter、month、week、day、hour、second、millisecond等
(4)、类型转换函数
Sql Server中有两个类型转换函数:convert()函数和cast()函数
Cast(expressionas date_type)
Convert(date_type,expression,datestyle),其中datestyle参数为可选参数,可以没有
其中:expression:待转换表达式;date_type:数据类型;datestyle:将字符串数据类型转换为时间类型的时候,时间数据类型的样式。
(5)、空值处理函数
Isnull(expression,value),此函数的用法为:当expression不为空,则返回expression的值;如果expression为空,则返回value。
(6)、case函数
用法一:
Caseexpression
Whenvalue1 then returnvalue1
Whenvalue2 then returnvalue2
……..
Elsedefaultreturnvalue
End
用法二:
Case
Whenexpression条件 then returnvalue1
Whenexpression条件 then returnvalue2
…….
Elsedefaultreturnvalue
End
15、索引(index)
对于经常要进行查询的列,可以建立索引,这样在where语句中按照索引列进行查询,就会大大提高查询的效率,这是索引的优点。缺点是a、要为索引列建立存储目录,需要额外的存储空间。b:对索引列进行插入、更新和删除操作时需要同步更新目录,降低插入、更新和删除操作的效率。
16、表连接(用join关键字,也可不用join)
当要查询的数据不在一个表中,而分布在其他两个或多个表中时,而且其他表中数据与此表数据有外键关系,则需要进行表连接进行查询。表连接就是在一个select语句中完成从多个表中查询和处理数据。
例:select * from table1 as t1 jointable2 as t2 on t1.name=t2.name
17、子查询
将一个查询语句作为一个结果集供其他Sql语句使用,就像使用其他普通的表一样,被当作结果集的查询语句被称为子查询。所有可以使用普通表的地方都可以使用子查询来代替。
例:select * from (select * fromtable1 where age>18 as table2
按照子查询返回的值,可以将子查询分为单值子查询和多行单列子查询
(1)、单值子查询:返回一行一列的子查询,可作为外围查询的列
(2)、多行单列子查询:结果集其实是一个集合,这样的子查询往往是只查询一列的数据。
------- ASP.Net+Unity开发、.Net培训、期待与您交流! -------- 黑马程序员_Sql语句基础
- 黑马程序员_sql语句
- 黑马程序员_sql语句分页
- 黑马程序员_SQL基础小结
- 黑马程序员_SQL及ADO.NET基础
- 黑马程序员_SQL 函数
- 黑马程序员_sql
- 黑马程序员_SQL的学习
- 黑马程序员_SQL基本语法
- 黑马程序员_SQL 语法练习
- 黑马程序员_SQL总结一
- 黑马程序员_SQL总结二
- 黑马程序员_Sql Server笔记
- 黑马程序员_Sql Server总结
- 黑马程序员_SQL视频学习之练习
- 黑马程序员_SQL Server学习第一季
- 黑马程序员_SQL Server学习第二季
- 黑马程序员_Sql学习总结(一)
- 生成自定义快捷方式的代码
- 玩转GitHub之基本配置及使用
- 记录几个网络程序调试的命令
- mysql数据库自动备份<初级应用>
- 分享网页加载速度优化的一些技巧?
- 黑马程序员_Sql语句基础
- 解决web2Project 中文乱码
- 【PHP】代码的优化
- Ubuntu环境下android开发,连接真实手机调试方法
- OpenCart之CKEditor设置
- 使用mac应该知道的技巧
- 数值的整数次方【转载】
- Android应用在不同版本间兼容性处理
- 如何拷贝草图图元到另一个草图