首页 > 开发 > 综合 > 正文

SQL初级阶段笔记

2024-07-21 02:48:22
字体:
来源:转载
供稿:网友
SQL初级阶段笔记
  1. DataBase Management Stystem(数据库管理系统)简称:DBSM;虽然DBSM并不等于数据库,但行业内通常将DBSM称为数据库,所以一般来说数据库就指的是DBSM。
  2. 简单来讲DBSM就是我们知道的:MySQL、MSSQLServer、DB2、Oracle、access、Sybase等。
  3. SQL<>SQLServer<>MSSQLServer。/*注意这里的"<>"代表不等于*/。
  4. 主键分为业务主键和逻辑主键

    所谓的业务主键:使用有业务意义的字段做主键。

    所谓的逻辑主键:使用没有任何业务意义的字段做主键。(完全给程序看的)

  5. 主键的设置要求

      1. 不会重复的列;

      2. 推荐用逻辑主键作为主键;   

  6. 为什么要使用主键

   一个表中可以没有主键,但是会非常难以处理,因此没有特殊理由,表中要设置主键。

  7. 何为外键

    比如说:我要进货,可能会进不同厂家的货物,由于在同一厂家我不一定只进一类东西,因此当我记录账单的时候,必然要记录厂家的地址、电话等,对于不同类  货物且同一厂家进行记录时,还要每次都要重复的写厂家地址等,在数据库中我们可以用一个代号将一些重复的数据进行替代,这样也减少了存储空间的使用,对于这  个代号来说,它是重复要写地址所在表中的主键,且又是主表中的外键!

  8. 打开Microsoft SQL Server Management Studio之后的连接如下图:

  

  服务器名称填写方式:计算机全称/实例名 或者 ./实例名 或者 还可以直接输入"(local)"进行连接。这样就可以通过本地验证进行连接

  9. 新建数据库:

    在连接后的“对象之源管理器”中,我们可以看到“数据库”,然后右键点击数据库,再出现的菜单栏中选中“新建数据库(N)”然后如下图所示:

  

  在上边只要填写数据库名称就可以了!然后点击确定就OK了!

  10. 新建表

    展开你新建的数据库,右键点击“表”,再出现的菜单栏中选中"新建表(N)",然后就可以添加字段也就是(列),并对数据类型进行设置,相关设置我会在后边写   出。

    也可以用SQL语句建立新表:

    CREATE TABLE 表名(字段 类型名 是否为Null,字段 类型名 是否为Null,字段 类型名 是否为Null.............)

    例如:CREATE TABLE PReson(ID int NOT NULL,Name nvarchar(50),Age int)

    这样就建立了如下表:

IDNameAge

    删除表:

    drop table 表名

  11. 常见的数据类型有

    1. 字符串数据类型      char        此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定;如未指定,默认为char(1)。每个字符占用1byte存储空间。      nchar        此数据类型可存储1~4000个定长Unicode字符串,字符串长度在创建时指定;如未指定,默认为nchar(1)。每个字符占用2bytes存储空间。      varchar        此数据类型可存储最大值为8000个字符的可变长字符串。可变长字符串的最大长度在创建时指定,如varchar(50),每个字符占用1byte存储空间。      nvarchar        此数据类型可存储最大值为4000个字符可变长Unicode字符串。可变长Unicode字符串的最大长度在创建时指定,如nvarchar(50),每个字符占用    2bytes存储空间。      text        此数据类型可存储最大值为2147483647个字符的变长文本,并且无需指定其初始值,每个字符占用1byte存储空间,一般用来存储大段的文章。text数  据类型实际上是一个Large Object数据类型,        默认情况下,此类型的数据不是存储在数据行内,而是存储于独立的Large Object数据页上。另    外,text数据类型不能做为函数、存储过程或触发器中的参数来用。      ntext        同text数据类型,只不过存储的是最大值为1073741823个字符的Unicode变长文本,每个字符占用1byte存储空间。        说明:无论使用哪种字符串数据类型,字符串值必须放在引号内,推荐使用单引号。

    一般情况下我是这样区别

      varchar和nvarchar的区别:

      nvarchar中可以有像“汉字”、“日语”等文字,但varchar不允许。

      varchar(10)和char(10)

      char(10)不管你的字符够不够10位,我都会将空间给你留下。

      varchar(10)你有几个我给你几个,但前提是不能超过10。

      注意:电话号码用的是字符型。

    2. 数值数据类型      bit        此数据类型存储值为0或1的二进制字段。占用1byte存储空间。      tinyint        此数据类型存储0~255的整数,占用1byte存储空间。      smallint        此数据类型存储-32768~32767的整数,占用2bytes存储空间。      int        此数据类型存储-2147483648~2147483647的整数,占用4bytes存储空间。      bigint        此数据类型存储-9223372036854775808~9223372036854775807的整数,占用8bytes存储空间。      decimal/numeric        这两个数据类型功能相同,均为存储精度可变的浮点值。但推荐采用decimal,因其存储的数据“更有说明性”。此种数据类型由两个值来确定        decimal(p,s),p为精度,s为标量,如decimal(3,2),其中数值2为小数的位数,那么decimal(3,2)可用来存储如1.28这样的浮点数。此种数据类型占用的存储空   间取决于精度值p。p为1~9,占用5bytes存储空间;p为10~19,占用9bytes存储空间;p为20~28,占用13bytes存储空间;p为29~38,占用17bytes存储空   间。      float        此数据类型存储1~53的可变精度的浮点值,精度表示为float(n),n表示科学记数法的尾数,取值范围为-1.79E+308~-2.23E-308的负数和2.23E-    308~1.79E+308的正数。其存储空间由精度值        决定,n为1~24,占用4bytes存储空间;n为25~53,占用8bytes存储空间。      real        此数据类型存储-3.40E+38~-1.18E-38的负数和1.18E~3.40E+38的正数。占用4bytes存储空间。      smallmoney        此数据类型存储-214748.3648~214748.3647的货币值,精确到小数后4位。占用4bytes存储空间。      money        此数据类型存储-922337203685477.5808~922337203685477.5807的货币值,精确到小数后4位。占用8bytes存储空间。    3. 日期和时间数据类型      smalldatetime        此数据类型存储从1900年1月1日到2079年6月6日的日期。占用4btyes存储空间。      datetime        此数据类型存储从1753年1月1日到9999年12月31日的日期。占用8bytes存储空间。    4. 二进制数据类型      binary        此数据类型存储1~8000个字符的二进制数据,其指定长度即为占用的存储空间。      varbinary        此数据类型存储可变长的二进制数据,可在创建时指定其具体长度,也可不指定。    5. 其它数据类型      rowversion/timestamp        这两种数据类型功能一样,但Microsoft建议在任何情况下尽可能地指明rowversion而不是timestamp,因为rowversion更加准确地反应了数据类型的    真实性质。timestamp数据类型跟时间完全无        关,它表明数据库中的数据修改发生的相对顺序。不要在键(尤其是主键)中使用timestamp     列,因为每次修改行时,timestamp值都会更改。当指定数据类型为rowversion或timestamp,那么         SQL Server会在对表的插入或删除等    更新操作时自动生成一个新值,并把这个新值放在合适的字段里。此类型数据占用8bytes存储空间。      uniqueidentifier        此类型数据存储二进制值,其作用与全局唯一标识符(GUID)一样。GUID 主要用于在有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。    占用16bytes存储空间。

  12. 主键的设置

  

  右键点击如图所示中的位置,在弹出来的菜单中选中设置主键就OK了。当想取消将其作为主键的时候右键点击,选中“删除主键”就OK了。

  有一些类型是可以设置主键,但有些不能能够设置主键。比如说:nvarchar(max)就不能、而nvarchar(50)可以!

  一般有两个设置主键是合理的(int(digint)、uniqueidentifier)

  13.字段的添加和删除

    在上图12中,对应的“列命”、“属性类型”、“允许Null值”中对应填写就可以。若保存后,想进行修改,就右键点击你新建的表——》设计(G)——》然后就可以填写  了!

  不知大家注意了没有:主键不能为空!

  14.在表中填充数据

    右键点击你新建的表——》编辑前200行(E)——》然后就可以填写了!

  15. SQL语句:是和DBMS交谈专用的语句

   注意:SQL字符串用单引号;

      SQL语句大小写不敏感;

      SQL语句主要分:DDL(数据定义语言)Create Table 、Drop Table等(改变表的结构)

              DML(数据操作语言)Select、Insert等(不改变表的结构)

  16. 填充表或者插入数据

  insert into 表名(字段1,字段2,字段3.) values(值1,值2,值3) 例如:insert into person1(id,Name,Age) values(1,'泰山北斗@阿龙',21)

  17. 如何解决开发中系统自动添加排序,也就是说,避免主键的重复 ----- 设置标识(zhi)规范

  右键点击表--》设计--》如下图所示:将”否“改成“是”

  

  标识规范修改不成的解决办法:

  工具--》选项--》Designs--》将”阻止保存要求创建表的更改“前面的对号去掉。

  如下图:

  

  18. Guid的newid()方法

  newid()目的是产生不相同的随机数。

  19. int 自增长字段和Guid的区别

    INT自增长字段的优点:占用空间小、无序开发人员干预 、易读、

            缺点:效率低;

    Guid的优点:效率高、数据导入导出方便;

        缺点:占用空间大、不易读;

  一般来讲,大多数都使用Guid。

  若果使用int 自增字段,则在insert中可以省略对应的字段。

  20. insert可以省略表名后的列名,但不推荐使用。  insert into Person0(FNumber,FName,FAge,Fsalary) values('liqianlong','李乾龙',21,2.15)

  或者 insert into Person0 values('liqianlong','李乾龙',21,2.15)也可以。

insert into 就是向表中插入数据   

  21. update -- 更新数据

    update 表名 Set 列1名=值,列2名=值......... 

    更新的时候注意中文前面要加”N“ 

    updatePerson setAge="23"

    where Age>20;

    上面两句话的意思是:将20以上的Age更新为23

  22. 运算符

    +、 —、 *、 /、=等于() 、<>(不等于)  or (或者)、 and (并且) 、not(非)

  21. delete的使用:

    一般和from一起使用。例如:

    delete from Person where Age>10; /*清理表中年龄大于10的数据!*/

  23. Delete和Drop的区别:

    delete是将表中数据清理了,并没有删除表;

    Drop是直接将表删除掉;

  24. 用SQL设置主键

    例如:create table Person0(FNumber varchar(20),FName varchar(20),FAge int,FSalary numeric(10,2),PRIMARY key(FNumber))

  上面的primary key就是主键的意思,在SQL中是通过这样来设置主键的。对于numeric(10,2)来讲,10是精度(小数点左右两端都包括),2是小数位数。

  25. select * from 表名

    1. 例如:select * from Person0

       where FAge>20;

  注意:上句表示从表Person中塞选FAge 大于20的数据。select意思是“选择、挑选”

    

上一篇:第二节 操纵数据库数据

下一篇:iOS

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表