建表注意事项:对于建表大家都不陌生,这里主要说明一下几点注意实现:1、大数据字段最好剥离出单独的表,以便影响性能2、使用varchar,代替char,这是因为varchar会动态分配长度,char指定为20,即时你存储字符“1”,它依然是20的长度 3、给表建立主键,看到好多表没主键,这在查询和索引定义上将有一定的影响4、避免表字段运行为null,如果不知道添加什么值,建议设置默认值,特别int类型,比如默认值为0,在索引查询上,效率立显。
5、建立索引,聚集索引则意味着数据的物理存储顺序,最好在唯一的,非空的字段上建立,其它索引也不是越多越好,索引在查询上优势显著,在频繁更新数据的字段上建立聚集索引,后果很严重,插入更新相当忙。6、组合索引和单索引的建立,要考虑查询实际和具体模式。
建表注意事项:
对于建表大家都不陌生,这里主要说明一下几点注意实现:
1、大数据字段最好剥离出单独的表,以便影响性能
2、使用varchar,代替char,这是因为varchar会动态分配长度,char指定为20,即时你存储字符“1”,它依然是20的长度
3、给表建立主键,看到好多表没主键,这在查询和索引定义上将有一定的影响
4、避免表字段运行为null,如果不知道添加什么值,建议设置默认值,特别int类型,比如默认值为0,在索引查询上,效率立显。
5、建立索引,聚集索引则意味着数据的物理存储顺序,最好在唯一的,非空的字段上建立,其它索引也不是越多越好,索引在查询上优势显著,在频繁更新数据的字段上建立聚集索引,后果很严重,插入更新相当忙。
6、组合索引和单索引的建立,要考虑查询实际和具体模式.
1.在创建数据库时应该注意哪些问题?数据库在创建的时候可以设置他的扩展大小,但是数据库的大小不是固定的 它的数据实时地不断的增大.注意不要到master数据库中创建用用户对象.2.怎样确定数据库的大小?创建数据库时可以创建其大小3.比较用不同方法创建数据库时,确定数据文件和日志文件的方法。
4.可以在master数据库中创建用户对象吗?为什么?不要在master数据库中创建任何用户对象,因为master数据库包含系统表,这些系统表存储sql server所用的系统信息5.可以用哪些方法修改数据库?1)打开企业管理器,展开服务器组,然后展开sql server服务器.2)在”数据库”文件夹中,右击要更改的数据库(如:bbsdb),然后单击”属性”命令,打开数据库属性对话框用transanct-sql也能修改数据库语句为:alter database。
如果你正在负责一个基于sql server的项目,或者你刚刚接触sql server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的dbms)。
在这里,我不打算介绍使用sql server的窍门,也不能提供一个包治百病的方案,我所做的是总结一些经验----关于如何形成一个好的设计。 这些经验来自我过去几年中经受的教训,一直来,我看到许多同样的设计错误被一次又一次的重复。
你了解你用的工具吗?不要轻视这一点,这是我在这篇文章中讲述的最关键的一条。也许你也看到有很多的sql server程序员没有掌握全部的t-sql命令和sql server提供的那些有用的工具。
“什么?我要浪费一个月的时间来学习那些我永远也不会用到的sql命令???”,你也许会这样说。对的,你不需要这样做。
但是你应该用一个周末浏览所有的t-sql命令。在这里,你的任务是了解,将来,当你设计一个查询时,你会记起来:“对了,这里有一个命令可以完全实现我需要的功能”,于是,到msdn查看这个命令的确切语法。
不要使用游标让我再重复一遍:不要使用游标。如果你想破坏整个系统的性能的话,它们倒是你最有效的首选办法。
大多数的初学者都使用游标,而没有意识到它们对性能造成的影响。它们占用内存,还用它们那些不可思议的方式锁定表,另外,它们简直就像蜗牛。
而最糟糕的是,它们可以使你的dba所能做的一切性能优化等于没做。 不知你是否知道每执行一次fetch就等于执行一次select命令?这意味着如果你的游标有10000条记录,它将执行10000次select!如果你使用一组select、update或者delete来完成相应的工作,那将有效率的多。
初学者一般认为使用游标是一种比较熟悉和舒适的编程方式,可很不幸,这会导致糟糕的性能。 显然,sql的总体目的是你要实现什么,而不是怎样实现。
我曾经用t-sql重写了一个基于游标的存储过程,那个表只有100,000条记录,原来的存储过程用了40分钟才执行完毕,而新的存储过程只用了10秒钟。在这里,我想你应该可以看到一个不称职的程序员究竟在干了什么!!!我们可以写一个小程序来取得和处理数据并且更新数据库,这样做有时会更有效。
记住:对于循环,t-sql无能为力。
新建表命令: create table yg1 ( 姓名 varchar (8), 性别 char (2), 年龄 int, 籍贯 varchar (5), 电话 varchar (11), 工资 money, 婚否 bit ) 引入: 数据类型: 1。
数值型:数字 2。整形:整数 a。
bigint 大整形 -2^63→2^63-1 八个字节 b。 int 普通整形 -2^31→2^31-1 四个字节 c。
smallint 小整形 -2^15→2^15-1 二个字节 d。 tinyint 短整形 0→255 一个字节 3。
字符串型: a。 char(n) 固定字符型 n代表字符串的长度,不足n位,系统自动补充空格,满足,则截除。
b。 varchar (n) 可变字符型 n代表字符串的长度,不足n位,系统以实际录入为准,多余自动截除。
4。时间日期型: a。
datetime 表示范围 时 分 秒 毫秒 b。 smalldatetime 时 分 秒 5。
货币型: a。 money b。
smallmoney 6。逻辑型: bit 位 0或1 (1位) 习惯用0代表"真"1代表"假" 接下来继续 1。
增加字段: alter table yg add 邮编 char (6) --注:数据类型必须包括 2。 删除字段: alter table yg drop column 年龄 3。
修改字段属性: alter table yg alter column 性别 char (10) 4。 字段改名: sp_rename 例如: 将年龄改为age sp_reneme 'yg。
年龄','age' 表改名: sp_rename yg,newyg --yg为现有表名,newyg为新表名 删除表: drop table 表名 例如: drop table yg 删除多个表: drop table yg,yg1,yg2。
首先说说怎么用sql语句创建数据库,创建数据库的语句有如下几种:1. create table(创建新表)2. create index(增加索引)3. drop index(删除索引)4. constraint(约束语句)5. alter table(修改表)6. drop table(删除表) create table语句:在数据库中生成新表,表中字段的类型能够为:integer(整型)、long(长整型)、single(单精度浮点数)、double(双精度浮点数)、datetime(日期型,也能够写成date)、bit(布尔型)、text(字符串型,最大255个字节)、memo(字符串型,最大可达1.2g字节)、counter(自动递增长整型,可确定记录的唯一性)、currency(货币型,精确到小数点左边15位,右边4位)、binary(字节型,最大255个)、longbinary(用于ole对象)、guid(全局唯一标识符)。
生成表newtable,该表有文本字段field1和整型字段field2,表名和字段名能够随便您取,不区分大小写,但是,有些保留字不能用作表名字段名,比如number create table newtable(field1 text(30), field2 integer); create index语句:index是为了加快查找记录的速度,或是为了增加字段约束关系而配置的。创建索引语句执行前表中能够有记录,但存在的记录必须满足该索引语句的约束关系,否则语句不能执行,另外要注意的是在同一个数据库中(而不但仅是在同一个表中),索引名不能相同,否则语句也会失败。
生成字段field1的索引字段newindex,两条语句作用相同 生成后field1字段能够有相同的值,能够有空值(null) create index newindex on newtable (field1); create index newindex on newtable (field1) with ignore null; 生成字段field1的索引字段newindex,注意,每个表里只能有一个主索引(primary)。生成后field1字段不能有相同的值,不能有空值(当然,假如是text类型,能够有一个空串,但是空串不是空值) create index newindex on newtable(field1) with primary; 字段field1不能有相同的值,但能够有空值(两个空值不算相同的值) create unique index newindex on newtable(field1); 字段field1能够有相同的值,但不能有空值 create index newindex on newtable(field2) with disallow null 能够在索引语句中加入asc(升序)或desc(降序)来控制记录排列顺序假如不使用顺序字,sql则默认使用asc顺序 create index newindex on newtable(field1 asc, field2 desc); drop index语句:删除表newtable中的索引newindex,语句执行前索引newindex必须存在 drop index newindex on newtable; constraint语句:constraint子句用于创建数据库完整性的索引,他和index语句作用相同,有些地方能够互相替代,他能够使用primary key(主关键字),unique(唯一)和foreign key(外部关键字),和index相比不能使用ignor null和disallow null,但多了foreign key(这也是他最强大的地方)。
另外, constraint语句必须和create table或alter table语句一起使用。生成表newtable,主关键字段是field1,主索引是newpk create table newtable(field1 long constraint newpk primary key, field2 memo, field3 datetime); 生成索引为newuk的表newtable,field1不能有相同值,能够有空值 create table newtable(field1 integer constraint newuk unique); 生成多列的主索引,两条记录的field1和field2不能全部相同,也不能为空值 create table newtable(field1 integer, field2 currency, constraint newpk primary key(field1, field2)); 生成多列的unique索引,两条记录的field1和field2不能全部相同注意,假如两条记录其中一个字段相同而另一个字段都是空值,那也算两个字段不同 create table newtable(field1 integer, field2 currency, constraint newuk unique(field1, field2)); 要在几个不同的表之间建立联系,就要使用foreign key references子句,他能够限定某个表的字段内容必须存在于另外一个表中。
第一个例子:首先,生成主关键字段为field1的表newtable1 create table newtable1(field1 integer constraint newpk primary key); 然后,再生成外部索引,两个表的field1必须类型相同,并且第一个表的field1是主关键字段或unique字段。生成外部索引后,表newtable2要增加记录,他的field1字段值必须已存在于表newtable1的field1字段中。
下面两条语句作用相同,因为field1是newtable1的主关键字段,能够省略不写 create table newtable2(field1 integer constraint newfk references newtable1); create table newtable2(field1 integer constraint newfk references newtable1(field1)); 第二个例子:首先,生成主关键字段为field1和field2的表newtable1 create table newtable1(field1 integer, field2 text(20), 。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
ag8亚洲国际集团 copyright © 2016 ag8亚洲国际集团. 页面生成时间:3.114秒