南宁网站建设liluokj,网站开发语言用什么好,环保公司网站建设,中国交通建设集团重新捡起枪杆子#xff0c;学习N年没用过的MS-SQL#xff0c;整理一些学习笔记记录。
一、创建、修改和删除表
在SQL中#xff0c;表有如下规则#xff1a; 每张表都有一个名字#xff0c;通常称为表名或关系名。表名必须以字母开头#xff0c;最大长度为 30 个字符。一…重新捡起枪杆子学习N年没用过的MS-SQL整理一些学习笔记记录。
一、创建、修改和删除表
在SQL中表有如下规则 每张表都有一个名字通常称为表名或关系名。表名必须以字母开头最大长度为 30 个字符。一张表可以由若干列组成。同一张表中列名唯一列名也称为属性名或字段。同一列的数据必须有相同的数据类型。表中的每一列值必须是不可分割的基本数据项。表中的一行称为一个元组相当于一条记录。 SQL支持以下3种类型的表 永久表全局临时表局部临时表 创建表
创建数据库中的表表由行和列组成每个表都必须有个表名CREATE TABLE
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)注创建表必须要保证该表名在数据库中不存在否则数据库会提示创建失败。如果需要创建已经存在的表我们必须先将原来的表删除再重新创建。
修改表
在已有的表中添加、修改或删除列ALTER TABLE 表中添加列ALTER TABLE (表) ADD (列) 表中删除列ALTER TABLE (表) DROP COLUMN (列) 注一些数据库系统不允许这样删除数据库表中的列。 表中更改列的数据类型ALTER TABLE (表) ALTER COLUMN (更改的数据类型)
表的删除与重命名
重命名表SP_RENAME 原始名,重命名 删除表DROP TABLE 表
二、创建、删除数据库
创建数据库
SQL Server 允许为每个数据库服务创建多个数据库。在 MS-SQL 中使用 CREATE DATABASE 语句创建数据库的完整语法
CREATE DATABASE database_name[ ON[ filespec [ ,...n ] ][ , filegroup [ ,...n ] ]][ LOG ON { filespec [ ,...n ] } ]删除数据库
与表的删除类似数据库的删除是通过 DROP DATABASE 语句来实现的语法如下
DROP DATABASE database_name [ ,...n ]三、创建索引与视图
索引的创建与销毁
索引是一个单独的、物理的数据库结构是数据库的一个表中所包含的值的列表其中 注明了表的各个值所在的存储位置。索引是依赖于表建立的提供了编排表中数据的方法。打个比方把数据库看作一本书把索引看作书的目录通过目录查找书 中的信息。显然与没有目录的书相比这显得方便和快捷。 按存储结构的不同将索引分为两类簇索引 ClusteredIndex和非簇索引Nonclustered Index。
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) [ WITH { PAD_INDEX | FILLFACTOR fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB} [ ,...n] ] [ ON filegroup ]UNIQUE DISTINCT惟一性索引不允许表中不同的行在索引列上取相同值。若已有相同值存在则系统给出相关信息不建此索引。
CLUSTERED/ NONCLUSTERED聚集和非聚集索引若为 CLUSTERED则为聚 集索引即表中元组按索引项的值排序并聚集在一起。一个基本表上只能建一个 聚集索引。NONCLUSTERED 表示创建的索引为非聚集索引。缺省时创建的索引 为非聚集索引。
ASC/DESC索引表中索引值的排序次序缺省为 ASC正序排列。
索引的销毁
在 SQL 中无论是簇集索引还是非簇索引都可以通过 DROP INDEX 关键字销毁。
DROP INDEX (索引名称)在 SQL Server 中用 DROP INDEX 语句销毁索引时我们一定要指明索引所在表 的名字。 使用索引的几点原则 对小的数据表来说使用索引并不能提高检索效率因此不需对其创建索引。当用户要检索的字段的数据包含有很多数值或很多空值NULL时为该字段创建 索引会大大提高检索效率。当用户查询表中的数据时如果查询结果包含的数据行较少一般少于数据总 数的 25%时使用索引会显著提高查询效率。反之如果用户的查询操作返回结果 总是包含大量数据那么索引的用处不大。索引列在 WHERE子句中应频繁使用。我们要先装数据后建索引。对于大多数的表总有一批初始数据需要装入。该原则是说建立表后我们要先将这些初始数据装入表然后再建索引这样可以加快初始数据的录入。如果建表后就建索引那么在输入初始数据时每插入一个记 录都要维护一次索引当然对于索引来说早建和晚建都是允许的。索引提高了数据检索的速度但也降低了数据更新的速度。如果要对表中的数据进行大量更新我们最好先销毁索引等数据更新完毕再创建索引这样会 提高效率。索引要占用数据库空间。在设计数据库时我们要把需要的索引空间考虑在内。 我们要尽量把表和它的索引存放在不同的磁盘上这样会提高查询速度。 四、视图
视图是从一个或多个表中导出的表其结构和数据是建立在对表的查询基础上的。和表 一样视图也是包括几个被定义的数据列和多个数据行但就本质而言这些数据列和数据 行来源于它所引用的表。所以视图不是真实存在的基础表而是一张虚表。
创建视图
视图的创建主要由 CREATE VIEW 关键字实现其数据则由 SELECT 语句定义。
CREATE VIEW [(column1, column2...)] AS SELECT FROM销毁视图
在 SQL 中我们可以通过 DROP VIEW 关键字销毁创建的视图。
DROP VIEW (视图名称)销毁视图只需在 DROP VIEW 关键字后写入视图的名称就可以了。 视图也有几个原则 和表一样视图必须有唯一的名字。并且视图与表不允许拥有相同的名字。视图的创建个数不受限制用户可以创建任意多个视图。用户要创建视图必须从数据库管理员那里得到创建权限。视图可以嵌套即可以创建视图的视图。SQL Server禁止用户在查询语句中使用ORDER BY 子句。 五、SQL查询语句
SELECT语句的完整语法
SELECT [DISTINCT | ALL] select_listFROM table_name_source[ WHERE search_condition ]
[ GROUP BY group_by_expression ][ HAVING search_condition ][ ORDER BY order_expression [ ASC | DESC ] ]DISTINCT删除查询结果中相同的行。 ALL返回查询结果中的所有行。如果没有指定任何一个关键字那么关键字 ALL 就是默认的关键字。 WHERE列出搜索标准用于选择要显示的数据行。 GROUP BY 分组查询结果。 HAVING列出另外的行选择标准。 ORDER BY : 对 查询结果进行排列。 ASC升序排列结果。 DESC降序排列结果。
列的查询
在 SQL 中查询表中某一列字段信息的语法可表示如下
SELECT (表) FROM (字段)注在 SQL 语言中SQL 关键词对大小写不敏感所以对 SELECT 关键词来说 SELECT、select 或者 Select 都是一样的然而对于表名或者列名来说可能对大小写 敏感这取决于数据库的 DBMS。
使用DISTINCT去除重复数据
SELECT 子句中我们通过指明 DISTINCT 关键字可以去除列中的重复数据。
SELECT DISTINCT 表 FROM 字段多列查询
多列查询只是在 SELECT 关键词后罗列出所要查询的列名并以逗号相互间隔注意一点列出的最后一列的名字后面不能加逗号否则会造成语法错误。
SELECT col1col2……coln FROM table_name查询所有的列
使用“*”通配符查询结果将列出表中所有列的元素而不必指明各列的列名这在用户不清楚表中各列的列名时非常有用。
SELECT * FROM table_name六、排序查询
单列排序
按照某一列的顺序升序进行排列显示的即 ORDER BY 子句后面只有一个字段。
SELECT column1, column12,……FROM table_name_nameORDER BY column N注ORDER BY 子句一定要放在所有子句的最后无论包含多少子句。
多列排序
根据 ORDER BY 子句后面列名的顺序确定优先级的 即查询结果首先按照列 col1 的顺序进行排列而只有当列 col1 出现相同的信息时这些相同 的信息再按照列 col2 的顺序进行排列以此类推。
SELECT col1col2……colnFROM table_name
ORDER BY col1col2……colm采用序号进行多列排序
根据列的相对位置即序号进行排序。
SELECT col1col2……colnFROM table_name
ORDER BY ij……反向排序
要实现反向降序排序我们必须使用关键字“DESC”。
SELECT col1col2……colnFROM table_name
ORDER BY col1 DESCcol2七、使用WHERE子句定义搜索条件查询
WHERE 子句中定义的搜索条件可以是简单的单值比较条件也可以使用各种运算符、组合子句条件。
参考资料 https://learn.microsoft.com/zh-cn/sql/sql-server/editions-and-components-of-sql-server-2019?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/relational-databases/indexes/indexes?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/relational-databases/tables/tables?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/relational-databases/views/views?viewsql-server-ver16