孔子有云:温故而知新,可以为师矣。既然孔老圣人都云了,咱今天就一起来重温一下MS SQL吧。开篇声明一下:大部分都是基础内容,SQL非常熟练的就别浪费您的时间了,因为这年头,大家时间都挺宝贵的。但是如果您坚持看完了,肯定也不会让您失望的,其中有几点很常用,但是也很少有人知道,希望能对您有所帮助。由于大部分都是记的笔记,所以可能有点乱,还望见谅。

首先要连接数据库服务器,就得启动服务,关于启动服务,我介绍我所用的三种方式:

1、开始-->运行-->cmd-->NET START MSSQLSERVER;

2、开始-->运行-->services.msc  然后找到SQL Server服务,设置为启动;

3、通过SQL Server配置管理器启动服务。服务启动之后,就可以连数据库了。

另外顺带介绍几个命令行操作数据库服务的:

暂停SQL Server服务--> NET PAUSE MSSQLSERVER

重新启动暂停的SQL Server服务--> NET CONTINUE MSSQLSERVER

停止SQL Server服务--> NET STOP MSSQLSERVER

一些常用知识:

select @@version 可查看数据库版本

关于SQL 值类型需要注意的地方:

bit常用来表示bool类型的变量,取值为0和1,这里0常表示false,1常表示true(约定大于熟成);

varchar 类型不含中文,nvarchar可能含有中文,nvarchar(max)相当于无穷大,SQL中查询或者赋值时字符串须用单引号括起来;

varchar和char(n)的区别在于char(n)不足n的部分会用空格填充,而varchar不会,这里细微的差别很多时候会造成数据不一致。

常用做主键的数据类型有:int(或bigint)、uniqueidentifier。在表格中可通过设置标识列来实现自动增长,而且一个表只允许有一个标识列。SQL 2005以上的版本设置标识列的方法为:选中需要设置标识的列,然后点开标识规范,设置标识,如图-1所示。通常设置自动标识之后,插入值的时候不需要再给值,如果再给值,则会报错,这时需要我们执行如下语句允许显示为设置为标识的列给值(设置标识之后默认是不允许给值的):set IDENTITY_INSERT 表名 on,值插入之后再通过  set IDENTITY_INSERT 表名 off语句关闭。

图-1

另外也可以通过GUID算法来生成不同的值来作为主键,C#中也有:Guid id=Guid.newGuid();若Guid类型的主键默认值设定为new()就会自动生成。关于int类型的主键和Guid类型主键的优缺点,这里作一个简单的比较:首先int自增主键的优点是占用空间小、无序开发人员干预、易读;缺点是效率低,速度比较慢;而GUID主键的优点是效率高、数据导入导出方便;缺点是占用空间大、不易读。

SQL语句创建表用Create Table而更新表用Update Table,删除表用Delete和Drop,注意Delete删除表中数据而Drop则删除整个表。

一般查询的顺序是:

select  列名 from 表名 where 条件 group by 分组依据 having 组提取条件 order by 排序依据列

select getdate()获得当前时间,select 列名 as 别名,通过这种方式可以为列取别名(图-3) ,select count(*) 获取表中数据总条数(行数)

SQL 中聚合函数有:max,min,avg,sum,依次是求最大,最小,平均,和

以下举例所用到的表为简单的学生表,结构和表中的初始数据如图-2所示。

图-2

查询语句中,列名本身是可以参加运算的,参考图-3的结果。order by排序的时候可以根据多列排序,asc(ascend)升序,desc(descend)降序,用法如图-3.

图-3

注意:where 必须在order by 之前。单字符匹配通配符为半角下划线“_",用于匹配单个出现的字符。多字符匹配的通配符为半角百分号”%“,用于匹配任意次数出现的任意字符。SQL语句中NULL表示不知道而不是没有,表中NULL和null是有区别的,NULL表示为空。查找某项为NULL时:

select 列名 from 表名 where 列名 is NULL而不是列名=NULL。SQL语句中也有or,and和in等关键字。

查询的时候注意了,没有出现在Group by子句中的列是不能放到select语句后列的各列表中的(聚合函数除外,图-4例。

解决办法是在没有出现在Group by之后的列前加聚合函数。

聚合函数不出现在where子句中,但可用having,它放Group by 之后,是对分组后的信息的过滤。

top x,表示取某列中前x个,如:select top 5 ……

distinct加于列前表示取列的不同的值;union将两个表连在一起(条件是两个列相同,数据类型相同),对重复的只保留一个,若不想合并则在union后加all。

常用函数:

ABS():求绝对值;CEILING():舍入到最大整数;FLOOR():舍入到最小整数;ROUND():四舍五入----->select ROUND(2.365,2)=>2.370

LEN():计算字符串长度  LOWER、UPPER 转小写、大写  LTRIM():去掉字符串左侧空格 RTRIM():去掉字符串右侧空格

SUBSTRING(string,startposition,length)--------->同C#,在制定字符串中,从气势位置取指定长度的字符

DATEADD(datepart,number,date)---------------->DATEADD(hour,3,getdate())在当前时间上加上3小时

DATEDIFF(datepart,startdate,enddate)------>计算两个日期间的差额

DATEPART(datepart,date)--------------------->返回一个日期的特定部分

CAST(expression As data_type)

Convert(data_type,expression)(以上两种方式常做类型转换用)

isnull函数 select isnull(Sno,'暂无')as 学号 from student  从Student表中选择Sno的值作为学号,当Sno为空时则返回暂无。

case函数用法,当对单值判断时相当于Switch case

如:

select case  expression
when value1 then returnvalue1
whern value2 then returnvalue2
..............
else defaultreturnvalue
end from table
//实例
select Fname
(case Flevel
when 1 then '普通用户'
when 2 then '会员'
when 3 then 'VIP'
end )
as '客户类型' from Customer

由于篇幅原因,上篇到此告一段落。总的来说上篇基本上都是些较基本,但也很常见的零零散散的知识。下篇将从索引,模糊匹配,精确匹配,自连接以及外连接,试图,存储过程,事务这几个方面来总结,敬请期待!

经典SQL基础回顾的更多相关文章

  1. 经典SQL回顾之晋级篇

    上篇博文在说SQL基础的时候,有一个地方有点误导大家,文中说到SQL 中的substring()和C#中的substring()相同,这有点歧义.基本原理虽然相同,但是有一点很不一样,就是C#中索引是 ...

  2. 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)

    浅谈c#的三个高级参数ref out 和Params   c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...

  3. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  4. 经典SQL语句大全以及50个常用的sql语句

    经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...

  5. 经典sql语句

    经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...

  6. [转] - 经典SQL语句大全

    经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...

  7. (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  8. 经典SQL语句大全_主外键_约束

    一.基础(建表.建约束.关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整 ...

  9. SQL Server-基础-经典SQL语句

    经典SQL语句 基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server - ...

随机推荐

  1. 36、TreeSet详解

    TreeSet是SortedSet接口的实现类,TreeSet可以保证元素处于排序状态.与HashSet相比,TreeSet还提供了如下几个而外的方法: 1).Comparator comparato ...

  2. EXT-JS 6演示样例程序-Login演示样例程序

    1.        用Sencha Cmd生成应用程序模版 sencha -sdk /path/to/ExtSDK generate app -classic TutorialApp./Tutoria ...

  3. Android中 单位 介绍

    看到有很多网友不太理解dp.sp和px的区别:现在这里介绍一下dp和sp.dp也就是dip.这个和sp基本类似.如果设置表示长度.高度等属性时可以使用dp 或sp.但如果设置字体,需要使用sp.dp是 ...

  4. 搜狐畅游CEO王滔辞职

    凤凰科技讯 11月3日消息,搜狐公布公告确认搜狐畅游CEO离职.公告称王滔因个人原因辞去畅游首席运行官职务.将继续担任畅游公司董事和首席产品官. 据搜狐公告,董事会任命搜狐总裁余楚媛与畅游总裁陈德文为 ...

  5. int main() 与 int _tmain()

    用过C的人都知道每一个C的程序都会有一个main(),但有时看别人写的程序发现主函数不是int main(),而是int _tmain(),而且头文件也不是<iostream.h>而是&l ...

  6. sudo配置文件/etc/sudoers格式

    sudo的配置文件 sudoers 一般在 /etc 目录下. 不过不管 sudoers 文件在哪儿,sudo 都提供了一个编辑该文件的命令:visudo 来对该文件进行修改. 讲解sudo配置文件/ ...

  7. uploadify onSelect

    uploadify onSelect [return false]停止选择 $("#fileEleId").uploadify({ 'width': _option.width, ...

  8. 【死磕Java并发】-----J.U.C之AQS:CLH同步队列

    此篇博客全部源代码均来自JDK 1.8 在上篇博客[死磕Java并发]-–J.U.C之AQS:AQS简单介绍中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列. CLH同步队列是一个F ...

  9. GameObject非激活状态,触发测试

    测试结果为OnEnable,Start不执行.Awake不管激活未激活都执行 不管是驻留在层级面板,还是手动拖上去. 但是,在任何时间设为激活.就会2个都触发.Awake和Start只触发一次.这个问 ...

  10. EF操作VS中

    1.安装mysql server 2.安装MySql的VS插件(版本请下载最新版,百度自己搜索,这个不用多说)mysql-for-visualstudio-1.2.3.msi 3.安装用于.net连接 ...