SQLServer2000笔记
(完整word版)SQLServer2000基础教程
安装
新建数据库
也能够使用导游来创立数据库:
表设计Class:
主键拘束
Unique 拘束新加一个索引:
Check 拘束
默认值、用户定义的数据种类
新建 Student 表:
外键
关系图
在关系图中设计表:增添 Age 列:
增添 Teacher 表:
增添表记列:
增添主外键关系:
视图设计
储存过程设计
在查问剖析器中履行储存过程:
备份数据库或许用导游进行备份:
复原数据库
经过拷贝MDF 和 LDF 文件的方式备份前需要分别数据库,不然提示:
数据库保护计划
生成数据库构造脚本
删除数据库后,可经过履行导出的SQL 脚原来重修数据库:
SaleManagement 实例操练
1、创立数据库
2、创立数据库表
Product 表:
创立其余表3、关系图:
4、输入数据Dept:
Employee:
Product:
SaleForm:SaleFormDetail :
5、创立查问视图
按部门查察销售业绩:
按产品查察销售额:
6、创立储存过程。
SQL2000数据库的查询(重整理)
数据库的查询数据库检索速度的提高是数据库技术发展的重要标志之一。
在数据库的发展过程中,数据检索曾经是一个非常困难的事情,直到使用了 SQL之后,数据库的检索才变得相对简单。
对于使用 SQL的数据库,检索数据都要使用 SELECT语句。
使用 SELECT语句,既可以完成简单的单表查询、联合查询,也可以完成复杂的联接查询、嵌套查询。
4.1 SELECT语句结构SELECT语句能够从数据库中检索出符合用户需求的数据,并将结果以表格的形式返回,是 SQL Server中使用昀频繁的语句之一。
它功能强大,所以也有较多的子句,包含主要子句的基本语法格式如下:SELECT列名 1 [ ,列名 2 ]... [ INTO新表名 ] FROM表名 1 [ ,表名 2 ]... [ WHERE 条件 ] [ GROUP BY列名列表 ] [ HAVING 条件 ] [ ORDER BY列名列表 [ASC | DESC] ] 其中,用[ ]表示可选项。
SELECT语句是比较复杂的语句,上述结构还不能完全说明其用法,下面将把它拆分为若干部分详细讲述。
SELECT语句至少包含两个子句: SELECT和 FROM,SELECT子句指定要查询的特定表中的列, FROM子句指定查询的表。
WHERE子句指定查询的条件, GROUP BY子句用于对查询结果进行分组, HAVING子句指定分组的条件, ORDER BY子句用于对查询结果进行排序。
【例 4.1】查询员工表中所有员工的姓名和联系电话,可以写为: SELECT姓名,电话 FROM employees 程序执行结果如下:姓名电话李建国010********李圆圆010********刘金武010********万兴国010********孟全010********黎美丽010********冯晓丹010********王峰010********陈吉轩010********(所影响的行数为 11行)4.2 基本子句查询4.2.1 SELECT子句SELECT子句用于指定要返回的列,其完整的语法如下: SELECT [ ALL│DISTINCT ] [ TOP n [PERCENT][WITH TIES]]列名 <列名>::={ * │{ 表名│视图名│表的别名 }.* │ {列名│表达式│IDENTITYCOL│ROWGUIDCOL } [[AS] 别名] │别名=表达式 } [ ,...n ]其中,用< >表示在实际编写语句时可以用相应的内容代替,用[,…n]表示重复前面的内容,用{ }表示是必选的,用 A│B表示 A和 B只能选择一个。
SQLSERVER2000数据库具体操作细则
SQLSERVER2000数据库具体操作细则SQLSERVER2000 数据库具体操作细则本细则主要为了平时在操作数据库时规范操作方法,避免出现误操作情况的发生。
本细则主要包括的操作有:添加单条记录、添加多条记录、删除表中数据、复制表结构、删除数据库表。
本细则的操作均分为(企业管理器方式和查询分析器方式)。
具体操作如下:一.添加单条记录1.1企业管理器方式(enterprise manager)1.1.1 启动企业管理器1.1.2 选择要进行操作的服务器,然后点选databases文件夹或者点选展开databases文件夹;然后选取要操作的数据库名称,点选开,选择tables节点,然后在控制台右侧可以选择要操作的数据库表名。
(如下图)1.1.3 右键点击所选的数据表,在弹出的菜单中具体操作:open table->return all rows。
(如下图)在点选return all rows 后会弹出一个窗体,显示出所有该表的所有记录。
(如下图)1.1.5 在上面所显示的图中点击右键,选择“new”,然后在上图中添加相应的数据。
(如下图)1.2 查询分析器方式(query analyzer)1.2.1 启动查询分析器1.2.2 选择要进行操作的数据库(如下图)1.2.3 在上图中的文字编辑区中添加SQL语句,具体语句如下:“INSERT INTO 目标表(字段1,字段2,字段3,……)value(值1,值2,值3,……)”1.2.4然后点击绿钮运行SQL语句。
二.添加多条记录添加多条记录主要是将表结构相同的两个表,将其中一个表的数据整体的添加到另一个表中。
2.1企业管理器方式(enterprise manager)2.1.1启动企业管理器2.1.2 在企业管理器中选择要进行操作的数据库表,然后右键单击该表,在弹出的菜单中选择“所有任务->import data”。
(如下图)2.1.3 点选import data 完成后,出现一个向导窗体,然后点击“下一个”按钮;然后(下图)注意:一定要将database选项,选成源数据表所在的数据库名称;然后点击“下一步”,出现窗体(如下图)选择第一项“copy table(s) and view(s) from the source database”,然后点击“下一步”,出现窗体(如下图)在上图中的source栏中选择源数据表,Destination栏中选择目标数据表。
SQL2000数据库常用语句
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
三、技巧
1、1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 是表示选择全部 “where 1=2”全部不选,
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
SQLSERVER重要知识点归纳
1,数据模型:由数据结构、数据操作和数据的完整性约束组成。
2,在E-R概念模型中,信息由实体型、实体属性和实体间联系3种概念单元来表示。
3,第一范式(1NF):设R是一个关系模式,如果R中的每个属性都是不可分解的,则称R 是第一范式;第二范式(2NF):如果关系模式R是第一范式,且每个非码属性都完全依赖于码属性,则称R是第二范式;第三范式(3NF):如果关系模式是R第二范式,且没有一个非码属性传递依赖于码,则称R是第三范式。
4,Transact-SQL语句的分类如下所示:○1变量声明Transact-SQL语言可以使用两类变量,局部变量和全局变量。
○2数据定义语言(Data Definition Language,DDL),用来建立数据库及数据库对象,绝大部分以Create开头,如Create Table等○3数据控制语言(Data Control Language,DCL),用来控制数据库组件的存取访问、权限等命令,如GRANT、REVOKE等○4数据操纵语言(Data Manipulation Language,DML),用来操纵数据库中数据的命令,如SELECT、UPDATE等○5流程控制语言(Flow Control Language,FCL),用于控制应用程序流程的语句,如IF、CASE 等。
5,数据类型:整数型:bigint(8个字节,-263~263-1),int(4个字节,-231~231-1),smallint(2个字节,-215~215-1),tingyint(1个字节,0~255);小数数据类型:decimal [(p[,s])] p精度:指定小数点左边和右边可以存储的十进制数字的最大个数。
1~38 s小数位数:0~p之间的值;numeric [(p[,s])]近似数值型:float[(n)] n:1~53 取值范围:-1.79308~1.79308real 取值范围:-3.4038~3.4038字符型(字符常量必须包含在单引号或双引号中):char[(n)]:长度为n个字节的固定长度且非Unicode的字符数据,存储大小为n个字节。
sqlserver2000错误信息解释(SQLServer2000错误信息解释)
sql server 2000 错误信息解释(SQL Server 2000错误信息解释)Description of error severity (message text)110 last upgrade version date: 10/11/90.2110 warning: serious error%1! Occurred in%2!. Please note the error and time, and then contact the system administrator.10215 syntax errors near''%1!!'.10315%1 with''%2 Too long. The maximum length is%4!.10415 if the statement contains the UNION operator, then the items in the ORDER BY clause must appear in the selection list.10515 string''%1!! 'before there is an unclosed quotation mark.10616 there are too many table names in the query. The maximum allowable number is%1!.The 10715 column prefix''%1 '' does not match the table name or alias used in the query.The position of%1 10815 ORDER in the BY clause exceeds the number of items in the select list.The number of columns in the 10915 INSERT statement is greater than the number specified in the VALUES clause. The number of VALUES clauses must be matched to the number of columns specified in the INSERT statement.The number of columns in the 11015 INSERT statement is less than the number specified in the VALUES clause. The number of VALUES clauses must be matched to the number of columns specified in the INSERT statement.11115''%1! 'must be the first statement in the batch query.11215%1! No variables are allowed in the statement.11315 short notes at the end of'*/'mark.11415 invalid access mode for statements that assign values to variables.11615 when you do not introduce a subquery with EXISTS, you can only specify an expression in the selection list.11715%1! Name''%2! 'contains the number of prefixes greater than the maximum value. The maximum value is%4!.11815 only the members of the sysadmin role can specify the%1!%2 option of the statement.11915, you must pass the number of parameters%1, and pass the following parameters in the form of'@name = value'. Oncethe'@name = value'form is used, all subsequent parameters must be passed in the form of'@name = value'.The selection list of the 12015 INSERT statement contains less entries than that in the insert list. The number of SELECT statements must match the number of columns in the INSERTstatement.The selection list of the 12115 INSERT statement contains more entries than that in the insert list. The number of SELECT statements must match the number of columns in the INSERT statement.12215%1! Options are allowed only for%2! Syntax.The 12315 batch / process exceeds the maximum length of%1 characters.12415 CREATE PROCEDURE does not contain any statements.The 12515 Case expression can only be nested into the%1! Layer.12815 the name''%1! 'is not allowed in this context. Only constants, expressions, or variables are allowed here. Column names are not allowed.12915 fill factor%1! Is an invalid percentage; fill factor must be between 1 and 100.13016 cannot aggregate functions with expressions that contain aggregations or sub queries.13115 gives the size of "%2!''%3!!". (%1!) exceeds the maximum allowed value of any data type (%5!).13215 tag''%1!! 'has been declared. Tag names must be unique within batch queries or stored procedures.The 13315 GOTO statement points to the label''%1 '', but the tag has not yet been declared.The 13415 variable name''%1!! 'has been declared. Variable names must be unique within a batch query or stored procedure.13515 cannot use the BREAK statement outside the scope of the WHILE statement.13615 cannot use the CONTINUE statement outside the scope of the WHILE statement.13715 must declare variable''%1! ''.13815 do not allow relative clauses to be used in subquery.13915 cannot assign default values to local variables.140 15 只能在 create trigger 语句内部使用 if update.141 15 向变量赋值的 select 语句不能与数据检索操作结合使用.142 15 约束 ''% 1! " 的定义中有错误语法.143 15 在排序依据列表中没有找到 compute by 子句中的某一项.计算依据列表中的所有表达式也必须同时出现在排序依据列表中.144 15 在用于 group by 子句分组依据列表的表达式中, 不能使用聚合或子查询.145 15 如果指定了 select distinct, 那么 by order of 子句中的项就必须出现在选择列表中.146 15 未能为子查询分配辅助表.超出了查询中表数目的最大值 (% 1! ).147 15 聚合不应出现在 where 子句中, 除非该聚合位于 having 子句或选择列表所包含的子查询中, 并且要对其进行聚合的列是外部引用.148 15 waitfor 所用的时间字符串 ''% 1! " 中时间语法有误.149 15 waitfor 所用的时间值 ''% 1! " 是无效值.请检查日期 / 时间语法.150 15 外联接的两项都必须包含列.151 to 15 ''% 1! " 是无效 money 值.153 15 在% 3! 语句中有% 1! 选项的无效使用.154 of 15 在% 2! 中不允许使用% 1! .155 15 ''% 1! " 不是可以识别的% 3! 选项.156 15 在关键字 ''% 1! " 附近有语法错误.157 15 聚合不应出现在 update 语句的集合列表中.159 15 对于 drop index, 必须以 tablename.indexname 的形式同时给出表名和索引名.160 15 规则不包含变量.161 15 规则包含多个变量.163 15 计算依据列表与排序依据列表不匹配.164 15 group by 表达式必须引用出现在选择列表中的列名.165 16 不能授予或废除特权% 1! .166 15 ''% 1! " 不允许将数据库名称指定为对象名前缀.167 16 不能在临时对象上创建触发器.168 of 15% 1! " % 2! " 超出了计算机表示范围 (% 4! 字节).169 15 在排序依据列表中多次指定了某一列.排序依据列表中的列必须是唯一的.170 15 第% 1! 行: 在 ''% 1! " 附近有语法错误.171 15 不能在浏览模式中使用 select into.172 15 不能在浏览模式中使用 holdlock.173 15 列 ''% 1! " 的定义中必须包括数据类型.174 15% 1! 函数要求有% 2! 个参数.177 15 仅当 select 语句中有 into 子句时, 才能使用 identity函数.178 15 在此上下文中不能使用带有返回值的 return 语句.179 15 向存储过程传递常量时不能使用 output 选项.180 15 此% 1! 语句中参数太多.参数最大数目为% 2! .181 15 不能在 declare 语句中使用 output 选项.182 15 必须为 readtext 或 writetext 实用工具提供表名和列名.183 15 列 ''% 2! " 的小数位数 (% 1! ) 必须介于% 4! 到% 5. 之间.185, 15 数据流在大容量形式下的 writetext 语句中无效.186 15 writetext 语句中缺少数据流.188 15 在 create database 语句中, 如果不同时指定至少一个非日志设备, 就不能指定日志设备.189 15% 1! 函数要求有% 2! 到% 3! 个参数.191 15 sql 语句的某些部分嵌套过深.Please rewrite the query or decompose it into several smaller queries.19216 decimal digits must be less than or equal to accuracy.19315 the object name or column name at the beginning of''%1! 'is too long. The maximum length is%3! A character.The 19415 SELECT INTO statement cannot contain the SELECT statement assigned to the variable.19515''%1!! 'is not an%3 that can be identified!.The 19615 SELECT INTO must be the first query in the SQL statement containing the UNION operator.19715 cannot use EXECUTE as a source when inserting variables into a table.The 19815 browse mode is invalid for statements containing the UNION operator.The 19915 INSERT statement cannot contain the SELECT statement assigned to the variable.The 20116 procedure''%1! 'requires parameter''%3'! ', but this parameter is not provided.20216 WAITFOR type''%1! 'invalid. The supported data types are CHAR/VARCHAR, NCHAR/NVARCHAR and DATETIME. WAITFOR DELAY also supports INT and SMALLINT data types.The 20316 name''%1!! 'is not a valid identifier.20420 a normalization error occurred in node%1.20516 all queries in the SQL statement containing the UNION operator must have the same number of expressions in the target list.20616 operand type conflict:%1! Incompatible with%2!20716 column''%1!! invalid.20816 object name''%1 '' invalid.20916 column names''%1! 'unclear.21016 syntax error when converting from binary/varbinary string to datetime.21216 the length of the expression result exceeds the maximum limit. The maximum value is%1, but the current length is%2!.21316 insert error: the column name or the number of supplied values does not match the table definition.The 21416 procedure requires the parameter''%1! ''''%2 '' type.21716 exceeds the maximum number of layers of stored procedures, functions, triggers, or views (maximum number of layers is%1!).22016 arithmetic overflow error occurred in data type%1 = value =%2!.22110 FIPS warning: implicit transformation from%1 to%2.The 22311 object ID%1! Is specified as the default value of column ID%3 in table ID%2!, but the object is missing or not the default value type.The 22411 object ID%1! Is specified as the rule of column ID%3 in table ID%2!, but the object is missing or not the default value type.22616%1 statement is not allowed in multi statement transactions.22914 rejected the%1 permissions for object''%2! \ "(database''%4! ', owner''%6!' ').23014 rejected the%1! Permissions of column''%2! \ "(database''%6! ', owner''%8!') for object''%4!!'.23111 there is no such default value. ID =%1! Database ID =%2!.23216 arithmetic overflow error of type%1! = value =%2!.The column''%1!! 'in table 23316'!''%3!! 'cannot be empty.23416, the result space is insufficient, can not convert money value to%1!.23516 cannot convert char value to money. The syntax of the char value is incorrect.23616 money overflow error caused by the conversion from char data type to money data type.23716, the result space is insufficient, can not convert money value to%1!.23816 the result space is insufficient, can't convert the%1 value (=%2!) to the money data type.24116 syntax errors from string to datetime.24216 conversion from char data type to datetime data type leads to datetime value cross boundary.24316 type%1! Is not a defined system type."24416%1! Value''%2!!" conversion overflowed the%4! Column.Please use a larger integer column.24516 syntax error when converting%1! Value''%2!! 'to a column with data type%4!."24816%1! Value''%2!!" conversion overflowed the int column. Exceeded the maximum integer value.25116 failed to allocate auxiliary tables for query optimization. Exceeded the maximum number of tables in the query (%1!).25616 data type%1! Invalid for function%2. The allowed types are: char/varchar, nchar/nvarchar, and binary/varbinary.25716 implicit conversion from data type%1 to%2 is not allowed. Use the CONVERT function to run this query.25916 a special update to the system directory is not enabled. The system administrator must reconfigure the SQL Server to allow this operation.26016 the implicit conversion from data type%1 to data type%2 is not allowed (table''%3 ', column''%5' '). Use the CONVERT function to run this query.26116''%1!! 'is not a recognized function.26216 deny%1! Permissions in database''%2!'.26316 must specify the table to choose from.26416 column name''%1 \ "\" appears many times in the list of result columns.The transaction count after 26616 EXECUTE indicates that the COMMIT or ROLLBACK TRANSACTION statement is missing. Original count =%1! Current count =%2!.26716 cannot find object''%1! ''.26816 cannot run SELECT INTO in this database. The database owner must run sp_dboption to enable this option.27016 cannot modify object''%1 ''.27116 cannot modify column''%1 '' because the column is a computed column.27216 cannot update the timestamp column.27316 cannot insert non null values in the timestamp column. Use INSERT statements with columns or timestamp columns with default values of NULL.27816 the text, ntext, and image data types cannot be used in the GROUP BY clause.27916 in this subquery or aggregation expression, text, ntext, and image data types are invalid.28016 for TEXTPTR functions, only text, ntext, and image columns are valid.28116 when%2 is converted to a string,%1 is an invalid style number.The 28210 process''%1 '' tries to return to the state value NULL, but this is not allowed. Will be returned to the state value 0.28316 within INSTEAD OF triggers, READTEXT cannot be used for inserted or deleted tables.28416 cannot bind rules to text, ntext, or image data types.28516 READTEXT, WRITETEXT, and UPDATETEXT statements cannot beused for views or functions.28616 cannot update logical tables INSERTED and DELETED.28716 triggers are not allowed to use%1.The 28816 PATINDEX function can only manipulate data types of char, nchar, varchar, nvarchar, text and ntext.Invalid property specified for 29116 CAST or CONVERT: for type''%1!! '29216, the result space is insufficient, can not convert smallmoney value to%1!.29316 cannot convert char value to smallmoney. The syntax of the char value is incorrect.29416 smallmoney overflow error caused by the conversion from char data type to smallmoney data type.29516 syntax errors from string to smalldatetime data type.29616 conversion from char data type to smalldatetime data type leads to smalldatetime value cross boundary.29816 smalldatetime overflow error caused by the conversion from datetime data type to smalldatetime data type.29916 call the function DATEADD with the wrong type%1.The 30116 query contains an outer join request that is not allowed.30316 table''%1!! 'is the internal member of the external join clause. This is not allowed if the table is also included in the normal join clause.30616 cannot compare or sort text, ntext, and image data types unless IS NULL or LIKE operators are used.The index ID%1 on the table''%2!! 'specified in the 30716 FROM clause does not exist.The index''%1!! 'on the table''%3!!' specified in the 30816 FROM clause does not exist.31116 cannot use text, ntext or image columns in the inserted table and the deleted table.31216 cannot refer to text, ntext, or image columns in the filter stored procedure.31316 the number of parameters provided for the process or function%1! Is not enough.40116 statement or expression%1! Not yet implemented.40316 for data types, operators are invalid. The operator is%1! The type is%2!.40916%1! Operation cannot use%2! Data type as parameter.41020 sorting according to the list does not exist in the first%1! Section COMPUTE clause%2!''BY''expression.41120 select the aggregate expression COMPUTE%2 without the existence of the%1 clause in the list.The 42016 text, ntext, and image data types cannot be used in the ORDER BY clause.42516 the data type%1 of the received variable is not equal to the data type%2 of column''%3'!.42616 the length of the receive variable%1! Less than the length of column''%3!! '%2!.42720 failed to load sysprocedures entries in database ID%2! Constraint ID%1.42820 failed to find the row corresponding to the constraint ID%1 in the database ID%2! In sysconstraints.42920 compile failed to find new constraint ID%1 in the database ID%2! Sysconstraints!.43020 cannot parse the table name of object ID%1 in database ID%2 when compiling foreign key.43119 failed to bind foreign key constraints. There are too many tables involved in the query.43320 failed to find the CHECK constraint of''%1 '', although the table is marked as having CHECK constraints.43620 failed to open the referenced table ID%1 in database ID%2!.43720 failed to parse referenced column names in table ID%1.43820 failed to parse reference column names in table ID%1.43920 failed to find the FOREIGN KEY constraint of table''%1 KEY 'in table ID%3!', although the table is marked as having FOREIGN constraints.44116 cannot use the''%1! 'function on the remote data source.44316 incorrect use of''%1!! 'in the function.44416 the SELECT statement contained in the function cannot return data to the client.44516 cannot use the COLLATE clause for an expression containing a COLLATE clause.44616 can't solve the collation conflict of%1! Operation.44716 expression type%1! Invalid for the COLLATE clause.44816 rule''%1 '' invalid.The 44916 collation conflicts because the sorting clause usesdifferent sorting rules''%1!! 'and'''%3! ''.45016 does not support code page conversion for text data types. From:%d to:%1!.45116 cannot resolve the collation conflict of column%1... (in%2! Statement).The 45216 COLLATE clause cannot be used to define user data types.45316 supports sorting rule''%1 '' for Unicode data types, and cannot set the collation at the database or server level.The last statement in the 45516 function must be a return statement.45616 cannot execute value from%1!The implicit transformation to%2, because the result ordering rule is not resolved because of the conflict of collation.45716 cannot perform the implicit conversion from%1 to%2 because the collation of the value cannot be resolved because of the conflict of collation.The 50216 SQL debug interface (SDI) requires that SQL Server cannot log in with system accounts when it is started as a service. Please reset the control panel to login with user account.50316 unable to connect%2! Send symbolic information to the debugger on%1. Debugging disabled.50416 unable to connect to the debugger on%1! (error = 0x%2!). Make sure that the client components have been installed and registered on%3! (such as SQLDBREG.EXE). Debugging of connection%5! Has been disabled.50516 the current user account is invoked with SETUSER. Database is not allowed.An invalid escape symbol''%1!! 'is specified in the 50616 LIKE predicate.Invalid parameter for 50716 SET ROWCOUNT. Must be nonempty and nonnegative integers.50816 unable to connect to the debugger on%1! (error = 0x%2!). Make sure that the client components have been installed and registered on%3! (such as SQLLE.DLL). Debugging of connection%5! Has been disabled.50911 not found username''%1! ''.51016 cannot create a worksheet row that is larger than the allowed maximum. Please resubmit queries with ROBUST PLAN prompt.51116 cannot create a row of size%1. This value is greater than the allowed maximum%2!.The 51216 subquery returns more than one value. When the query, followed by = =,! < < = > > =,,,, or as a sub query expression, this is not allowed.The insertion or update of the 51316 column conflicts with the rules enforced by the previous CREATE RULE statement. The statement has been terminated. The conflict occurred in the database''%1!! ', table''%3!', column''%5! ''.51416 cannot connect with debugger on%1! (error = 0x%2!). Debugging of connection%3! Has been disabled.51516 cannot insert NULL value into column''%1!! ', table''%3!'; this column does not allow null values. %ls failure.51616 attempts to initialize the OLE library failed. Please check the correct version of OLE DLL on this computer.Overflow occurs when adding value to 51716 column''%1 '.51816 cannot convert data type%1 to%2!.52016 SQL Server no longer supports SQL debug interface (SDI)%1! Version.52820 detects system errors when attempting to use the upsleep system function.52916 explicit conversions from data type%1 to%2 are not allowed.53216 timestamp (changed to%1!) indicates that other users have updated the line.53516 the difference between the two datetime columns results in a runtime overflow.53616 passed the invalid length parameter to the substring function.53816 couldn't find''%1!'. The language may have been removed. Please contact the system administrator.54216 encountered an invalid datetime value. It's worth more than 9999 years.54416 when IDENTITY_INSERT is set to OFF, explicit values cannot be inserted into the identity column in table''%1 ''.54516 when IDENTITY_INSERT is set to ON, you must specify the explicit value of the table''%1.54716%1! Statement and%2!%3! Constraint''%4!! 'conflict. The conflict occurred in the database''%6!! ',table''%8!''%10!%11!%13!.54816 the replication management scope is full and must be updated by replication agents. %1! Conflict occurs in database''%2!! ', table''%4!''%6!%7!%9!. You can callSp_adjustpublisheridentityrange to get a new identity range.55016 attempts to insert or update failed,The reason is that a view spanned by the target view or the target view specifies the WITH CHECK OPTION, and that one or more result lines of the operation do not conform to the constraints of the CHECK OPTION constraint.The 55116 checksum has been changed to%1!. This indicates that other users have updated the line.The 55215 CryptoAPI function''%1! 'failed. Wrong 0x%2!:%3!55516 user defined functions are not yet enabled.55616 because the stored procedure changes the architecture of the target table, INSERT EXEC fails.55716 only functions and extended stored procedures can execute from within the function.55816 within FUNCTION, remote function calls are not allowed.56116 access file''%1!! 'failed56216 access file''%1!! 'failed. You can only access files by sharing.The transaction of the 56314 INSERT EXEC statement has been rolled back. The INSERT EXEC operation will terminate.56416 attempts to create records with fixed length''%1 ''. The maximum allowable length is''%2!! ".56518 server encountered stack overflow during compilation.56621 write audit tracking error. SQL Server is about to close.56716 file%1! There is no or not identifiable trace file. Or error opening the file.56816 server encountered error''%1!!'.60112 cannot continue scanning in NOLOCK mode due to data movement.60221 failed to find the row corresponding to the index ID%3 in the database ID%1! Object ID%2! In sysindexes. Please run DBCC CHECKTABLE on sysindexes.60421 failed to find the row corresponding to the object ID%1 in database''%2 '' in sysobjects. Please run DBCC CHECKTABLE on sysobjects.60521 a logical page%1 trying to extract from database''%2 '! \ "belongs to object''%4!', not object''%6!! ''.60721 in the session descriptor of object''%1 \ "\", the space allocated for search parameters is insufficient. Space with only%3! Search parameters.61521 failed to find the database table of ID is%1! Name''%2!!'. 61720 trying to hash the descriptor of the object ID%1! In thedatabase ID%2!, the descriptor is not found in the hash table.61821, the VARNO parameter passed to the OpenTable system function is%1!. The maximum effective value is%2!.62216 does not assign files for file group''%1 ''. Only when you add a file, can you fill the table, index, and text, ntext, and image columns on this file group.62321 failed to retrieve rows from the page by RID, because the logical page%1 is not a data page. %2!. %4!.62421 failed to retrieve rows from the page by RID, because the requested RID is higher than the last RID value in the page. %1!. %2!, DBID%3!.62521 cannot retrieve the row by page RID from page%1, because slotid (%2!) is invalid.62616 cannot use ROLLBACK with a save point inside a distributed transaction.62716 cannot use SAVE TRANSACTION within a distributed transaction.62813 cannot send SAVE TRANSACTION when there is no active transaction.63520 process%1! Trying to delete the DES resource lock%2, but the lock is not controlled by the process.63720 index shrink program returns invalid state value 0.63921 failed to extract the logical page%1 of the database ID%2!. The page is not currently allocated."64421 failed to find the index entries of index RID''%1!" in the index page%3! (index ID%4, database''%5! '').64921 failed to find the clustered index entry (object ID%2, status 0x%3!) of page%1. The index page used to search for this entry is%4 in database''%5!'!。
【SQLServer笔记】SQLServer数值类型的NULL性
【SQLServer笔记】SQLServer数值类型的NULL性与C#、java等编程语⾔不同,在SQLServer中,int等数值类型的初始值为NULL,并且可以直接使⽤赋值运算符赋值为NULL,同时值为NULL的变量⽆法在消息栏中显⽰其值,只能在结果栏中显⽰NULL。
同时由创建数据库时的选项,当字符数据以“+”连接值为NULL的变量时,会导致连接后的结果为NULL。
1DECLARE@ID INT;2SET@ID=NULL;3--以“+”链接NULL值与⾮NULL值后输出4PRINT'第⼀次输出@ID开始'5PRINT'当前@ID的值为:'+CONVERT(NVARCHAR(20),@ID)6PRINT'第⼀次输出@ID完毕'7--分开输出NULL值与⾮NULL值8PRINT'第⼆次输出@ID开始'9PRINT'当前@ID的值为:'10PRINT CONVERT(NVARCHAR(20),@ID)11PRINT'第⼆次输出@ID完毕'12--通过IF判断确定@ID是否为NULL13IF@ID IS NULL14BEGIN15SELECT@ID AS ID;16PRINT'当前@ID的值为:'+'NULL'17END18ELSE19BEGIN20PRINT'当前@ID的值为:'+CONVERT(NVARCHAR(20),@ID)21END22PRINT'为@ID赋值为0'23--为@ID赋为⾮NULL值并输出24SET@ID=025PRINT'当前@ID的值为:'+CONVERT(NVARCHAR(20),@ID)26GO⽰例代码第⼀次输出@ID开始第⼀次输出@ID完毕第⼆次输出@ID开始当前@ID的值为:第⼆次输出@ID完毕(1⾏受影响)当前@ID的值为:NULL为@ID赋值为0当前@ID的值为:0输出结果记忆要点:1.与C#等语⾔不同,SQL中链接字符串时必须将⾮字符变量进⾏类型转换,否则会报错;2.字符型与NULL连接的结果可能会为NULL;3.SQL数值型变量初始值为NULL;4.SQL数值型变量可以直接⽤赋值运算符赋为NULL值;5.另:当以SELECT赋值且未查询到任何记录时,变量值为NULL。
《SQL_Server_2000_实验指导》课后作业
目录创建数据库 JXSK: .........................................................................................................................- 1 创建 JXSK 中的表: ........................................................................................................................- 1 插入 JXSK 库中各表值: ................................................................................................................- 1 创建数据库 JIAOXUEDB:................................................................................................................- 3 创建 JIAOXUEDB 中的表: ...............................................................................................................- 3 插入 JIAOXUEDB 库中各表值: .......................................................................................................- 3 实验 4:习题 ..................................................................................................................................- 5 实验 5:习题 ..................................................................................................................................- 7 实验 6:习题 ..................................................................................................................................- 7 实验 7:习题 ..................................................................................................................................- 8 实验 8:习题 ................................................................................................................................ - 12 实验 9:习题 ................................................................................................................................ - 17 实验 10:习题 .............................................................................................................................. - 21 实验 11:习题 .............................................................................................................................. - 24 实验 12:习题 .............................................................................................................................. - 26 实验 13:习题 .............................................................................................................................. - 39 -创建数据库 jxsk: CREATE DATABASE jxsk ON (NAME=jxsk_dat,FILENAME='d:\jxsk_dat.mdf') LOG ON (NAME=jxsk_log,FILENAME='d:\jxsk_log.ldf') GO创建 jxsk 中的表: USE jxsk CREATE TABLE S( SNO CHAR(2) NOT NULL, SN CHAR(8) NOT NULL, SEX CHAR(2) NULL, AGE TINYINT NULL, DEPT CHAR(10) NULL) CREATE TABLE T( TNO CHAR(2) NOT NULL, TN CHAR(8) NOT NULL, SEX CHAR(2) NULL, AGE TINYINT NULL, PROF CHAR(10) NULL, SAL SMALLINT NULL, COMM SMALLINT NULL, DEPT CHAR(10) NULL) CREATE TABLE C( CNO CHAR(2) NOT NULL, CN CHAR(10) NOT NULL, CT TINYINT NULL, ID_TC TINYINT NULL) CREATE TABLE SC( SNO CHAR(2) NOT NULL, CNO CHAR(2) NOT NULL, SCORE TINYINT NULL) CREATE TABLE TC( TNO CHAR(2) NOT NULL, CNO CHAR(2) NOT NULL)插入 jxsk 库中各表值: USE jxskINSERT INTO S VALUES('S2','钱尔','男',18,'信息') INSERT INTO S VALUES('S3','孙姗','女',20,'信息')-1-INSERT INTO S VALUES('S4','李思','男',21,'自动化') INSERT INTO S VALUES('S5','周武','男',19,'计算机') INSERT INTO S VALUES('S6','吴丽','女',20,'自动化') INSERT INTO S VALUES('S7','李奇','男',18,'外语') INSERT INTO S VALUES('S8','古明','男',NULL,'计算机') INSERT INTO S VALUES('S9','赵亦','女',17,'计算机') INSERT INTO T VALUES('T5','张兰','女',39,'副教授',1300,2000,'信息') INSERT INTO T VALUES('T4','张雪','女',51,'教授',1600,3000,'自动化') INSERT INTO T VALUES('T3','刘伟','男',30,'讲师',900,1200,'计算机') INSERT INTO T VALUES('T2','王平','女',28,'讲师',800,1200,'信息') INSERT INTO T VALUES('T1','李力','男',47,'教授',1500,3000,'计算机') INSERT INTO C VALUES('C1','程序设计',60,1) INSERT INTO C VALUES('C2','微机原理',80,2) INSERT INTO C VALUES('C3','数字逻辑',60,3) INSERT INTO C VALUES('C4','数据结构',80,4) INSERT INTO C VALUES('C5','数据库',60,5) INSERT INTO C VALUES('C6','编译原理',60,6) INSERT INTO C VALUES('C7','操作系统',60,7) INSERT INTO SC VALUES('S2','C5',57) INSERT INTO SC VALUES('S2','C6',80) INSERT INTO SC VALUES('S2','C7',NULL) INSERT INTO SC VALUES('S3','C1',75) INSERT INTO SC VALUES('S3','C2',70) INSERT INTO SC VALUES('S3','C4',85) INSERT INTO SC VALUES('S4','C1',93) INSERT INTO SC VALUES('S4','C2',85) INSERT INTO SC VALUES('S4','C3',83) INSERT INTO SC VALUES('S5','C2',89) INSERT INTO SC VALUES('S9','C1',90) INSERT INTO SC VALUES('S9','C2',85) INSERT INTO TC VALUES('T2','C5') INSERT INTO TC VALUES('T3','C1') INSERT INTO TC VALUES('T3','C5') INSERT INTO TC VALUES('T4','C2') INSERT INTO TC VALUES('T4','C3') INSERT INTO TC VALUES('T5','C5') INSERT INTO TC VALUES('T5','C7') INSERT INTO TC VALUES('T1','C1') INSERT INTO TC VALUES('T1','C4')-2-创建数据库 jiaoxuedb: CREATE DATABASE jiaoxuedb ON (NAME=jiaoxuedb_dat,FILENAME='d:\jiaoxuedb_dat.mdf') LOG ON (NAME=jiaoxuedb_log,FILENAME='d:\jiaoxuedb_log.ldf') GO创建 jiaoxuedb 中的表: USE jiaoxuedb CREATE TABLE Student( Sno CHAR(10) NOT NULL, Sname CHAR(10) NOT NULL, Sex CHAR(2) NULL, Age TINYINT NULL, Dept CHAR(10) NULL) CREATE TABLE Teacher( Tno CHAR(10) NOT NULL, Tname CHAR(10) NOT NULL, Sex CHAR(2) NULL, Age TINYINT NULL, Prof CHAR(10) NULL, Sal SMALLINT NULL, Comm SMALLINT NULL, Dept CHAR(10) NULL) CREATE TABLE Course( Cno CHAR(10) NOT NULL, Cname CHAR(10) NOT NULL, Chour TINYINT NULL, Ccredit TINYINT NULL) CREATE TABLE SC( Sno CHAR(10) NOT NULL, Cno CHAR(10) NOT NULL, SCORE TINYINT NULL) CREATE TABLE TC( Tno CHAR(10) NOT NULL, Cno CHAR(10) NOT NULL)插入 jiaoxuedb 库中各表值: USE jiaoxuedb /*Insert values to Student Table*/ INSERT INTO Student VALUES('001101','宋大方','男',19,'计算机')-3-INSERT INTO Student VALUES('002102','李王','男',20,'信息') INSERT INTO Student VALUES('991101','张彬','男',18,'计算机') INSERT INTO Student VALUES('991102','王蕾','女',19,'计算机') INSERT INTO Student VALUES('991103','张建国','男',18,'计算机') INSERT INTO Student VALUES('991104','李平方','男',18,'计算机') INSERT INTO Student VALUES('991201','陈东辉','男',19,'计算机') INSERT INTO Student VALUES('991202','葛鹏','男',21,'计算机') INSERT INTO Student VALUES('991203','潘桃芝','女',19,'计算机') INSERT INTO Student VALUES('991204','姚一峰','男',18,'计算机') INSERT INTO Student VALUES('001102','许辉','女',22,'计算机') INSERT INTO Student VALUES('001201','王一山','男',20,'计算机') INSERT INTO Student VALUES('001202','牛莉','女',19,'计算机') INSERT INTO Student VALUES('002101','李丽丽','女',19,'信息') /*Insert values to Teacher Table*/ INSERT INTO Teacher VALUES('000006','许红霞','女',39,'讲师',1100,1200,'计算机') INSERT INTO Teacher VALUES('000007','许永军','男',57,'教授',2000,3000,'计算机') INSERT INTO Teacher VALUES('000008','李贵青','女',65,'教授',2000,3000,'计算机') INSERT INTO Teacher VALUES('000009','王一凡','女',43,'讲师',1200,1200,'计算机') INSERT INTO Teacher VALUES('000010','田峰','男',33,'助教',500,800,'信息') INSERT INTO Teacher VALUES('000001','李英','女',39,'副教授',1500,2000,'信息') INSERT INTO Teacher VALUES('000002','张雪','女',51,'教授',1900,3000,'信息') INSERT INTO Teacher VALUES('000003','张朋','男',30,'讲师',1000,1200,'计算机') INSERT INTO Teacher VALUES('000004','王平','女',28,'讲师',850,1200,'信息') INSERT INTO Teacher VALUES('000005','李力','男',47,'教授',1800,3000,'计算机') /*Insert values to Course Table*/ INSERT INTO Course VALUEs('01001','计算机基础',60,3) INSERT INTO Course VALUEs('01002','程序设计',80,5) INSERT INTO Course VALUEs('02003','数据结构',60,6) INSERT INTO Course VALUEs('02001','数据库',80,6) INSERT INTO Course VALUEs('02002','计算机网络',60,6) INSERT INTO Course VALUEs('01003','微机原理',60,8) INSERT INTO Course VALUEs('02004','操作系统',60,6) INSERT INTO Course VALUEs('03001','软件工程',60,3) INSERT INTO Course VALUEs('03002','大型数据库',48,2) INSERT INTO Course VALUEs('03003','图像处理',48,2) /*Insert values to SC Table*/ INSERT INTO SC VALUES('991101','01001',88) INSERT INTO SC VALUES('991102','01001',93) INSERT INTO SC VALUES('991103','01001',90) INSERT INTO SC VALUES('991101','01002',90) INSERT INTO SC VALUES('991102','01002',98)-4-INSERT INTO SC VALUES('991103','01002',74) INSERT INTO SC VALUES('991104','01002',85) INSERT INTO SC VALUES('001201','01002',64) INSERT INTO SC VALUES('991104','02001',33) INSERT INTO SC VALUES('991104','01001',35) INSERT INTO SC VALUES('991201','01001',76) /*Insert values to TC Table*/ INSERT INTO TC VALUES('000001','02001') INSERT INTO TC VALUES('000008','02002') INSERT INTO TC VALUES('000003','02001') INSERT INTO TC VALUES('000011','02003') INSERT INTO TC VALUES('000001','01001') INSERT INTO TC VALUES('000002','01002') INSERT INTO TC VALUES('000002','01003') INSERT INTO TC VALUES('000004','02002') INSERT INTO TC VALUES('000005','01001') INSERT INTO TC VALUES('000006','01002') INSERT INTO TC VALUES('000003','01003')实验 4:习题 基于 jiaoxuedb 实验 1、 对个表创建实体完整性; USE jiaoxuedb ALTER TABLE Student ADD CONSTRAINT PK_SNO PRIMARY KEY(Sno) ALTER TABLE Teacher ADD CONSTRAINT PK_TNO PRIMARY KEY(Tno) ALTER TABLE Course ADD CONSTRAINT PK_CNO PRIMARY KEY(Cno) ALTER TABLE Student ADD CONSTRAINT UNIQUE_S UNIQUE(Sno) ALTER TABLE Teacher ADD CONSTRAINT UNIQUE_T UNIQUE(Tno) ALTER TABLE Course ADD CONSTRAINT UNIQUE_C UNIQUE(Cno)-5-2、 创建表之间的参照完整性。
第一章SQL Server 2000基础知识
一个数据库至少有一个主要数据文件和一个事务日 志文件。
1.3.1 SQL Server2000的系统数据库和示例数据库
安装SQL Server2000之后,系统会在Microsoft SQLServer\MSSQL\Data路径下自动创建4个系统数据库 (master、model、msdb、tempdb)和2个示例数据库 (Northwind、pubs)。 • Master数据库:它是SQLServer系统最重要的数据库,它记 录了SQLServer系统所有的系统信息。 • Model数据库:它是所有用户数据库和tempdb数据库的模板 数据库。 • Msdb数据库:它是代理服务数据库,为其警报、任务调度和 记录操作员的操作提供存储空间。 • Tempdb数据库:它是一个临时数据库,它为所有的临时表、 临时存储过程及其他临时操作提供存储空间。 • Northwind和pubs数据库:它们是两个实例数据库,可以作 为学习SQLServer的学习工具。
本章目标
了解数据库基本知识 掌握SQL Server2000的安装 熟悉SQL Server2000的主要管理工具 掌握数据库的基本操作
1.1 数据库基本知识
信息、数据、数据库、数据库管理系统、数据库系 统 关系型数据库的概念
1.1.1信息、数据、数据库、数据库管理系统、数据库系统
① 信息:通俗的讲,信息就是人们最关心事情的消息,信息是可感知的、 信息:
1.2.2 SQL Server2000 的主要管理工具
查询分析器(SQL Server Query Analyzer):是一个图形化 的执行T-SQL查询语句的强大工具。在查询分析器里可以交互式 地输入和执行各种T-SQL语句,并且在一个窗口中可以同时查看 T-SQL语句和其结果集;可以在查询分析器中同时执行多个TSQL语句,也可以执行脚本文件中的部分语句。
SQLSERVER群集故障转移笔记
SQLSERVER群集故障转移笔记SQLSERVER群集故障转移笔记出⾃《SQLSERVER2012实施与管理实战指南》SQLSERVER故障转移 P41事实上,从sqlserver2000到sqlserver2008 R2,sqsrvres.dll中定义的looksalive和isalive⽅法都是类似的。
具体来讲:looksalive:通过服务器控制管理器(service control manager,SCM)来检查SQLSERVER服务在活跃节点是否处于“启动状态”。
根据SQLSERVER资源的Advanced Polices选项卡中的设置,这个检查默认是每5秒做⼀次isalive:根据SQLSERVER资源的Advanced Polices选项卡中的设置,这个检查默认是60秒做⼀次也就是说每12次Looksalive检查就会伴随⼀个Isalive检查。
SQLSERVER需要Isalive检查是因为即使SQLSERVER服务是正在运⾏状态也不能说明SQLSERVER就可以良好地响应应⽤程序的请求。
有时候可能整个SQLSERVER已经挂起了,但是服务的状态还是“启动”,所以需要Isalive Check来进⼀步检查SQLSERVER的状态。
此外,⼀旦lookalive检查的结果失败,Windows群集服务就会⽴刻触发Isalive检查在SQL2012之前,Isalive所做的事情很简单,Windows群集服务会使⽤TCP/IP或者命名管道来连接SQLSERVER群集实例。
连接上之后,运⾏⼀句命令:“select @@servername”。
如果成功返回结果那么Isalive检查就成功了。
从第⼀次成功执⾏select @@servername开始,Isalive检查就会根据设定的时间间隔,使⽤这个连接不断地重复检查⼯作如果连接不上SQLSERVER群集实例或者语句运⾏失败,那么Isalive检查失败。
SQL-Server2000-错误-1--999-说明
SQL-Server2000-错误-1--999-说明SQL Server200 错误1-999 说明错误 1 - 999错误严重度描述(消息文本)1 10 上次升级的版本日期: 10/11/90.21 10 警告:严重错误%1! 发生于%2!。
请记下错误和时间,然后与系统管理员联系。
102 15 在''%1!'' 附近有语法错误。
10315 以''%2!'' 开头的%1! 太长。
最大长度为%4!。
104 15 如果语句中包含UNION 运算符,那么ORDER BY 子句中的项就必须出现在选择列表中。
105 15 字符串''%1!'' 之前有未闭合的引号。
106 16 查询中的表名太多。
允许的最大数目为%1!。
10715 列前缀''%1!'' 与查询中所用的表名或别名不匹配。
108 15 ORDER BY 子句中的位置号%1! 超过了选择列表中项数目。
10915 INSERT 语句中列的数目大于VALUES 子句中指定的值的数目。
VALUES 子句中值的数目必须与INSERT 语句中指定的列的数目匹配。
110 15 INSERT 语句中列的数目小于VALUES 子句中指定的值的数目。
VALUES 子句中值的数目必须与INSERT 语句中指定的列的数目匹配。
111 15 ''%1!'' 必须是批查询中的第一条语句。
112 15 %1! 语句中不允许有变量。
113 15 缺少注释的结尾标记'*/'。
114 15 对于将值赋给变量的语句,浏览模式无效。
116 15 当没有用EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
117 15 %1! 名称''%2!'' 包含的前缀数目超过了最大值。
第四章 管理SQL Server2000数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
六、数据库系统表
1、Sysdatabases表: 它对SQL Server系统上的每个系统数据库和用户自 定义的数据库含有一行记录,只出现在master数据库中。 2、Sysobjects表: SQL Server 的主系统表,出现在每个数据库中。每 个数据库对象在这里都对应一行记录。 3、Syscolumns表: 出现在master数据库和每个用户自定义的数据库中, 它对基表或者视图的每个列和存储过程中的每个参数含 有一行记录。
Ssex Ð Ä ® Å ® Å
Sage Sdept 20 SC 19 IS 18 MA
关系数据库
一、SQL Server2000服务器的结构
一、SQL Server2000服务器的结构
1、数据库
数据库是SQL Server2000用以存放数据 和数据库对象的容器。
其中,数据表是一种最重要的数据库对 象,它是数据存储的地方。 数据库不仅包含表,还包含其他的数据 库对象,例如,视图,存储过程和索引等。
第四章
管理SQL Server2000数据库
一、SQL Server2000服务器的结构
二、SQL Server2000数据库的结构
三、管理数据库文件 四、SQL Server2000的系统数据库与示例数据库 五、创建、修改、删除数据库
第四章
用户
管理SQL Server2000数件
•设臵数据文件
从上面讲的我们可以看出数据文件对数
据库系统的运行和性能优化都是非常重要的。
正确设臵数据文件是创建数据库过程中 最为关键的一个步骤,一定要仔细处理。
sqlserver2000数据库系统介绍
12
创建数据库具体步骤如下: 创建数据库具体步骤如下: (1) 展开服务器组,然后展开服务器。右击"数据库",然 展开服务器组,然后展开服务器。右击"数据库" 后单击"新建数据库"命令。如图所示: 后单击"新建数据库"命令。如图所示:
建立数据库
13
(2) 出现如图所示的“数据库属性”对话框。该对话框共有三个选项卡: 出现如图所示的“数据库属性”对话框。该对话框共有三个选项卡: 常规” 数据文件” 事务日志” 常规” “常规”、“数据文件”和“事务日志”。在“常规” 选项卡的名 称文本框中键入新数据库的名称“DZSW” 此时,选择“确定” 称文本框中键入新数据库的名称“DZSW”。此时,选择“确定”按 Server将创建一个 DZSW”数据库 将创建一个“ 数据库。 钮,SQL Server将创建一个“DZSW”数据库。此数据库中包括用 DZSW”数据库名作为前缀创建主数据库和事务日志文件 数据库名作为前缀创建主数据库和事务日志文件, “DZSW”数据库名作为前缀创建主数据库和事务日志文件,即: DZSW.mdf 和 DZSW _Log.ldf。 _Log.ldf。
创建数据库界面
17
(2)在如图中名称处键入新数据库的名称“DZSW” 在如图中名称处键入新数据库的名称“ ” 等,点击下一步,按照向导配置数据库文件和事物日 点击下一步, 志文件属性。 志文件属性。
创建数据库向导
18
修改数据库
数据库创建后,当一些新的情况发生时, 数据库创建后,当一些新的情况发生时,经常 会对数据库进行修改。例如:针对DZSW数据库中, 数据库中, 会对数据库进行修改。例如:针对 数据库中 订单大增,数据库原有容量不能满足新的需求。 订单大增,数据库原有容量不能满足新的需求。这 只有修改数据库来满足新的需求。 时,只有修改数据库来满足新的需求。 使用企业管理器修改数据库 数据库建好后经常要更改数据库的配置设置。 数据库建好后经常要更改数据库的配置设置。 这一功能在企业管理器中是通过修改数据库属性来 完成的。 完成的。
韩顺平SQL_Server学习笔记
SQL Server学习资料⏹表的管理---表名和列的命名⏹表的管理---支持的数据类型⏹表的管理----修改数据⏹表的管理---删除数据删除全部数据Delete from 表名;删除指定数据Delete from 表名where 字段名=‘值’and 字段名=‘值’建表:表的基本查询----简单的查询语句使用where子句:或者写成:如何使用like操作符(模糊查询):在where条件中使用in:使用is null的操作符:使用逻辑操作符号:使用order by子句:Select ename,(sal+isnull(comm.,0))*13 as 年薪from emp order by 年薪⏹表的复杂查询数据分组-max,min,avg,sum,count:Group by和having子句:对数据分组的总结:1)分组函数只能出现在选择列表,having,order by,子句中;2)如果在select语句中同时包含group by,having,order by,那么他们的顺序是group by,having,order by;3)在选择列中如果有列,表达式和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则就会报错;如:select depot,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;这里deptno就一定要出现在group by中;⏹表的复杂查询----多表查询多表查询是指基于两个或两个以上表或是视图的查询或者:⏹表的复杂查询----子查询1)(子查询)是指嵌入在其它sql语句中的select语句,也叫嵌套查询。
2)(单行子查询)是指只返回一行数据的子查询语句3)(多行子查询)指返回多行数据的子查询⏹在from子句中使用子查询请思考:如何显示高于部门平均工资的员工的姓名,薪水,她部门的平均工资和部门编号分析:1,首先要知道各个部门的平均工资Select avg(sal),dept from emp group by deptno2,把上面的查询结果,当做一个临时表对待这里需要说明的:当在from子句中使用子查询时,该子查询会被作为一个临时表对待,当在from子句中使用子查询时,必须给子查询指定别名。
SQL Server 2000课后习题答案整理
一、选择题1. SQL Server2000是一个(B)关系型数据库管理系统。
A、B/SB、C/SC、D/SD、E/S2.下面关于实例名称的说法错误的是(A)。
A、实例名称区分大小写B、实例名称不能是Default或MSSQLServerC、实例名称必须遵从SQL Server标识符规则切不能为保留关键字D、必须将实例名限制为16个字符3.SQL Server2000的核心管理工具是(企业管理器)1.下面关于SQL Server服务器组的说明错误的是(不能为SQL Server组创建子服务组)2.在注册SQL Server服务器时,以下选项中不是必须指定的是(登录名和密码)3.下列(服务器网络实用工具)方式不能启动和停止SQL Server服务。
4.在“SQL Server属性(配置)”对话框中,可以看到SQL Server的(产品)信息。
5.在Windows服务中,SQL Server的服务名为(MSSQLSERVER)6.可以用于启动SQL Server服务器的命令为(net start MSSQLSERVER)7.SQL Server的默认监听端口为(1433)1.下面不是SQL Server系统数据库的是(MSSQL)2.下面关于视图的描述不正确的是(视图是保存基本数据的逻辑单位)3.SQL Server主要数据文件的扩展名是(.mdf)4.从物理结构上讲,SQL Server数据存储的基本单位是(页)5.下面不是SQL Server表约束的是(聚集约束)6.下面不是SQL Server标准数据类型的是(double)1.在SQL Server 2000中,系统管理员登陆账户为(sa)2.创建windows身份验证模式登陆账户存储过程是(sp_grantlogin)3.拒绝账户登陆到SQL Server 2000的存储过程是(sp_denylogin)4.在固定服务器角色中,(sysadmin)角色的权限最大。
SQLServer学习笔记sql的范围内查找,sql数据类型,字符串处理函数
SQLServer学习笔记sql的范围内查找,sql数据类型,字符串处理函数sql的范围内查找(1)between.....and⽤法通常情况下我们查找⼀个在某固定区域内的所有记录,可以采⽤>=,<=来写sql语句,例如:查找订单价格在1000到2000之间的所有记录,可以这样写:1 select * from sales.ordervalues2 where val>=1000 and val<=2000查询结果:此处的sales.ordervalues来⾃于定义的视图,关于视图后续会讲到。
如果采⽤between.....and.....则可以同样达到效果。
1 select * from sales.ordervalues2 where val between 1000 and 2000注意⼀点:between....and.....是包含边界的,即此处包含1000和2000这个边界值。
(2)in ⽤法假如要查找1号顾客,2号顾客,9号顾客订单信息,⼀般情况下,我们会这样写:1 select * from sales.ordervalues2 where custid=1 or custid=2 or custid=9结果为:采⽤in,则减少了写法的繁杂,可以这样如下写法也能达到要求。
1 select * from sales.ordervalues2 where custid in(1,2,9)(3)like⽤法,⽤来匹配字符或字符串。
假如要查找雇员表Hr.employees⾥⾯lastname⾥包含a的字符。
可以这样写:1 select * from Hr.employees2 where lastname like '%a%'显⽰结果为:其中%表⽰通配符,即可以为任意字符。
sql数据类型sql包含多种数据类型,满⾜多种开发需求。
常见的数据类型包括:(1)⼆进制数据类型。
SQL server2000的使用 表的编辑
例3:修改数据时违背了约束。 在建立学生基本表时,说明了奖学金在 0~5000之间,执行下列语句时会出现异常 0~5000之间,执行下列语句时会出现异常 情况: UPDATE 学生基本表 SET 奖学金=10000 奖学金=10000 WHERE 学号=‘X201’ 学号= X201’ 结果出错,这是约束条件在起作用,对于初 学者来讲要特别注意这些语句执行过程中 的异常情况。
修改数据
1.使用UPDATE语句 1.使用UPDATE语句 使用该语句修改已经存在的数据. 使用该语句修改已经存在的数据. 格式如下: 格式如下: UPDATE <表名> <表名> SET <列>=<值>[,<列>=<值>] <列>=<值>[,<列>=<值 [WHERE <条件>] <条件>] 其中: 其中:
DELETE FROM 学生基本表 WHERE 学号=‘X201’ 学号= X201’ 例如:由于商学院的学生毕业,所以要把商学院的 学生信息从学生基本表中删除。 DELETE FROM 学生基本表 WHERE 院系名称=‘商学院’ 院系名称= 商学院’ 如果要删除整个表,则不需要WHERE子句。 如果要删除整个表,则不需要WHERE子句。 删除操作的异常情况: 没有要删除的数据。 删除数据时违背了约束。 例:DELETE 例:DELETE FROM 学生基本表 WHERE 学号=‘AAAA’ 学号= AAAA’
修改数据的异常情况
没有要修改的数据。 设置新值时,数据类型不兼容。 修改数据时违背了约束。 例1:没有要修改的数据 在课程表中,将调整课程号为C999的课程上课教师 在课程表中,将调整课程号为C999的课程上课教师 调整为胡越老师,则使用下列UPDATE语句: 调整为胡越老师,则使用下列UPDATE语句: UPDATE 课程表 SET 上课教师=‘胡越’ 上课教师= 胡越’ WHERE 课程号=‘C999’ 课程号= C999’
SQL Server 基础知识
第一阶段基础知识第1部分 SQL Server数据库基础本部分主要内容:●SQL Server 2000简介●系统需求●安装与启动●SQL Server 2000的主要组件●SQL Server 2000与其它数据库的比较●数据库的建立和删除●数据库的备份和恢复●SQL Server 小知识第一章 SQL Server 2000 简介Microsoft SQL Server 起源于Sybase SQL Server。
1988年,由Sybase公司、Microsoft 公司和Asbton-Tate公司联合开发的,运行于OS/2操作系统上的SQL Server诞生。
后来,Asbton-Tate公司退出SQL Server的开发,而Sybase公司和Microsoft公司签署了一项共同开发协议。
在1992年,两公司将SQL Server移植到了Windows NT 操作系统上。
之后,Microsoft致力于Windows NT平台的SQL Server开发,而Sybase公司则致力于UNIX平台的SQL Server的开发。
在Microsoft SQL Server的发展历程中,有两个版本具有重要的意义。
那就是在1996年推出的SQL Server 6.5版本和在2000年8月推出的SQL Server 2000版本。
6.5版本使SQL Server得到了广泛的应用,而2000版本在功能和易用性上有很大的增强,并推出了简体中文版,它包括企业版、标准版、开发版和个人版4个版本。
SQL Server 2000特性:作为客户/服务器数据库系统,SQL Server 2000的特性如下。
1、INTERNET集成SQL Server 2000数据库引擎提供完整的XML支持。
它还具有构成最大的Web站点的数据存储组件所需的可伸缩性、可用性和安全功能。
SQL Server 2000程序设计模型与Windows DNA 构架集成,用以开发Web应用程序,并且SQL Server 2000支持English Query和Microsoft 搜索服务等功能,在Web应用程序中包含了用户友好的查询和强大的搜索功能。
SQL Server 2000实用教程_第1章
1.1 SQL Server 2000简介 简介
SQL Server 2000常见的版本有:企业版 常见的版本有: 常见的版本有 (Enterprise Edition)、标准版(Standard )、标准版( )、标准版 Edition)、个人版(Personal Edition)和 )、个人版 )、个人版( ) 开发人员版( 开发人员版(Developer Edition)。 )。 企业版:一般作为数据库服务器使用。 企业版:一般作为数据库服务器使用。 标准版:一般用于小型的工作组或部门。 标准版:一般用于小型的工作组或部门。 个人版:主要适用于移动用户。 个人版:主要适用于移动用户。 开发人员版: 开发人员版:是一个适用于应用程序开发的版 本 。
1.4 SQL Server 2000的系统数据库 的系统数据库
Master数据库:记录了SQL Server系统的所 数据库:记录了 数据库 系统的所 有系统信息。 有系统信息。这些系统信息包括所有的登录信 系统设置信息、 息、系统设置信息、SQL Server的初始化信息 的初始化信息 和其它系统数据库及用户数据库的相关信息。 和其它系统数据库及用户数据库的相关信息。 Model数据库:是所有用户数据库和 数据库: 数据库 是所有用户数据库和Tempdb 数据库的模板数据库。它含有Master数据库的 数据库的模板数据库。它含有 数据库的 所有系统表子集, 所有系统表子集,这些系统数据库是每个用户 定义数据库时都需要的。 定义数据库时都需要的。
1.1 SQL Server 2000简介 简介
SQL Server是使用客户机 服务器(C/S)体系结构 是使用客户机/服务器 是使用客户机 服务器( ) 的关系型数据库管理系统( 的关系型数据库管理系统(RDBMS)。 )。 1988年推出了第一个 年推出了第一个OS/2版本。 版本。 年推出了第一个 版本 1992年,SQL Server移植到 上后,Microsoft 移植到NT上后 年 移植到 上后, 成了这个项目的主导者。 成了这个项目的主导者。 1994年以后,Microsoft专注于开发、推广 年以后, 专注于开发、 年以后 专注于开发 推广SQL Server的Windows NT版本 的 版本 1996年,Microsoft公司推出了 公司推出了SQL Server 6.5版 年 公司推出了 版 本 1998年,推出了 年 推出了SQL Server 7.0版本 版本 2000年推出了 年推出了SQL Server 2000。 年推出了 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQLServer2000笔记(韩顺平主讲)第一课理论、概念、安装等略过数字类型的数据类型的长度不是指字符个数,而是所占字节数字符类型的数据类型的长度是指字符个数GRANT:赋权限REVOKE:解除权限COMMIT:提交ROLLBACK:回滚不区分大小写select语句--1.查询工资低于10000的同志select * from hero where sal<10000;--2.把工资低于10000的人的工资提高10%(update)--语法update 表名set 字段名1=?,字段名2=? where 条件update hero set sal=sal*1.1 where sal<10000;--3.请删除性别为女的同志delete from hero where sex='女'小结:增(insert)、删(delete)、改(update)、查(select)(_下划线和汉字也可以开头)既然varchar如此智能为什么不抛弃char?什么时候用char?确切知道所用字段的长度,譬如电话号码、身份证号等这种定长的。
为什么要char? char查询时全字匹配,速度比varchar(一个一个比较)快!bit只存0和1(二进制)为什么小数不建议用float ?用float存小数会存进去很奇怪的小数如果非要用float,必须指定小数位数(范围1到53),否则极易产生很奇怪的数字,--推荐的小数保存类型numeric (共几位,其中小数占几位,如果不指定位数则自动表示整数) ,比如要求存放个人工资,单位元(20,2)--age后面没限定约束就代表默认不为空插入部分字段,则需要在表名后,指定字段列表!主键字段中插入时必须给值!如果是字符串就用单引号而不用双引号主键字段中已经存在的数值不能更改,但不存在的数值允许变更。
并没有改变空值不能用= null ,而用is null(单个条件)(多个条件)也可以用or为方便以后实践先建两张表,表结构如下:建议先建部门表(因为员工表的部门字段是从部门表引用的)插入数据:外键约束的威力体现:select *..... *号能不用尽量不用,因为数据量大的时候速度是很慢的,且浪费内存。
比较忌讳SQLserver大小写不敏感如何取消重复行?select distinct 字段from 表名where条件例子:统计共有多少个部门编号?如何避免笛卡尔积,避免数据冗余?select 在字段前加distinct 可避免重复,避免冗余数据。
distinct消除的是查询结果完全相同的那些行,只保留一行。
很显然,查询的两个字段结果没有一行是完全相同的。
(两个字段都相同)。
distinct只能消除完全一样的多余的行,保留一行。
(别名用双引号也可以)between...and...相当于>=...and <=...例如:between 2000 and 2500相当于sal>=2000 and sal<=2500between包含下限和上限,即between是...>= and <=... ,而不是>... and <...以下从左到右分别为查询结果:S% % S % S%一般在软件公司中做批量查询常在where条件字段的后面用in ( , ,)(后半部分截图省略)(后半部分截图省略)order by可以根据不同的字段排序,如order by deptno,sal desc,ename asc,.....--上例效果低下,语句太长,因为重复计算了一次。
更好的方法是用别名代换(效果一样但更好)select ename,sal from emp where sal=min(sal); --也是错的,类似min这种函数不能直接用在等号处用上了子查询因为sql语句是从右向左执行,所以select min(sal) from emp可当成子表,看成800,即where sal=800,上句可看成select语句优化的重要原则:把一个迅速让结果集降到最低的那个条件尽可能地写在最右边数据分组:max , min , avg , sum , count此法太笨,有更好的方法后面介绍分组相关语句的顺序:1. group by ->2. having -> 3. order by一共60条笛卡尔积为避免笛卡尔积,要找到两张表的对应关系(主外键关联)要列举的字段中两张表都有时,要指定是哪一张表中的这个字段自连接也叫内连接两种方法大同小异(用的是自连接,即内连接)少了一个人?(king没有上司)--显示公司每个员工和他的上级的名字,如果没有上司就显示NULL --用到外连接(左外连接,右外连接)......以后会讲到单行子查询实际上是单行单列的子查询用in也可以一般,单行子查询用= 等号,多行子查询用in多行子查询应该用in返回多行记录理应用in而不用=子查询出现在where中,是把结果当作所匹配的条件(单行用= , 多行用in)。
而出现在from中,是把结果看成一个子表。
以下在面试中常考:左图总结子查询在form子句中分页查询(这个比较有用)not in 是不能在的范围上述思路:排除最早入职的4个人,再挑前6个人,即第5到第10个人。
必须得用order by排序,否则不能保证挑的人是按入职先后顺序。
不断地执行这句就会不断地复制(2倍递增),故意把数整大点以测试效率,看速度怎么样;看数据库能否支撑得住。
这是一种压力测试。
查询速度还是挺快的(部分记录行截图)查询速度稍微有点慢,再插一次速度有点慢了0.2秒,再试2次这次用了6秒,400多万条这次只查询一个字段,速度就快多了,用了4秒(看右下角耗时)。
字段选定越多,查询就越慢。
测试分页:用了1秒如果不分页,当数据量非常大是速度是很卡的。
如何删除掉一张表中重复记录,仅保留一条(面试题)select * from cat (在oracle中有单独的语句可实现上述4步)外连接(左外连接和右外连接)【经常考】左外连接:指左边的表(left的左边)的记录全部显示,如果没有匹配的记录就用Null来填充.而右边的表根据其on条件的匹配得到的结果23条右连接结果SQLServer一样如果没有非空约束,则默认允许为空,那么上句insert语句就是正确的。
NULL是空值,并非无值unique可以放一个空值(oracle允许放N个空值),而主键则不可以放空值一张表只能有一个主键或者复合主键(由多个字段(列)的组合作为一个主键)但可以有多个外键,多个unique主键不允许为空,但unique的允许有一个NULL值(6)商品类别是’食品’或’日用品’第(3)条不允许购买大于30件?这个不科学,搞限购吗?不是。
nvarchar一个字符就可代表一个汉字,但varchar一般要两个字符在实际开发中,更多的会将类别、供应商单独做成两张表,因为种类比较多。
比如类别表,把主键类别号作为商品表的一个外键。
这样会比较好。
去注释清爽版:如果要查看这三张表的关系,除了在代码行上看主外键,更方便的方法是在企业管理器中用关系图可以将箭头拖拽指向,也可以在此创建和更改外键及指向修改表,可能会涉及到对项目的修改,因此不希望用到。
但若需求变更,譬如增加一个字段等,还得用。
增、查、改、删因为备份不等于分离后拷贝,而是在数据库运行时备份,所以库spdb1仍然一直在数据库服务器上。
恢复(还原)数据库注意:在备份是最好不要使用正在备份的数据库,切换一下;路径中是反斜杠/ ,而不是\删除数据库时如果该数据库正在使用中也会报错,此时先切换一下再删。
刷新一下才能看到效果。
此时把刚刚在Z:盘备份的数据库手动删掉了也无所谓,不影响,因为是还原到下图路径(安装时设定的)有时可能不需要备份整个数据库,可能只需要对表的备份...(需要时搜搜)SQLServer作业评讲练习一少and两句都OK有简单的方法,先略过帮助文档中相关的日期函数函数 DATEADD在向指定日期加上一段时间的基础上,返回新的datetime值。
语法DATEADD (datepart ,number,date )参数datepart是规定应向日期的哪一部分返回新值的参数。
下表列出了Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分缩写Year yy, yyyyquarter qq, qMonth mm, mdayofyear dy, yDay dd, dWeek wk, wwHour hhminute mi, nsecond ss, smillisecond msnumber是用来增加datepart的值。
如果指定一个不是整数的值,则将废弃此值的小数部分。
例如,如果为datepart指定day,为number 指定 1.75,则date 将增加 1。
date是返回datetime或smalldatetime值或日期格式字符串的表达式。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。
大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。
例如,如果two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。
为避免模糊,请使用四位数的年份。
返回类型返回datetime,但如果date参数是smalldatetime,返回smalldatetime。
示例此示例打印出pubs数据库中标题的时间结构的列表。
此时间结构表示当前发布日期加上 21 天。
USE pubsGOSELECT DATEADD(day, 21, pubdate) AS timeframeFROM titlesGO右面是结果集:startdate是计算的开始日期。
startdate是返回datetime或smalldatetime值或日期格式字符串的表达式。
因为smalldatetime只精确到分钟,所以当用smalldatetime值时,秒和毫秒总是 0。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。
大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。
例如,如果two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。
为避免模糊,请使用四位数的年份。
enddate是计算的终止日期。