设为首页 收藏本站
查看: 1094|回复: 0

[经验分享] 33. SQL -- 管理数据库和数据库表(2)

[复制链接]

尚未签到

发表于 2018-10-23 08:34:34 | 显示全部楼层 |阅读模式
  
  修改数据
  在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。
  语法:
  ALTER DATABASE database {
  ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
  | ADD LOG FILE < filespec > [ ,...n ]
  | REMOVE FILE logical_file_name
  | ADD FILEGROUP filegroup_name
  | REMOVE FILEGROUP filegroup_name
  | MODIFY FILE < filespec >
  | MODIFY NAME = new_dbname
  | MODIFY FILEGROUP filegroup_name {filegroup_property | NAME =
  new_filegroup_name }
  | SET < optionspec > [ ,...n ] [ WITH < termination > ]
  | COLLATE < collation_name >
  }
  其中:
  < filespec > ::=
  ( NAME = logical_file_name
  [ , NEWNAME = new_logical_name ]
  [ , FILENAME = 'os_file_name' ]

  [ ,>  [ , MAXSIZE = { max_size | UNLIMITED } ]
  [ , FILEGROWTH = growth_increment ] )
  DEMO:
  alter database db1
  add file
  (name = file1,
  filename = 'c:\Program Files\Microsoft SQL
  Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\file2.ndf')
  除数据
  从数据库服务器中删除一个或多个数据库。删除数据库将删除数据库所使用的数据库文件和磁盘文件。
  语法
  DROP DATABASE database_name [ ,...n ]
  参数
  database_name:指定要删除的数据库名称
  建及管理表
  基本概念
  T-SQL 中创建表的语法定义:
  l 每个表有一个名称,称为表名或关系名。表名必须以字母开头,最大长度为30 个字符。
  l 一张表包含若干列,列名惟一,列名也成为属性名。
  l 同一列的数据必须要有相同的数据类型。
  l 表中的每一列数值必须为一个不可分割的数据项。
  l 表中的一行称为一条记录。
  列属性:
  表的列名在同一个表中具有惟一性,同一列的数据属于同一种数据类型。
  NULL 或NOT NULL

  >  注意:一个列不能同时具有NULL 属性和IDENTITY 属性,只能二者选其一。
  SQL 中表查询方式:
  表扫描:堆表的查询方式,即未创建索引
  堆表+索引:
  索引: 聚集索引: 数据按物理存放位置排序,定义主键
  非聚集索引: 在聚集索引的基础上,建立索引,一般用于why 条件
  建表:
  1)CREATE TABLE 语法:
  CREATE TABLE
  [ database_name.[ owner ] .| owner.] table_name
  ( { < column_definition >| column_name AS computed_column_expression | <
  table_constraint > } [ ,...n ] )
  [ ON { filegroup | DEFAULT } ] [ TEXTIMAGE_ON { filegroup | DEFAULT } ]
  < column_definition > ::= { column_name data_type } [ [ DEFAULT constant_expression ]|

  [>  [ < column_constraint > ] [ ...n ]
  另外,在创建表时,还要注意以下几点:
  一个表至少有一列,最多不超过1 024 列。
  每个数据库中最多可以创建200 万个表。
  表在存储时使用的计量单位是盘区(Extent)。一个盘区分为8 个数据项,每页8KB字节。在创建表时,会分配给它一个初始值为一个盘区的存储空间。当增加表的存储空间时,以盘区为单位增加。
  2)、使用图形化界面创建表:
  数据库 → 表 → 新建表 → 定义列名、数据类型、是否允许null → 列属性:定义默认值
  列属性配置:
  DEMO
  创建表tb3,定义列co11 为int 数据类型,定义其为自增列,起始值为1,增涨幅度为1,定义其为主键,定义列co12 ,数据类型为char(10)
  在向表中写入数据时,co11 列不需指定值,其会自动增涨
  use mytest
  go
  create table tb3

  (co11 int>  co12 char(10))
  insert into tb3 values ('admin')
  go 100
  select * from tb3
  定义实验用表格:
  DEMO1:创建一个商标信息表;
  包含商标ID,商标名称,要求将商标ID 设为主键,所有列not null
  create table Toybradn
  (cBrandld char(3) primary key not null, --主键默认是not null
  cBrandName char(20) not null)
  go
  select * from Toybradn
  查看表列信息:
  数据库 → 表 → 列 | key 信息等
  插入数值:
  insert into Toybradn values ('P01','bus')
  insert into Toybradn values ('P02','bike')
  insert into Toybradn
  values ('A01','desk'),('A02','JF')
  select * from Toybradn
  数据插入方式:
  A、T-SQL:insert into
  B、图形化界面:数据库 → 表 → 右键 → 编辑前200 行 → 输入内容
  C、在EXCEL 中,对应表中各列关系,建立好相关数据,点击复制,在SQL 数据库 → 表
  → 右键 → 编辑前200 行 → 粘贴
  DEMO2:创建一个玩具信息表
  create table toys
  (cToyid char(6) primary key , --玩具ID
  vToyName varchar(20) not null, --名称
  vToyDescription varchar(250), --规格
  cCategoryld char(3), --种类
  mToyRate money not null , --价格
  cBrandld char(3) references Toybradn(cBrandld), --定义外键,引用表Toybradn中的
  cBrandld列,玩具ID
  imPhoto image, --玩具图片
  siLowerAge smallint not null, --年龄下限
  siUpperAge smallint not null , --年龄上限
  siToyWeight smallint , --玩具重量
  vToyimgPath varchar(50)) --图片路径
  select * from toys
  当表创建完成后,若需在图形化界面修改表列参数,需修改:
  工具 → 选项 → designers → 表设计器及数据库设计器 → (取消)阻止保存要求重新创建表的更改写入一条数据:
  insert into toys values
  ('P0001','bus','A-B1','BIG',150,'P01',NULL,3,4,NULL,NULL)
  由于cBrandld 列定义了外键,因此如果cBrandld 列中的内容与商标表中不对应,则不能写入数据.
  DEMO3:创建销售表
  销售表:使用订单号做为主键,创建一个聚集索引.
  create table Orders
  (
  docno char(20), --订单号
  docdate datetime , --日期
  cust Nvarchar(100), --客户
  carrency char(3), --地点
  rate numeric(8,4), --订单金额
  constraint pk_docno primary key clustered
  (docno asc)
  )
  DEMO4:销售明细表:
  create table OrdersDetail
  (
  txcode char(10),
  docno char(20),
  docseq smallint,
  part varchar(30),
  txqty numeric(12,4),
  price numeric(12,4),
  constraint pk_OrdersDetail primary key clustered
  (
  [txcode] asc,
  [docno] asc,
  [docseq] asc
  )
  )
  3)、临时表:
  可以用CREATE TABLE 命令创建表局部的或全局作用的临时表。其语法与创建一般表基本相同,只是在局部临时表的表名前要使用符号―#‖,全局临时表的表名前要使用符号―##‖
  以便与一般的表相区别。
  --创建临时表并附值:
  create table #Toybradn
  (cBrandld char(3) primary key ,
  cBrandName char(20) not null)
  insert into #Toybradn
  select * from Toybradn
  go
  select * from #Toybradn
  /*或者:
  将一个实际表内容into到一个临时表,自动创建*/
  select *
  into #tmpt
  from Toybradn
  select * from Toybradn
  select * from tempdb.dbo.#tmpt
  --临时表是存储于系统数据库tempdb 中
  修改表
  用ALTER TABLE 命令修改表结构通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。
  ALTER TABLE 语法:
  ALTER TABLE table

  { [>  { new_data_type [ ( precision [ , scale ] ) ]
  [ COLLATE < collation_name > ]
  [ NULL | NOT NULL ]
  | {ADD | DROP } ROWGUIDCOL }
  ]
  | ADD
  { [ < column_definition > ]
  | column_name AS computed_column_expression
  } [ ,...n ]
  | [ WITH CHECK | WITH NOCHECK ] ADD
  { < table_constraint > } [ ,...n ]
  | DROP
  { [ CONSTRAINT ] constraint_name
  | COLUMN column } [ ,...n ]
  | { CHECK | NOCHECK } CONSTRAINT
  { ALL | constraint_name [ ,...n ] }
  | { ENABLE | DISABLE } TRIGGER
  { ALL | trigger_name [ ,...n ] }
  }
  使用图形化界面修改:
  数据库 → 表 → 设计
  DEMO1:在tb3 中新增一列
  alter table tb3
  add co13 nvarchar(20)
  DEMO2:修改tb3 中,列co13 的数据类型为char(30)
  alter table tb3
  alter column co13 char(30)
  sp_help tb3:查看表的详细信息
  sp_spaceused tb3:查看表的存储过程
  sp_rename: 修改表名和列名
  DEMO
  /*A. 重命名表
  以下示例将SalesTerritory 表重命名为SalesTerr。
  复制代码*/
  USE AdventureWorks;
  GO
  EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
  GO
  /* B. 重命名列
  以下示例将SalesTerritory 表中的TerritoryID 列重命名为TerrID。
  复制代码*/
  USE AdventureWorks;
  GO
  EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
  GO
  /* C. 重命名索引
  以下示例将IX_ProductVendor_VendorID 索引重命名为IX_VendorID。
  复制代码*/
  USE AdventureWorks;
  GO
  EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID',
  N'IX_VendorID', N'INDEX';
  GO
  /* D. 重命名别名数据类型
  以下示例将Phone 别名数据类型重命名为Telephone。
  复制代码*/
  USE AdventureWorks;
  GO
  EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
  3)、删除表:
  drop table:删除表
  elect:删除一条记录
  delete from Toybradn
  where cBrandld = 'A12'


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625200-1-1.html 上篇帖子: 32. SQL -- 管理数据库和数据库表(1) 下篇帖子: 大容量导入和导出数据 -- 介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表