SQL Server基础-19

DBMS主要有MYSQL、MSSQLServer、DB2、Orcale、Sybase、Access等.
常用数据类型:bit(可选值0或1)、datetime、int、varchar、nvarchar(包含中文)。 char(n)和varchar的区别:char(n)不足长度n的部分用空格填充。
SQL语句是和DBMS“交谈”专用的语句,SQL语句中字符串用单引号,大小写不敏感
SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。Create Table、Drop Table、Alter Table等属于DDLSelect、Insert、Update、Delete等属于DML
SQLServer中两种常用的主键数据类型:Sql server 中主键常用数据类型有两种:int(或bigint) 和 uniqueidentifier(又称GUID)。这两种是最常用的,最合理的主键使用类型,注意这里是合理,不是合法,也可以用其他的类型,但不合理。

用int怎么来唯一标识表呢? 

方法很简单,int + 标识列(又称自增字段)。在列属性里把“是标识列”设置为“是”就OK了,这样就可以标识一个表了。

如何用GUID来唯一标识表呢?

用guid算法,这里仅给出语句,具体算法本人没有深入研究,还得继续学习,在SQL中,写:select newid();就可以生成唯一字串;在.NET中,Guid id = guid.newGuid();就可以生成唯一字串。Guid算法是使用MAC计算出来的。

两者的比较:

Int的优点:占用空间小,容易读;缺点:导入导出很痛苦;

Guid的优点:效率高,导入导出很方便;缺点:占用空间大,不易读。业界倾向于Guid的使用。
创建表:CREATE TABLE T_Person(ID int NOT NUll,Name nvarchar(50))
删除表:DROP TABLE T_Person
修改表:ALTER TABLE
    增加字段 ALTER TABLE T_Person ADD salary int
条件语句:WHERE ...or、and、not、<、>、<=、>=、!=(<>)
检索数据:SELECT name,age... FROM T_Person
AS 可用于设置别名
插入数据:INSERT INTO T_Person(name,age...) VALUES(values1,values2...)
    返回插入的ID:INSERT INTO T_Person(name,age...) OUTPUT INSERT.ID VALUES(values1,values2...)
更新数据:UPDATE T_Person SET name='yuye'
删除数据:DELETE FROM T_Person
聚合函数:count(*) 数量 max() 最大数 min() 最小数 avg() 平均值 sum() 求合
排序:ORDER...BY...ASC(默认升序)/DESC(降序)
    SELECT * FROM T_Person OREDR BY age ASC
通配符:LIKE
    "_"匹配单个字符 SELECT * FROM T_Person WHERE name LIKE '_erry'
    "%"匹配零个或多个字符 SELECT * FROM T_Person WHERE name LIKE '%n%';  包含n的
IS用来判断是否为空 NULL代表不知道 无法进行运算比较 应该用IS NULL/IS NOT NULL
范围:IN(...,...,...)     SELECT * FROM T_Person WHELE age IN(20,25,30)
   BETWEEN ... AND ...     SELECT * FROM T_Person WHELE age BETWEEN 20 and 30
数据分组:GROUP BY ... HAVING ... 在WHERE中不能使用聚合函数,必须使用HAVING
    GROUP BY必须放于WHERE语句之后    HAVING要位于GROUP BY之后
    WHERE用于对未分组之前的数据过滤,HAVING则是对分组之后的数据过滤 
限制结果集行数:TOP
    SELECT TOP 5 * FROM T_Person ORDER BY age DESC 
      SQLServer2005后增加:ROW_NUMBER() OVER(DRDER BY...DESC)
去掉数据重复:DISTINCT 针对选定的所有字段,而不是一个字段
    SELECT DISTINCT * FROM T_Person
联合查询:UNION 字段个数要一样,类型要相容
    UNION ALL 显示重复行
数学函数:
    ABS() 求绝对值 CEILING() 舍入到最大整数 FLOOR() 舍入到最小整数 ROUND() 四舍五入
字符串函数:
    LEN() 长度 LOWER() 小写 UPPER() 大写 LTRIM() 去掉左侧空格 RTRIM() 去掉左侧空格
    SUBSTRING(string,start_position,length) 获取子字符串
日期函数:
    GETDATE() 取得当前日期
    DATEADD(datepart,number,date) 增加日期  dateadd(day,3,getdate())
    DATEDIFF(datepart,startdate,enddate) 计算两个日期差额
    DATEPART(datepart,date) 返回一个日期的特定部分
类型转换函数:
    CAST(expression AS data_type)
    CONVERT(data_type,expression)
空值处理函数:
    ISNULL(expression,value) 如果expression不为空则返回expression,否则返回value
CASE 函数:
  用法1:CASE expression
    WHEN value1 THEN returnvalue1
    WHEN value2 THEN returnvalue2
     ....
    ELSE defaultreturnvalue
    END
  用法2:CASE
    WHEN condition1 THEN returnvalue1
    WHEN condition2 THEN returnvalue2
     ...
    ELSE defaultreturnvalue
    END

posted @ 2013-06-07 11:01  秋水惜朝  阅读(184)  评论(0编辑  收藏  举报