sql server 数据库基础知识(一)
主键(PrimaryKey):主键就是一个表中每个数据行的唯一标识。不会有重复值的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键。SQLServer中生成GUID的函数newid(),.Net中生成Guid的方法:Guid.NewGuid(),返回是Guid类型。
常用字段类型:bit(可选值0、1)、datetime、int、varchar、nvarchar(可能含有中文用nvarchar)、Nvarchar(50)、Nvarchar(MAX)
varchar、nvarchar 和char(n)的区别: char(n)不足长度n的部分用空格填充。Var:Variable,可变的。
SQL语句中字符串用单引号。SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的。创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多,CREATE TABLE T_Person(Id int NOT NULL,Name nvarchar(50),Age int NULL)、Drop table T_Person1。(*) SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML。
新增 - Inert into Table(col,col2...)values(data1,data2...)。如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。可以给字段默认值,如果Guid类型主键的默认值设定为newid()就会自动生成。更新- update Table set col=value,col2=value2 where ...注意SQL中等于判断用单个=,而不是==。Where中还可以使用复杂的逻辑判断,or相当于C#中的||(或者)。Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等。删除- delete [from] Table where col=data。删除表中全部数据:DELETE FROM T_Person。Delete只是删除数据,表还在,和Drop Table不同。Delete 也可以带where子句来删除一部分数据:DELETE FROM T_Person WHERE FAge > 20。检索- select col,col2[,*] from Table where ...简单的数据检索 :SELECT * FROM T_Employee。只检索需要的列 :SELECT FNumber FROM T_Employee 、SELECT FName,FAge FROM T_Employee 列别名:SELECT FNumber AS 编号,FName AS 姓名,FAge AS Age111 FROM T_Employee 使用where检索符合条件的数据:SELECT FName FROM T_Employee WHERE FSalary<5000。还可以检索不与任何表关联的数据:select 1+1;select newid();select getdate();
SQL聚合函数:MAX(最大值)、MIN(最小值)、AVG (平均值)、SUM (和)、COUNT(数量)。ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)。ORDER BY子句要放到WHERE子句之后。
通配符过滤关键字使用LIKE 。单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字符。 “k%”匹配以“k”开头、任意长度的字符串。
数据库中,一个列如果没有指定值,那么值就为null,这个null和C#中的null,数据库中的null表示“不知道”,而不是表示没有。因此select null+1结果是null,因为“不知道”加1的结果还是“不知道”。SELECT * FROM T_Employee WHERE FNAME=null ; SELECT * FROM T_Employee WHERE FNAME!=null ;都没有任何返回结果,因为数据库也“不知道”。SQL中使用is null、is not null来进行空值判断: SELECT * FROM T_Employee WHERE FNAME is null ; SELECT * FROM T_Employee WHERE FNAME is not null ;GROUP BY子句必须放到WHERE语句的之后 。没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的 (聚合函数中除外)。在Where中不能使用聚合函数,必须使用Having,Having要位于Group By之后:SELECT FAge,COUNT(*) AS 人数 FROM T_Employee GROUP BY FAge HAVING COUNT(*)>1 。注意Having中不能使用未参与分组的列,Having不能替代where。作用不一样,Having是对组进行过滤。
(*)检索按照工资从高到低排序检索从第六名开始一共三个人的信息 :SELECT top 3 * FROM T_Employee WHERE FNumber NOT IN (SELECT TOP 5 FNumber FROM T_Employee ORDER BY FSalary DESC) ORDER BY FSalary DESC 。DISTINCT是对整个结果集进行数据重复处理的,而不是针对每一个列。
简单的结果集联合:SELECT FNumber,FName,FAge FROM T_Employee UNION SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee 基本的原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。
1.UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条
SELECT FName FROM T_Employee UNION ALL SELECT FName FROM T_TempEmployee 2.Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL
ABS() :求绝对值。CEILING():舍入到最大整数 。3.33将被舍入为4、2.89将被舍入为3、-3.61将被舍入为-3。 Ceiling→天花板 FLOOR():舍入到最小整数。3.33将被舍入为3、2.89将被舍入为2、-3.61将被舍入为-4。 Floor→地板。 ROUND():四舍五入。舍入到“离我半径最近的数” 。Round→“半径”。Round(3.1425,2)。LEN() :计算字符串长度。LOWER() 、UPPER () :转小写、大写。LTRIM():字符串左侧的空格去掉 RTRIM () :字符串右侧的空格去掉 SUBSTRING(string,start_position,length)
参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度。GETDATE() :取得当前日期时间 DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位。DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。 DATEPART (datepart,date):返回一个日期的特定部分 。CAST ( expression AS data_type)。CONVERT ( data_type, expression) 。ISNULL(expression,value) 。
sql server 数据库基础知识(一)的更多相关文章
- SQL Server 数据库基础知识
数据库(Database)是由文件管理系统发展起来的,按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 特点: 尽可能小的冗余度. 具有较高的数据独立性和易扩 ...
- sql server 数据库基础知识(二)
CASE函数用法1:单值判断,相当于switch caseCASE expression WHEN value1 THEN returnvalue1 WHEN value2 THEN returnva ...
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
- SQL server 数据库基本知识
SQL server 数据库基本知识 一.数据库: 分为层次型.网状型.关系型.现在通常都是使用关系型 常用的有:SQLserver.Oracle.DB2.Access.Visual Foxpro.M ...
- Sql Server数据库基础
--------------------------------------第一章 Sql Server数据库基础------------------------------------------ ...
- SQL Server 数据库基础笔记分享(下)
前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...
- SQL Server 数据库基础笔记分享(上)
前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...
- sql server 2008 基础知识
一.配置管理器 1.管理服务 使用配置管理器可以启动.停止.重新启动.继续或暂停服务. 服务器和客户端网络协议 2.SQLSMS 简介:SQLSMS是一个集成环境,用于访问.配置.管理和开发SQL ...
- 【2017-03-09】SQL Server 数据库基础、四种约束
一.数据库和内存的区别 数据库:一些存储在硬盘上的数据文件 内存:计算机临时存储的一些数据 二.常用数据库 .Net - SQL Server PHP - MySql Java - Oreacl 三. ...
随机推荐
- 【kd-tree】bzoj3290 Theresa与数据结构
离线所有操作,对所有可能存在的点建立kd-tree,add相当于权值+1,cancel相当于权值-1. 修改操作要记录kd-tree上每个点的fa,从底向上地进行修改. 优化:若一个矩形框的sumv= ...
- python的编码程序例题
有一段python的编码程序如下:urllib.quote(line.decode("gbk").encode("utf-16")),请问经过该编码的字符串的解 ...
- Android中将Bitmap转换成单色的Bmp图片
添加权限 :
- oracle--v$lock type字段详解
Name Description AD ASM Disk AU Lock AF Advisor Framework AG Analytic Workspace Generation AK GES De ...
- css字体font-family
1."Arial" 2."Microsoft YaHei" 3."黑体" 4."宋体" 5.sans-serif 6.T ...
- python socket timeout设置
需要在调用socket的connect方法之前设置settimeout(time)方法,另外在设置之后要将再次调用settimeout(None)来设置socket进入阻塞模式. 如下代码示例: so ...
- angular get/post 下载 excel
阅读目录 get请求 post请求 最近做项目,就碰到一个导出excel表格的功能.原本是想利用web前台导出excel的,但是最后因为两点放弃了,第一点,因为中文乱码,第二点,有分页(在前台导出ex ...
- SpringMvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- RDD编程 上(Spark自学三)
弹性分布式数据集(简称RDD)是Spark对数据的核心抽象.RDD其实就是分布式的元素集合.在Spark中,对数据的操作不外乎创建RDD.转化已有RDD以及调用RDD操作进行求值.而在这一切背后,Sp ...
- VScode格式化vue文件
使用vscode编写vue文件的时候, 发现不能格式化,手动格式化代码,太费劲, 还有可能会出错, 不格式化,有的时候代码编写的时候, 没有很好的管理格式,不美观. 但是我们是可以修改让VScode可 ...