sql修改表格.docx
- 文档编号:26683202
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:8
- 大小:19.37KB
sql修改表格.docx
《sql修改表格.docx》由会员分享,可在线阅读,更多相关《sql修改表格.docx(8页珍藏版)》请在冰豆网上搜索。
sql修改表格
竭诚为您提供优质文档/双击可除
sql修改表格
篇一:
sqlserver快速掌握创建和修改表格
sqlserver快速掌握创建和修改表格本文将介绍数据库定义语言(ddl)用于创建数据库和表格以及修改表格结果的指令。
当你使用这些指令时一定要小心——它很容易删去你的数据库中的主要结构令您丢失数据。
所以,在您开始修改数据库之前,您需要知道数据库是什么。
数据库之间的差异本文中的样品查询系统遵循sql92iso标准。
并不是所有的数据库都遵循该标准,有些数据库做了改进,这会产生不可预料的结果。
创建数据库为了创建表格,你首先需要需要创建一个可以容纳表格的数据库。
sql用于创建数据库的基本语句是:
以下是引用片段:
cReatedatabasedbname;你的数据库用户必须有建立数据库的适当权限。
如果与你有关的用户不能发出用于创建新数据库的命令,要求数据库管理员为你建立数据库,你也作为管理员登录然后建立数据库并设置权限。
举个例子,用cReate指令为一个应用程序建立一个数据库用于显示一个目录:
以下是引用片段:
cReatedatabasecatalog;这给你一个用于在查询时与其它表格区分的表格名字。
下一步是创建用于输入它的表格。
创建表格如你所知,表格是有若干个栏目所组成。
当创建表格时,你可以定义栏目并分配字段属性。
表格建立后,可以用alteR表格指令来修改它,我们稍后将提到这一点。
你可以用下面这条指令来创建数据库,命令行的参数为表格名字、栏目名字,还有每一栏的数据类型。
以下是引用片段:
cReatetabletable_name
(column1data_type,column2data_type,column3data_type);不同的数据库提供商的标准差别很大。
你的帮助文档中应该有一段详细说明如何使用每一种数据、接受何种参数。
以下是引用片段:
charchar(8)它包含了一个固定长度的字符串,其值常常是字符串长度。
VarcharVarchar(128)它包含了一个长度不大于指定值的长度可变的字符串。
intint(32)这是一个不大于指定值得整数,也做number或integer。
decimaldecimal(12,2)这是一个总位数和小数点后位数不大于指定值得小数,也被称为numeric或number。
binarybinary用于存储二进制对象,在数据库中它一般不可分解和显示,也称为Raw或blob。
booleanboolean用来只是真或假,也成为bit或byte。
通用数据类型在本例中,我们建立了一个存放库存商品信息的表格。
所用到的栏目和数据类型如表b所示:
以下是引用片段:
栏目名称:
prod_idprod_colorprod_descrprod_size数据类型:
int(16)Varchar(20)
Varchar(255)decimal(8,2)在本例中,我使用了三种基本数据类型;然而,在实际使用时,根据数据库支持的内容,我可能还用用上tinyint、文本和mediumtext数据类型。
发出如下指令来建立表格:
以下是引用片段:
cReatetableproducts(prod_idint(16),prod_colorVaRchaR(20),prod_descrVaRchaR(255),prod_sizedecimal(8,2));如果这些指令顺利完成,你就可以在表格中正常地插入信息。
除了数据类型,你还可以在创建表格时定义自动增量字段(auto-incrementedfield)、关键字、索引和特殊数值限制。
在表格定义时,这些参数与数据类型一同传递。
如果在创建表格product时定义具有特殊数值限制的自动增量prod_id,命令如下:
以下是引用片段:
cReatetableproducts(prod_idint(16)auto_incRement,prod_colorVaRchaR(20),prod_descrVaRchaR(255),prod_sizedecimal(8,2),unique(`prod_id`));如果把prod_id做为索引字段定义,可以用cReateindex:
以下是引用片段:
cReateindexprodindexonproduct(prod_id);这里有必要重申:
数据库提供商在关键字的处理上有所不同。
所以,具体情况请参考你的数据库提供商的文档。
修改表格当你开始对表格进行操作时,你也许觉得有必要修改表格的结构、字段类型等等。
在前面,我强烈建议你避免在生产环境(productionenvironment)这么做。
因为有些操作,如添加、删除和修改字段可能会删除或破坏相关字段中的数据。
好,现在让我们看看如何修改表格。
首先,在表格product中加入一栏。
你可以指定该栏插入的相对其它栏的位置,也可以让它插到表格末端(默认):
以下是引用片段:
alteRtableproductaddprod_nameVaRchaR(20)aFteRprod_id;用类似的语句删除一个栏目:
以下是引用片段:
alteRtableproductdRopprod_size;最后,更改一个栏目的数据类型:
以下是引用片段:
alteRtableproductchangeprod_colorprod_color_idint(20);现在,你的表格如表c所示:
以下是引用片段:
栏
目名称:
prod_idprod_nameprod_color_idprod_descr数据类型:
int(16)Varchar(20)int(20)Varchar(255))注意,有些数据库不支持关键字dRop。
另外,如果你改变现有的某一栏的数据类型,大多数数据库会试图转化该栏目现有数据的数据类型。
然而,如果是转为一个不支持的数据类型,数据就有可能丢失。
举例来说,如果把一个类型为Varchar的包含人名字的字段改为int类型,转换的结果可能是整型的默认值。
删除表格和数据库在删除表格和数据库之前,你需要确保丢失这些数据不会造成恶果。
如果你删除数据库,库中的所有表格和内容都会被清除。
如果你删除一个表格,表格中的所有内容都会丢失,但是库中的其它表格没有影响。
在删除表格或整个栏目之前,你必须清楚数据库的结构。
如果你进入一个已经存在的数据库并错误删除了某个元素,可能会影响到促发条件(trigger)、存储过程和视图。
有些数据库支持用关键字RestRict和cascade去预防由于删除表格带来的损失。
RestRict一般按默认设置,预防丢失表格,而cascade用于删除与该表格有关的实体。
现在上面建立的表格product是可以被删除的,我们开始删除它:
以下是引用片段:
dRoptableproduct;现在删除数据库:
以下是引用片段:
dRopdatabasecatalog;大多数数据库软件提供商支持dRopdatabase命令,尽管它是在sql99标准中被定义而不是sql92。
部分数据库提供了Flush命令,该命令可以让你删除表格中的内容但又可以保持表格的结果,以下是引用片段:
Flushtableproduct;如你所见,删除数据库中的主要结构并丢失所存的所有数据的容易程度令人难以想象,所以,一定要小心使用这些命令,而当你不清楚数据库中的内容时,就不要使用这些命令。
篇二:
sqlserver20xx不能修改表的解决方法
sqlserver20xx不能修改表的解决方法
新装的sqlseRVeR20xx,打开原来sqlseRVeR20xx中建立的表,现在想增加一些字段,在保存时提示错误,无法保存。
刚开始以为是sqlseRVeR20xx与20xx的不兼容,后来发现在sqlseRVeR20xx中新建的表也存在无法修改表结构,也就是无法修改字段名和增加字段名。
提示是:
不允许保存更改。
您所做的更改要求删除并重新创建以下表。
您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。
你这是因为选择了“阻止保存要求重新创建表的更改”选项。
解决办法:
启动mssqlseRVeR20xx,选择菜单工具-〉选项-〉左侧有个设计器-〉表设计器和数据库设计器。
然后去掉“阻止保存要求重新创建表的更改”前面的勾。
重新启动mssqlseRVeR20xx即可。
如下图所示:
篇三:
sql数据库增删改查建表删表语句
电脑相关问题,程序设计方面的,即能够写程序实现“添(增)加、删除、修改和查询”四大功能。
具体操作如下:
一、增:
有4种方法
1.使用insert插入单行数据:
语法:
insert[into][列名]values
例:
insertintostrdents(姓名,性别,出生日期)values(开心朋朋,男,1980/6/15)
注意:
into可以省略;列名列值用逗号分开;列值用单引号因上;如果省略表名,将依次插入所有列
2.使用insertselect语句将现有表中的数据添加到已有的新表中
语法:
insertinto
selectfrom
例:
insertintotongxunlu(姓名,地址,电子邮件)
selectname,address,email
fromstrdents
注意:
into不可省略;查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致
3.使用selectinto语句将现有表中的数据添加到新建表中
语法:
selectintofrom例:
selectname,address,emailintotongxunlufromstrdents
注意:
新表是在执行查询语句的时候创建的,不能够预先存在
在新表中插入标识列(关键字identity):
语法:
selectidentity(数据类型,标识种子,标识增长量)as列名
into新表from原表名
例:
selectidentity(int,1,1)as标识列,dengluid,passwordintotongxunlufromstruents注意:
关键字identity
4.使用union关键字合并数据进行插入多行
语法:
insertselecttnionselect
例:
insertstudents(姓名,性别,出生日期)
select开心朋朋,男,1980/6/15union(union表示下一行)select蓝色小明,男,19**/**/**
注意:
插入的列值必须和插入的列名个数、顺序、数据类型一致
二、删:
有2中方法
1.使用delete删除数据某些数据
语法:
deletefrom[where]
例:
deletefromawherename=开心朋朋(删除表a中列值为开心朋朋的行)
注意:
删除整行不是删除单个字段,所以在delete后面不能出现字段名
2.使用truncatetable删除整个表的数据
语法:
truncatetable
例:
truncatetabletongxunlu
注意:
删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用语有
外建约束引用的表
三、改
使用update更新修改数据
语法:
updateset[where]例:
updatetongxunluset年龄=18where姓名=蓝色小名
注意:
set后面可以紧随多个数据列的更新值;where子句是可选的,用来限制条件,如果不选则整个表的所有行都被更新
四、查
1.普通查询
语法:
selectfrom[where][orderby[asc或desc]]
1).查询所有数据行和列
例:
select*froma
说明:
查询a表中所有行和列
2).查询部分行列--条件查询
例:
selecti,j,kfromawheref=5说明:
查询表a中f=5的所有行,并显示i,j,k3列
3).在查询中使用as更改列名
例:
selectnameas姓名fromawhrerxingbie=男
说明:
查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示
4).查询空行
例:
selectnamefromawhereemailisnull
说明:
查询表a中email为空的所有行,并显示name列;sql语句中用isnull或者isnotnull来判断是否为空行
5).在查询中使用常量
例:
selectname唐山as地址froma
说明:
查询表a,显示name列,并添加地址列,其列值都为唐山
6).查询返回限制行数(关键字:
toppercent)
例1:
selecttop6namefroma
说明:
查询表a,显示列name的前6行,top为关键字
例2:
selecttop60percentnamefroma
说明:
查询表a,显示列name的60%,percent为关键字
7).查询排序(关键字:
orderby,asc,desc)
例:
selectname
froma
wherechengji>=60
orderbydesc
说明:
查询表中chengji大于等于60的所有行,并按降序显示name列;默认为asc升序
2.模糊查询
1).使用like进行模糊查询
注意:
like运算副只用语字符串,所以仅与char和varchar数据类型联合使用例:
select*fromawherenamelike赵%
说明:
查询显示表a中,name字段第一个字为赵的记录
2).使用between在某个范围内进行查询
例:
select*fromawherenianlingbetween18and20
说明:
查询显示表a中nianling在18到20之间的记录
3).使用in在列举值内进行查询
例:
selectnamefromawhereaddressin(北京,上海,唐山)
说明:
查询表a中address值为北京或者上海或者唐山的记录,显示name字段
3.分组查询
1).使用groupby进行分组查询
例:
selectstudentidas学员编号,aVg(score)as平均成绩(注释:
这里的score是列名)
fromscore(注释:
这里的score是表名)
groupbystudentid
说明:
在表score中查询,按strdentid字段分组,显示strdentid字段和score字段的平均值;select语句中只允许被分组的列和为每个分组返回的一个值的表达试,例如用一个列名作为参数的聚合函数
2).使用having子句进行分组筛选
例:
selectstudentidas学员编号,aVg(score)as平均成绩(注释:
这里的score是列名)
fromscore(注释:
这里的score是表名)
groupbystudentid
havingcount(score)>1
说明:
接上面例子,显示分组后count(score)>1的行,由于where只能在没有分组时使用,分组后只能使用having来限制条件,
4.多表联接查询
1).内联接
①在where子句中指定联接条件
例:
selecta.name,b.chengji
froma,b
wherea.name=b.name
说明:
查询表a和表b中name字段相等的记录,并显示表a中的name字段和表b中的chengji字段②在from子句中使用join…on
例:
selecta.name,b.chengji
fromainnerjoinb
on(a.name=b.name)
说明:
同上
2).外联接
①左外联接查询
例:
selects.name,c.courseid,c.score
fromstrdentsass
leftouterjoinscoreasc
ons.scode=c.strdentid
说明:
在strdents表和score表中查询满足on条件的行,条件为score表的strdentid与strdents表中的sconde相同
②右外联接查询
例:
selects.name,c.courseid,c.score
fromstrdentsass
rightouterjoinscoreasc
ons.scode=c.strdentid
说明:
在strdents表和score表中查询满足on条件的行,条件为strdents表中的sconde与score表的strdentid相同
五、建表删表
例:
createtableusers(
unamevarchar(50)primarykey,
ugandervarchar(50),
uagevarchar(50),
ucareervarchar(50),
unotevarchar(50),
ulogvarchar(50),
upwdvarchar(50)
)
六、删表
例:
dRoptableusers
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 修改 表格