zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    基础之前ORM的一个框架(在OA系统上已经应用)
    自己创建的一个ORM框架
    spring cloud+docker 简单说一说
    有价值的数据
    Axis2Service客户端访问通用类集合List自定义类型
    java.io.IOException: Cleartext HTTP traffic to e.hiphotos.baidu.com not permitted
    Android Studio 3.x 自动生成多渠道包
    单例模式
    Linux(ubuntu 18.0.4) Java环境安装,环境变量配置
    ImageLoader常用方法注释
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3123447.html
Copyright © 2011-2022 走看看