zoukankan      html  css  js  c++  java
  • 看视频学编程之SQL数据库基础

    ------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

    数据库概述
     
    DBMS(DataBaseManagementSystem,数据库管理系统)和数据库。
    平时谈到“数据库”可能有两种含义:MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)
    数据库的构成-管理软件/服务/数据文件(表,视图...)
    不同品牌的DBMS有自己的不同的特点:MYSQL、MSSQLServer、DB2、Oracle、Access、Sybase等。对于开发人员来讲,大同小异
    除了Access、SQLServerCE等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。
    学习开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器
     
    Catalog(分类)(又叫数据库DataBase,表空间TableSpace),不同类的数据应该放到不同的数据库中
    1、便于对各个Catalog进行个性化管理
    2、避免命名冲突
    3、安全性更高 
    Table(表):书都放到书架上,碗都放到橱柜中,不同类型的资料放到不同的“格子”中,将这种区域叫做“表”(Table)。
    不同的表根据放的数据不同进行空间的优化,找起来也方便。
    主键(PrimaryKey) 
    主键就是一个表中每个数据行唯一标识。不会有重复值的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键
    主键有两种选用策略:业务主键和逻辑主键
    业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;
    逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。
    因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键。
    外键(ForeignKey):记录表与表的关联   ——一个表的外键一定是另一个表的主键
     
    常用字段类型:bit(可选值0、1)、datetime、int、varchar、nvarchar(可能含有中文用nvarchar)
    nvarchar(50)、nvarchar(MAX)   ——括号里指定最大存的数据
    varchar、nvarchar 和char(n)的区别: char(n)不足长度n的部分用空格填充;varchar,nvarchar是可变的。
     
    SQl语句入门
     
    SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法
    SQL语句中字符串用单引号!!
    SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的
    创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多,
    create table Person(Id int NOT NULL,Name nvarchar(50),Age int NULL)
    drop table Person
    简单的Insert语句:
    insert  into  Person(Id,Name,Age)  values  (1,'Jim',20)
    SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。
    Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML
     
    主键(primary key)的选择
     
    SQLServer中两种常用的主键数据类型:int(或bigint)+标识列(又称自动增长字段); uniqueidentifier(又称Guid、UUID)
    用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在Insert的时候不用指定主键的值。
    将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
    Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,
    这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机。在公元3400年以前产生的GUID与任何其他产生过的GUID都不相同。
    SQLServer中生成GUID的函数newid()
    .Net中生成Guid的方法:Guid.NewGuid(),返回是Guid类型。
    ---Int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。
    ---Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。
    业界主流倾向于使用Guid。
     
    增(insert)
     
    Insert语句可以省略表名后的列名,但是不推荐
    如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。
    给可以给字段默认值,如果Guid类型主键的默认值设定为newid()就会自动生成,很少这么干
    主键:
         insert into Person1(Name,Age) values('lily',38);             ——标识列字段自增
         insert into Person2(Id,Name,Age) values(newid(),'tom',30);   ——Guid
     
    改(更新:Update)
     
    更新一个列:Update person set Age=30
    更新多个列:Update person set Age=20,Name=‘哈哈'
    更新一部分数据:Update person set Age=30 where Name=‘哈哈’,用where语句表示只更新Name是'哈哈'的行;
    注意SQL中等于判断用单个=,而不是==;               ——C#中用==表示等于,=表示赋值
    Where中还可以使用复杂的逻辑判断Update person set Age=30 where Name=‘哈哈' or Age<25,
    or相当于C#中的||(或者)
    update Person1 set NickName='二十岁'
    where (Age>20 and Age<30) or (Age=80)
    Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等
     
    删(delete)
     
    删除表中全部数据:delete from person
    Delete只是删除数据,表还在,和drop table不同;
    Delete 也可以带where子句来删除一部分数据:DELETE FROM T_Person WHERE FAge > 20
      
    查(select)
     
    简单的数据检索 :select * from person
    只检索需要的列 :select Name from person、select Name,Age from person
    列别名:select Name as 名字,Age as 年龄,NicName as 昵称 form person
    使用where检索符合条件的数据:select Name from person where Age>30
    还可以检索不与任何表关联的数据:select 1+1;select newid();select getdate();
     
    --------------------------------------------------------------------------------------------
     
        未完待续
     
     
      
     
     
     
  • 相关阅读:
    1. Hello UWP
    ASP.NET MVC SignalR(1):背景
    ASP.NET MVC SignalR
    nekohtml转换html时标签变大写的问题
    nohup启动java命令导致dubbo无法注册
    SOA架构改造简单记录
    [转]BloomFilter——大规模数据处理利器
    IOS行货自动打包
    Kruskal算法java版
    prim算法java版
  • 原文地址:https://www.cnblogs.com/cctt/p/3142660.html
Copyright © 2011-2022 走看看