2023年6月21日发(作者:)
SQLserver学习(⼀)数据库的基本知识、基本操作和基本语法在软件测试中,数据库是必备知识,假期闲⾥偷忙,整理了⼀点学习笔记,共同探讨。阅读⽬录基本知识数据库到底是有什么作⽤?看下图应该就明⽩了。就是应⽤程序发送请求操作时,到服务器数据库中查询数据,然后再返回给应⽤程序。数据库起到的作⽤是存储数据、检索数据、⽣成新的数据,相对应的要求是:统⼀、安全、性能。数据库可以存储⼤量数据,⽅便检索和访问,能保持数据信息的⼀致、完整,共享和安全,通过组合分析,产⽣新的有⽤信息。数据库发展史万物⽣长,如今使⽤的数据库也不是⼀蹴⽽就,也是慢慢发展⽽来。可分为四个阶段:①萌芽阶段—⽂件系统,只是使⽤磁盘⽂件来存储数据②初级阶段—第⼀代数据库Access,是⽹状模型和层次模型数据库③中级阶段—第⼆代数据库SQL server、Mysql,是关系型数据库和结构化查询语⾔④⾼级阶段—新⼀代数据库Oracle,是“关系-对象”型数据库当下最流⾏的数据库是Oracle、SQL server、DB2Oracle是“关系-对象”型数据库,它的特点是产品免费、服务收费SQL server是关系型数据库,多版本,易⽤性好DB2⽀持多操作系统、多种类型的硬件和设备数据库名词DBA-----数据库管理⼈员DB-------数据库DBMS--数据库管理系统系统数据库:master、model、tempdb、msdb,不能随意更改数据⽂件为.mdf或.ndf⽇志⽂件为.ldf数据的默认路径为:C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataSQL组成DML(数据操作语⾔) ——查询、插⼊、删除和修改数据库中的数据; ——SELECT、INSERT、 UPDATE 、DELETE等;DCL(数据控制语⾔) ——⽤来控制存取许可、存取权限等; ——GRANT、REVOKE 等;DDL(数据定义语⾔) ——⽤来建⽴数据库、数据库对象和定义其列 ——CREATE TABLE 、DROP TABLE 等TCL (事务控制语句) 变量说明、流程控制、功能函数 ——定义变量、判断、分⽀、循环结构等 ——⽇期函数、数学函数、字符函数、系统函数等数据库基本操作登录数据库在安装成功后,在开始菜单中会看到如下所⽰⽂件夹:点击SQL server management studio,即可出现如下登录界⾯:数据库远程连接设置第⼀步,打开外围配置器设置第⼆步,进⾏相应设置第三步,进⾏连接操作数据库的分离操作分离是指默认情况下数据库在联机状态下我们不能对数据库⽂件进⾏任何复制删除等操作,如果将数据库分离的话就可以对数据⽂件进⾏复制、剪切、删除等操作了。⼀般想直接备份数据⽂件,就先分离数据库,之后把数据⽂件复制到别的地⽅,再把数据⽂件附加回去就可以了。操作如下所⽰:先将数据库进⾏分离操作:完成上述操作,数据库便分离成功,然后就可以做相应的复制等操作了。分离也可以使⽤代码实现,如下sp_detach_db demo再将分离的数据库附加到⼯作⾯板:附加也可以使⽤代码实现,如下:sp_attach_db demo数据库的脱机、联机操作脱机与联机是相对操作,先要有脱机才能执⾏联机操作,与分离不同的是,脱机后的数据库只是不能被访问了,但还在⼯作⾯板中,但分离后的数据库,是不存在⼯作⾯板中的。当要再想使⽤该数据库,脱机状态的数据库只需要联机即可,分离的数据库需要附加才可以。脱机操作如下:脱机也可使⽤代码实现,代码如下:alter database demo set offline联机操作如下:联机也可使⽤代码实现,代码如下:alter database demo set online数据库收缩操作收缩是把数据库以及⽇志的内存收缩操作如下收缩数据库操作:收缩⽇志⽂件操作:收缩⽂件也可使⽤如下命令:DBCC ShrinkFile('数据库名', targetsize); /* 收缩数据库⽂件 */DBCC ShrinkFile('数据库名_log', targetsize); /* 收缩⽇志⽂件 */需要注意的是:Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将⽂件收缩到指定⼤⼩。DBCC SHRINKFILE 不会将⽂件收缩到⼩于“实际使⽤的空间”⼤⼩,例如“分配空间”为10M,“实际使⽤空间”为6M,当制定targetsize为1时,则将该⽂件收缩到6M,不会将⽂件收缩到1M。收缩数据库可使⽤如下命令:DBCC SHRINKDATABASE(数据库名,百分⽐)此处的百分⽐:即“收缩后⽂件中的最⼤可⽤空间”,取值范围“⼤于等于0, ⼩于100%”,实际使⽤中设为0即可。数据库的备份、还原操作备份操作是为了保证数据的完整性以及避免异常操作⽽导致数据⽆法挽回的操作,个⼈觉得是⾮常⾮常有必要的。数据库的备份分为如下⼏种:完全备份: 备份全部选中的⽂件夹,并不依赖⽂件的存档属性来确定备份那些⽂件。(在备份过程中,任何现有的标记都被清除,每个⽂件都被标记为已备份,换⾔之,清除存档属性)。完全备份也叫完整备份。差异备份: 差异备份是针对完全备份:备份上⼀次的完全备份后发⽣变化的所有⽂件。(差异备份过程中,只备份有标记的那些选中的⽂件和⽂件夹。它不清除标记,即:备份后不标记为已备份⽂件,换⾔之,不清除存档属性)。事务⽇志备份: 在特定事务⽇志备份之前执⾏的完整数据库备份和上次差异备份(如果有)。在完整数据库备份之后执⾏的所有事务⽇志备份或在特定事务⽇志备份之前执⾏的差异备份(如果您还原了差异备份)。如果你设置了恢复模式为【简单】,你将⽆法使⽤【事务⽇志】备份。SQL Server 2000 和 SQL Server 2005: 创建事务⽇志备份,您必须使⽤完整恢复或⼤容量⽇志记录恢复模型。备份操作如下,此处选择的是完整备份:还原数据库操作权限设置权限设置就是设置登录名和⽤户名操作。登录名与⽤户名的区别:1.登录名是指可以使⽤新建的登录名和密码登录数据库这个程序软件,但不能打开或展开⽤户⾃⼰创建的数据库;2.⽤户名是在登录名基础上,为⽤户⾃⼰创建的数据库新加的可查看⽤户,但要进⾏增查改删操作仍然需要为该⽤户添加使⽤权限。⽤户名可以与登录名相同,也可以不同。⼀个数据库可以拥有多个⽤户,⼀个⽤户也可以访问多个数据库。先以sa为登录名登录做如下操作:创建登录名:使⽤刚创建的登录名登录,去使⽤由sa⽤户创建的数据库,发现不可⽤:创建⽤户,分配权限添加好后就可以对sa创建的数据库进⾏操作了基本语法说了这么多,再来看数据库语法怎么操作,数据库四⼤操作,就是增删改查。在做这些操作的时候,⾸先得要有个数据库,有张表,这样才可以操作。把问题简单化,想成平时的档案室。数据库就是档案室,可以存放很多档案,表就是档案袋中的⽂件。创建数据库建数据库和建表操作可⼿动创建,也可以使⽤代码创建,先看⼿动创建:⼿动创建数据库操作如下:完成上述两步就已经创建好⼀个数据库了。在使⽤代码操作的时候,需要先做如下所⽰操作,并连接:使⽤代码创建数据库,实现如下:create database demouse demo还有⼀种创建数据库语法,就是指定数据库⽂件参数和⽇志⽂件参数,语法如下:create database 数据库名on [primary] ( <数据⽂件参数> [,…n] [<⽂件组参数>] ) [log on]
( <⽇志⽂件参数> [,…n] )举例如下:CREATE DATABASE stuDB ON PRIMARY --默认就属于PRIMARY主⽂件组,可省略( NAME='stuDB_data', --主数据⽂件的逻辑名 FILENAME='D:projectstuDB_', --主数据⽂件的物理名 SIZE=5mb, --主数据⽂件初始⼤⼩ MAXSIZE=100mb, --主数据⽂件增长的最⼤值 FILEGROWTH=15% --主数据⽂件的增长率)LOG ON( NAME='stuDB_log', FILENAME='D:projectstuDB_', SIZE=2mb, FILEGROWTH=1MB)GO
若⼀次性要创建多个数据库或多个⽇志⽂件,在⼩括号外加个,号即可创建表⼿动创建表,操作如下:
保存输⼊表名即可使⽤代码创建表如下:
代码为:create table demo(nname nchar(10),age tinyint,sex int)数据库和表已经创建好了⾸先来看增1、插⼊⼀条数据:⽅法⼀:安照列名依次给出数据值,不能交换顺序,数据类型不能出错insert into demovalues('zhang',25,1)⽅法⼆:insert into demo(nname,age,sex)values('san',18,0)⽅法三:交换顺序,数值按照列名给就⾏insert into demo(nname,sex,age)values('san',1,22)⽅法四:没给数值的列显⽰nullinsert into demo(nname)values('li')2、插⼊多条数据:使⽤select,union是指连接的意思insert into demo(nname,age,sex)若不写列名,则默认插⼊所有列数据select 'wang',28,0 unionselect 'wu',30,13、插⼊⼀列alter table demoadd sex int4、复制demo表中数据到demo1表中:insert into demo1(nname,nage,asex)select nname,age,sexfrom demo注意事项1:每次插⼊⼀⾏数据,不可能只插⼊半⾏或者⼏列数据,因此,插⼊的数据是否有效将按照整⾏的完整性的要求来检验;2:每个数据值的数据类型、精度和⼩数位数必须与相应的列匹配;3:不能为标识列指定值,因为它的数字是⾃动增长的;4:如果在设计表的时候就指定了某列不允许为空,则必须插⼊数据;5:插⼊的数据项,要求符合检查约束的要求6:具有缺省值的列,可以使⽤default(缺省)关键字来代替插⼊的数值其次来看删删除某⼀⾏:delete from demowhere nname='li'删除某⼀列:alter table demodrop column sex删除整张表:delete from demo --不加where条件就是删除整个表清空整张表:truncate table demo注意:删除整张表操作和清空整张表操作对⽐ 删除是删除了所有,包括表结构 清空只是清空了表中数据,但表结构还在,清空速度快些删除数据库drop database new还可以先查询是否有该数据库,再做删除操作,代码如下:if exists(select * from ses where name='new')drop database new做了⼀个if判断,ses是指整个系统数据库,删除数据库的前提条件是,要删除的这个数据库没有被使⽤然后来看改改某⼀列数据update demosetage='28'where nname='zhang'set是设置要改的数据改多列数据:update demosetnname='zhao',age='13',sex='0'where nname='li'最后就是查询查询表中所有数据,*代表所有列:select *
from demo查询表中某⼀⾏所有数据:select *
from demowhere nname='li'查询表中某⼀⾏某⼀列的数据:select agefrom demowhere nname='li'查询出来的结果列⽤as取别名:select age as '年龄'from demowhere nname='li'查询出来的结果列⽤=取别名:select wname = nnamefrom demo注意:wname是新列名,nname是表中已存在的列名添加约束约束⽬的:保证数据的完整性和有效性约束分为如下⼏种:1.主键约束:唯⼀⾮空(特点) primary key PK_ ⼀个表⾥⾯只能存在⼀个主键 允许存在把两列作为⼀个主键2.默认约束:默认值 default key DK_ 当不填数据时默认采⽤设定好的值3.唯⼀约束:数据不重复,允许⼀⾏数据为空 Unique Key 唯⼀允许⼀个为空4.检查约束:⽤来检查填⼊的数据是否满⾜要求 Check Key5.⾮空约束:不能为空 not null6.外键约束:外键指的是,表A中的id为主键,但在表B中id不是主键,表A的id就是表B的id外键。外键语法:alter table 表名add constraint FK_字段名--"FK"为外键的缩写foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'添加约束有三种⽅式,分别是建表中(在列名中添加和不在列名中添加),建表后⽅法⼀:建表中在列名中添约束,语法为:列名 数据类型 约束条件,代码如下:create table dome5( sid smallint primary key, sname nchar(10) not null default 'zhangsan', saddre nvarchar(20), sage tinyint unique key, semail char(20) check (semail like '%@%.%'), createtime datetime default getdate())⽅法⼆:建表中不在列名中添加约束,语法为:constraint 约束名 约束语法,代码如下:create table stdent2( sid int, sname nchar(15) not null default 'zhangsan', saddress nvarchar(30), sage tinyint, semail char(20), stime datetime default getdate(), constraint PK_sid primary key(sid), constraint CK_sage check (sage>10), constraint CK_semail check (semail like '%@%.%'))需要注意的是:默认约束只能在 列名 数据类型 后⾯添加,意思就是默认约束要使⽤在⽅法⼀添加⽅法三:建完表后再添加约束,代码如下:alter table stuadd constraint ck_ssex check (ssex=0 or ssex=1)alter是修改表结构数据类型数据类型如下表所⽰:分类备注和说明数据类型说明⼆进制数据类型存储⾮字符和⽂本的数据Image可⽤来存储图像Char固定长度的⾮ Unicode 字符数据,效率⾼可变长度⾮ Unicode 数据,节省空VarcharNchar⽂本数据类型字符数据包括任意字母、符号或数字字符的组合Nvarchar间固定长度的 Unicode 数据可变长度 Unicode 数据Text存储长⽂本信息Ntext存储可变长度的长⽂本⽇期和时间⽇期和时间在单引号内输⼊DatetimeBigint、int、smallint、tinyint⽇期和时间整数数字数据该数据仅包含数字,包括正数、负数以及分数float、real数字货币数据类型⽤于⼗进制货币值Money
数值类型例:stuid numeric(18,0),代表18位数字,⼩数位数为0,属于浮点类型numeric (18,0)
标识列identity(起始值,递增量)identity(1,1)⾃动递增Bit数据类型表⽰是/否的数据Bit存储布尔数据类型
2023年6月21日发(作者:)
SQLserver学习(⼀)数据库的基本知识、基本操作和基本语法在软件测试中,数据库是必备知识,假期闲⾥偷忙,整理了⼀点学习笔记,共同探讨。阅读⽬录基本知识数据库到底是有什么作⽤?看下图应该就明⽩了。就是应⽤程序发送请求操作时,到服务器数据库中查询数据,然后再返回给应⽤程序。数据库起到的作⽤是存储数据、检索数据、⽣成新的数据,相对应的要求是:统⼀、安全、性能。数据库可以存储⼤量数据,⽅便检索和访问,能保持数据信息的⼀致、完整,共享和安全,通过组合分析,产⽣新的有⽤信息。数据库发展史万物⽣长,如今使⽤的数据库也不是⼀蹴⽽就,也是慢慢发展⽽来。可分为四个阶段:①萌芽阶段—⽂件系统,只是使⽤磁盘⽂件来存储数据②初级阶段—第⼀代数据库Access,是⽹状模型和层次模型数据库③中级阶段—第⼆代数据库SQL server、Mysql,是关系型数据库和结构化查询语⾔④⾼级阶段—新⼀代数据库Oracle,是“关系-对象”型数据库当下最流⾏的数据库是Oracle、SQL server、DB2Oracle是“关系-对象”型数据库,它的特点是产品免费、服务收费SQL server是关系型数据库,多版本,易⽤性好DB2⽀持多操作系统、多种类型的硬件和设备数据库名词DBA-----数据库管理⼈员DB-------数据库DBMS--数据库管理系统系统数据库:master、model、tempdb、msdb,不能随意更改数据⽂件为.mdf或.ndf⽇志⽂件为.ldf数据的默认路径为:C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataSQL组成DML(数据操作语⾔) ——查询、插⼊、删除和修改数据库中的数据; ——SELECT、INSERT、 UPDATE 、DELETE等;DCL(数据控制语⾔) ——⽤来控制存取许可、存取权限等; ——GRANT、REVOKE 等;DDL(数据定义语⾔) ——⽤来建⽴数据库、数据库对象和定义其列 ——CREATE TABLE 、DROP TABLE 等TCL (事务控制语句) 变量说明、流程控制、功能函数 ——定义变量、判断、分⽀、循环结构等 ——⽇期函数、数学函数、字符函数、系统函数等数据库基本操作登录数据库在安装成功后,在开始菜单中会看到如下所⽰⽂件夹:点击SQL server management studio,即可出现如下登录界⾯:数据库远程连接设置第⼀步,打开外围配置器设置第⼆步,进⾏相应设置第三步,进⾏连接操作数据库的分离操作分离是指默认情况下数据库在联机状态下我们不能对数据库⽂件进⾏任何复制删除等操作,如果将数据库分离的话就可以对数据⽂件进⾏复制、剪切、删除等操作了。⼀般想直接备份数据⽂件,就先分离数据库,之后把数据⽂件复制到别的地⽅,再把数据⽂件附加回去就可以了。操作如下所⽰:先将数据库进⾏分离操作:完成上述操作,数据库便分离成功,然后就可以做相应的复制等操作了。分离也可以使⽤代码实现,如下sp_detach_db demo再将分离的数据库附加到⼯作⾯板:附加也可以使⽤代码实现,如下:sp_attach_db demo数据库的脱机、联机操作脱机与联机是相对操作,先要有脱机才能执⾏联机操作,与分离不同的是,脱机后的数据库只是不能被访问了,但还在⼯作⾯板中,但分离后的数据库,是不存在⼯作⾯板中的。当要再想使⽤该数据库,脱机状态的数据库只需要联机即可,分离的数据库需要附加才可以。脱机操作如下:脱机也可使⽤代码实现,代码如下:alter database demo set offline联机操作如下:联机也可使⽤代码实现,代码如下:alter database demo set online数据库收缩操作收缩是把数据库以及⽇志的内存收缩操作如下收缩数据库操作:收缩⽇志⽂件操作:收缩⽂件也可使⽤如下命令:DBCC ShrinkFile('数据库名', targetsize); /* 收缩数据库⽂件 */DBCC ShrinkFile('数据库名_log', targetsize); /* 收缩⽇志⽂件 */需要注意的是:Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将⽂件收缩到指定⼤⼩。DBCC SHRINKFILE 不会将⽂件收缩到⼩于“实际使⽤的空间”⼤⼩,例如“分配空间”为10M,“实际使⽤空间”为6M,当制定targetsize为1时,则将该⽂件收缩到6M,不会将⽂件收缩到1M。收缩数据库可使⽤如下命令:DBCC SHRINKDATABASE(数据库名,百分⽐)此处的百分⽐:即“收缩后⽂件中的最⼤可⽤空间”,取值范围“⼤于等于0, ⼩于100%”,实际使⽤中设为0即可。数据库的备份、还原操作备份操作是为了保证数据的完整性以及避免异常操作⽽导致数据⽆法挽回的操作,个⼈觉得是⾮常⾮常有必要的。数据库的备份分为如下⼏种:完全备份: 备份全部选中的⽂件夹,并不依赖⽂件的存档属性来确定备份那些⽂件。(在备份过程中,任何现有的标记都被清除,每个⽂件都被标记为已备份,换⾔之,清除存档属性)。完全备份也叫完整备份。差异备份: 差异备份是针对完全备份:备份上⼀次的完全备份后发⽣变化的所有⽂件。(差异备份过程中,只备份有标记的那些选中的⽂件和⽂件夹。它不清除标记,即:备份后不标记为已备份⽂件,换⾔之,不清除存档属性)。事务⽇志备份: 在特定事务⽇志备份之前执⾏的完整数据库备份和上次差异备份(如果有)。在完整数据库备份之后执⾏的所有事务⽇志备份或在特定事务⽇志备份之前执⾏的差异备份(如果您还原了差异备份)。如果你设置了恢复模式为【简单】,你将⽆法使⽤【事务⽇志】备份。SQL Server 2000 和 SQL Server 2005: 创建事务⽇志备份,您必须使⽤完整恢复或⼤容量⽇志记录恢复模型。备份操作如下,此处选择的是完整备份:还原数据库操作权限设置权限设置就是设置登录名和⽤户名操作。登录名与⽤户名的区别:1.登录名是指可以使⽤新建的登录名和密码登录数据库这个程序软件,但不能打开或展开⽤户⾃⼰创建的数据库;2.⽤户名是在登录名基础上,为⽤户⾃⼰创建的数据库新加的可查看⽤户,但要进⾏增查改删操作仍然需要为该⽤户添加使⽤权限。⽤户名可以与登录名相同,也可以不同。⼀个数据库可以拥有多个⽤户,⼀个⽤户也可以访问多个数据库。先以sa为登录名登录做如下操作:创建登录名:使⽤刚创建的登录名登录,去使⽤由sa⽤户创建的数据库,发现不可⽤:创建⽤户,分配权限添加好后就可以对sa创建的数据库进⾏操作了基本语法说了这么多,再来看数据库语法怎么操作,数据库四⼤操作,就是增删改查。在做这些操作的时候,⾸先得要有个数据库,有张表,这样才可以操作。把问题简单化,想成平时的档案室。数据库就是档案室,可以存放很多档案,表就是档案袋中的⽂件。创建数据库建数据库和建表操作可⼿动创建,也可以使⽤代码创建,先看⼿动创建:⼿动创建数据库操作如下:完成上述两步就已经创建好⼀个数据库了。在使⽤代码操作的时候,需要先做如下所⽰操作,并连接:使⽤代码创建数据库,实现如下:create database demouse demo还有⼀种创建数据库语法,就是指定数据库⽂件参数和⽇志⽂件参数,语法如下:create database 数据库名on [primary] ( <数据⽂件参数> [,…n] [<⽂件组参数>] ) [log on]
( <⽇志⽂件参数> [,…n] )举例如下:CREATE DATABASE stuDB ON PRIMARY --默认就属于PRIMARY主⽂件组,可省略( NAME='stuDB_data', --主数据⽂件的逻辑名 FILENAME='D:projectstuDB_', --主数据⽂件的物理名 SIZE=5mb, --主数据⽂件初始⼤⼩ MAXSIZE=100mb, --主数据⽂件增长的最⼤值 FILEGROWTH=15% --主数据⽂件的增长率)LOG ON( NAME='stuDB_log', FILENAME='D:projectstuDB_', SIZE=2mb, FILEGROWTH=1MB)GO
若⼀次性要创建多个数据库或多个⽇志⽂件,在⼩括号外加个,号即可创建表⼿动创建表,操作如下:
保存输⼊表名即可使⽤代码创建表如下:
代码为:create table demo(nname nchar(10),age tinyint,sex int)数据库和表已经创建好了⾸先来看增1、插⼊⼀条数据:⽅法⼀:安照列名依次给出数据值,不能交换顺序,数据类型不能出错insert into demovalues('zhang',25,1)⽅法⼆:insert into demo(nname,age,sex)values('san',18,0)⽅法三:交换顺序,数值按照列名给就⾏insert into demo(nname,sex,age)values('san',1,22)⽅法四:没给数值的列显⽰nullinsert into demo(nname)values('li')2、插⼊多条数据:使⽤select,union是指连接的意思insert into demo(nname,age,sex)若不写列名,则默认插⼊所有列数据select 'wang',28,0 unionselect 'wu',30,13、插⼊⼀列alter table demoadd sex int4、复制demo表中数据到demo1表中:insert into demo1(nname,nage,asex)select nname,age,sexfrom demo注意事项1:每次插⼊⼀⾏数据,不可能只插⼊半⾏或者⼏列数据,因此,插⼊的数据是否有效将按照整⾏的完整性的要求来检验;2:每个数据值的数据类型、精度和⼩数位数必须与相应的列匹配;3:不能为标识列指定值,因为它的数字是⾃动增长的;4:如果在设计表的时候就指定了某列不允许为空,则必须插⼊数据;5:插⼊的数据项,要求符合检查约束的要求6:具有缺省值的列,可以使⽤default(缺省)关键字来代替插⼊的数值其次来看删删除某⼀⾏:delete from demowhere nname='li'删除某⼀列:alter table demodrop column sex删除整张表:delete from demo --不加where条件就是删除整个表清空整张表:truncate table demo注意:删除整张表操作和清空整张表操作对⽐ 删除是删除了所有,包括表结构 清空只是清空了表中数据,但表结构还在,清空速度快些删除数据库drop database new还可以先查询是否有该数据库,再做删除操作,代码如下:if exists(select * from ses where name='new')drop database new做了⼀个if判断,ses是指整个系统数据库,删除数据库的前提条件是,要删除的这个数据库没有被使⽤然后来看改改某⼀列数据update demosetage='28'where nname='zhang'set是设置要改的数据改多列数据:update demosetnname='zhao',age='13',sex='0'where nname='li'最后就是查询查询表中所有数据,*代表所有列:select *
from demo查询表中某⼀⾏所有数据:select *
from demowhere nname='li'查询表中某⼀⾏某⼀列的数据:select agefrom demowhere nname='li'查询出来的结果列⽤as取别名:select age as '年龄'from demowhere nname='li'查询出来的结果列⽤=取别名:select wname = nnamefrom demo注意:wname是新列名,nname是表中已存在的列名添加约束约束⽬的:保证数据的完整性和有效性约束分为如下⼏种:1.主键约束:唯⼀⾮空(特点) primary key PK_ ⼀个表⾥⾯只能存在⼀个主键 允许存在把两列作为⼀个主键2.默认约束:默认值 default key DK_ 当不填数据时默认采⽤设定好的值3.唯⼀约束:数据不重复,允许⼀⾏数据为空 Unique Key 唯⼀允许⼀个为空4.检查约束:⽤来检查填⼊的数据是否满⾜要求 Check Key5.⾮空约束:不能为空 not null6.外键约束:外键指的是,表A中的id为主键,但在表B中id不是主键,表A的id就是表B的id外键。外键语法:alter table 表名add constraint FK_字段名--"FK"为外键的缩写foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'添加约束有三种⽅式,分别是建表中(在列名中添加和不在列名中添加),建表后⽅法⼀:建表中在列名中添约束,语法为:列名 数据类型 约束条件,代码如下:create table dome5( sid smallint primary key, sname nchar(10) not null default 'zhangsan', saddre nvarchar(20), sage tinyint unique key, semail char(20) check (semail like '%@%.%'), createtime datetime default getdate())⽅法⼆:建表中不在列名中添加约束,语法为:constraint 约束名 约束语法,代码如下:create table stdent2( sid int, sname nchar(15) not null default 'zhangsan', saddress nvarchar(30), sage tinyint, semail char(20), stime datetime default getdate(), constraint PK_sid primary key(sid), constraint CK_sage check (sage>10), constraint CK_semail check (semail like '%@%.%'))需要注意的是:默认约束只能在 列名 数据类型 后⾯添加,意思就是默认约束要使⽤在⽅法⼀添加⽅法三:建完表后再添加约束,代码如下:alter table stuadd constraint ck_ssex check (ssex=0 or ssex=1)alter是修改表结构数据类型数据类型如下表所⽰:分类备注和说明数据类型说明⼆进制数据类型存储⾮字符和⽂本的数据Image可⽤来存储图像Char固定长度的⾮ Unicode 字符数据,效率⾼可变长度⾮ Unicode 数据,节省空VarcharNchar⽂本数据类型字符数据包括任意字母、符号或数字字符的组合Nvarchar间固定长度的 Unicode 数据可变长度 Unicode 数据Text存储长⽂本信息Ntext存储可变长度的长⽂本⽇期和时间⽇期和时间在单引号内输⼊DatetimeBigint、int、smallint、tinyint⽇期和时间整数数字数据该数据仅包含数字,包括正数、负数以及分数float、real数字货币数据类型⽤于⼗进制货币值Money
数值类型例:stuid numeric(18,0),代表18位数字,⼩数位数为0,属于浮点类型numeric (18,0)
标识列identity(起始值,递增量)identity(1,1)⾃动递增Bit数据类型表⽰是/否的数据Bit存储布尔数据类型
发布评论