33. SQL -- 管理数据库和数据库表(2)

 

修改数据

在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。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‘ ]

[ , SIZE = size ]

[ , 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

IDENTITY

注意:一个列不能同时具有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 ]|

[ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]] [ ROWGUIDCOL]

[ < 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 identity(1,1) primary key ,

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

{ [ ALTER COLUMN column_name

{ 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‘

时间: 2024-10-07 15:36:45

33. SQL -- 管理数据库和数据库表(2)的相关文章

32. SQL -- 管理数据库和数据库表(1)

数据库和数据表 数据表的基本表是数据块,同储数据和操作数据的组成的. 表的列名在同一个表中具有惟一性,同一列的数据属于同一类型. 定NULL NOT NULL IDENTITY 数据表被分临时数据表两临时表又分临时表和全局. :结构 类型包括种,分字符串数据Unicode 类型和二类型.别进行介1)Unicode 3 类型:,和 : 关于在何char ncharSQL 则. 项的大小一致,char● 如果列数据则使用 . 项大小相差很大,而且大小可能超字请使用 . .字符串包括种具体数据Ncha

SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库

5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 5.集群环境下SQL Server资源无法保持在线 目录 5.启动SQL Server服务和数据库... 1 5.1 SQL Server服务启动步骤... 1 5.1.1 从注册表中读取SQL Server启动信息... 1 5.1.2 检查硬件,配置内存和CPU.. 2 5.1.3 数据库启动.

java sql编辑器 动态报表 数据库备份还原 quartz定时任务调度 自定义表单 java图片爬虫

获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器(开发利器)+快速构建表单;            QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 B 集成阿里巴巴数据库连接池druid;

SQL语句汇总(一)——数据库与表的操作以及创建约束

首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易出错.博主希望通过此文来战胜自己的健忘,如果大家认可也可以保留起来. "SQL"是 "Structured Query Language" 即“结构化查询语言”的简称,它是用来管理关系型数据库的. 其包括: –数据定义语言(DDL) –数据查询语言(DQL) –数据操作

MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作

sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start /Applications/XAMPP/xamppfiles/bin/mysql -h localhost -u root -p; http://www.cnblogs.com/GarveyCalvin/p/4297282.html#createDatabase 1. mysql> select version(); +-----------+ | version() | +--

PL/SQL developer 管理多套数据库

PL/SQL developer 管理多套数据库,作为一个统一的接口平台,连接多套数据库. 1.. 1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools->Preferences->Editor,将Keyword case选择Uppercase.这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写.这样阅读代码比较容易,且保持良好得编码风格,

《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATE

2.MySQL用户管理,常用SQL语句,MySQL数据库备份与恢复

[toc] MySQL用户管理,重用SQL语句,MySQL数据库备份与恢复 一.MySQL用户管理 1.创建一个普通用户并授权 首先启动mysql,然后进入 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL... SUCCESS! [[email protected] ~]# mysql -uroot -pxavilinux Warning: Using a password on the command line in

[SQL]复制数据库某一个表到另一个数据库中

SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好了 例子:SELECT * INTO [IMCDB].[dbo].[SysLog] FROM [AimManageDB].[dbo].[SysLog] (将数据库AimManageDB中的SysLog表复制到数据库IMCDB中) 跨服务器复制表 select * INTO [SMSDB].[dbo].[SysLog] FROM