SQL学习(1) 数据定义语言

直奔主题

sql:结构化查询语句,是一种介于关系代数和关系演算之间的结构化查询语言,是一个通用的,功能极强的关系型数据库语言,功能丰富,不仅具有数据定义和数据控制还有数据查询功能,而且语言简洁,及数据定义,数据操纵和数据功能于一体。但是不同的数据库厂商之间的sql语言还是存在一定的差距的,但也是大同小异。

sqlserver:windows出的一个关系型数据库管理系统,与之类似的是mysql,sqlServer是只能在windows平台上使用,但是mySql则是和Linux为好搭档,他们之间在功能上是没有多大的区别的,但是在一些控制代码的名字可能不同,大体是相同的,就如同是山东话和北京话,说起普通话来都是相同的,但是都各自有自己的方言,同时mySql是web应用和小型企业都在用的一种数据库管理系统。


Sql语句分为三大类:

1)数据定义语言:负责创建,修改,删除表,索引和视图等对象

2)数据操作语言:负责数据库中数据的插入,查询,删除等操作

3)数据控制语言:用来授予和撤销用户权限。


数据定义语言:

创建表:

CREATE TABLE<表名>(<列定义清单>);

列定义清单:<列名><数据类型><默认值><约束性限制><标识列设置>

上述即为我们在创建一个表的时候,我们sql语言的书写格式,

标识列设置:

如果我们对其进行设置了之后,SqlServer会为该列提供一个唯一的递增的数值,我们可以指定某一列对其进行标识列设置,就可以将其它的列进行一个区分。控制代码为

IDENTITY(初始值,步长值)

初始值就是我们数据库创建后的第一个值,步长值就是每次递增,增加的数值。

数据类型:

数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQLServer 提供了 25 种数据类型: 

<span style="font-size:18px;">·Binary [(n)] n个字节二进制数据
·Varbinary [(n)] 可变n字节二进制数据
·Char [(n)]  n位字符串
·Varchar[(n)] 可变n位字符串
·Nchar[(n)] 
·Nvarchar[(n)] 
·Datetime  占八个字节,包含年份和时间部分,精确到秒
·Smalldatetime 占四个字节,所表示的时间段要比Datetime短,精确到分
·Decimal[(p[,s])] 定义时,可用来划分整数部分和小数部分位数
·Numeric[(p[,s])] 前一个表示该数字的全部位数,第二个表示小数点后的位数
·Float[(n)] n用来存储其后尾数的位数
·Real 
·Int 整型数据和下面两个的区别在于是存储所占用的空间和其所表示的范围的差距
·Smallint 
·Tinyint 
·Money 代表货币或者货币值的数据类型
·Smallmoney 
·Bit 
·Cursor 
·Sysname 
·Timestamp 时间戳
·Uniqueidentifier 
·Text   保存文本
·Image 保存图片
·Ntext </span>

以上的类型,用的最多的无非就是 Text,char[],DateTime,Int ,Float,Image,在保存图片的时候一个是将图片的路径记录在数据库中,然后读取,另一个就是将图片转化为二进制文件,然后将其存储为Image格式,对其进行读取。

下面为一个建表实例:

CREATE TABLE STUDENT(
SNAME CHAR(8) NOT NULL,
SEX CHAR(2) DEFAULT ('MAN'),
AGE INT,
[STUDENT CLASS] INT,
"STUDENT NUM" INT IDENTITY(0,1)
);

上面是一个学生信息表的实例,其中的问题就是一个列的列名如果是由多个词组组成的,就需要用【】或者“”来将其括起来。

表结构的修改:

修改表机构的基本语句格式为:

ALTER TABLE <列名>
ADD <列名><数据类型><列的完整性约束>
ALTER COLUMN <列名><新的数据类型>
DROP COLUMN<表级完整性约束>

ADD

向表中添加一列:

ALTER TABEL STUDENT
ADD HEIGHT INT NULL;
ALTER TABLE STUDENT
ADD HEIGHT INT DEFAULT("180");

当向表中插入一条新的列的时候,需要注意的是,这以列的完整性约束要么是可以为null,要么是为其制定默认值。

ALTER COLUMN 

修改表中的一列数据:

ALTER TABLE STUDENT
ALTER COLUMN SEX CHAR(4);

修改表中原有列的数据类型

DROP COLUMN

删除表中的一列

<span style="font-size:18px;">ALTER TABLE STUDENT
DROP COLUMN SEX;</span>

DROP CONSTRAINT 

删除表级约束

<span style="font-size:18px;">ALTER TABLE STUDENT
DROP CONSTRAINT UN_ENAME;</span>

后面的UN_ENAME 是约束性限制语句的名称

ADD CONSTRAINT

ALTER TABLE STUDENT
ADD CONSTRAINT UQ_ENAME UNIQUE (ENAME);

ALTER TABLE STUDENT
ADD CONSTRAINT UNIQUE (ENAME);

第一种方式为添加的约束性限制语句,其名称是UQ_ENAME,当我们不为其指定名时,系统会为其分配一个约束性限制语句的缩写加上我们的列名的这种名称,也就是第二种命名方式。

ALTER TABLE STUDENT
ADD CONSTRAINT DEAFULT'180' FOR HEIGHT;

 
删除基本表:

DROP TABLE STUDENT

当这条语句被执行之后,该表和在该表上建立的索引和视图都将被删除,同时我们可以删除多个表,只需要在表的后面加上逗号,然后加上我们所需要删除的表的表名就好了。

创建,删除索引

一个基本表上可以建立多个索引,以提供多种存储路径,加快查询的速度,索引的建立和删除工作由DBA或者表的拥有者来决定。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。但是索引的缺点便是会占据一定的物理空间。
创建和删除索引的语法基本格式为:

<span style="font-size:18px;">CREATE INDEX IX_STU
ON STUDENT (HEIGHT,SNAME DESC);</span>

<span style="font-size:18px;"> DROP INDEX STUDENT.IX_STU;</span>

创建索引的过程中,列表清单是当第一个数据相同的时候,执行第二个,然后依次执行,最后面是我们所指定的排序方式,有ASC 升序和DESC降序,默认是升序。

索引创建是衡量数据库设计成败的一个重要因素,设计的过程中,需要考虑两个因素,索引能够加快查询的速度,但是却会给数据的修改删除带来很大的不便,使得操作比较复杂。

索引创建的依据:对于索引的创建我们选择的是将索引建在一些经常出现在where语句的属性,也就是这些数据是可以作为一个查询条件的,一般特性是其数值一般不会有太多相同的尽量是没有相同的,然后就是这些数据的值必须是不经常被更新的。



推荐一个微信公众号:IT90s最前线

    原文作者:大一写的博客
    原文地址: https://blog.csdn.net/tianzhiwaidexue/article/details/41510739
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞