数据库学习笔记(三)--SQL语句

1.SQl简介

1.1SQL能做什么

SQL是针对数据库而言的一门语言,它可以创建数据库,数据表,可以针对数据的库的数据进行增,删,改,查等操作,可以创建视图,存储过程,可以赋予用户权限等.

1.2SQL和T-SQL

SQl的全称是"结构化查询语言(Structred Query Language)",SQL语言已经成为关系数据库的标准语言.

SQL Server 使用ANSI SQL-92 的扩展集Transact-SQL,简称为T-SQL.

SQL语言不同于C#这样的程序设计语言,它是只能被数据库识别的指令,但是在程序中,可以利用其他的编辑语言组织SQL语句发送给数据库,数据库在执行相应的操作.

1.3SQL的组成

a.DML(Date Manipulation Language,数据库操作语言,也称为数据操纵语言):用来插入,修改和删除数据库的数据.

b.DDL(Data Definition Language,数据定义语言):用来建立数据库,数据库对象,和定义其列,大部分是以CREAT开头的命令

c.DQL(Data Query Language,数据查询语言):用来对数据库中的数据进行查询,如SELECT等

d.DCL(Data Control Language,数据库控制语言):用来控制数据库组件的存取许可,存取权限等,如GRANT,REVOKE等

除此之外,T-SQL还包括变量说明,内部函数等其他命令.

1.4SQL中的运算符

(1)算术运算符

+    加运算,求两个数或表达式相加的和

-     减运算,求两个数或表达式相减的差

*     乘运算,求两个数或表达式相乘的积

/      除运算,求两个数或表达式相除的商

%    取模运算,求两个数或表达式相除的余数

(2)赋值运算符

=    把一个数或者变量或者表达式赋值给另一个变量

(3)比较运算符

=    等于

>   大于

<   小于

<>不等于

>=大于等于

<=小于等于

!=不等于(非SQL-92标准)

计算结果为布尔数据类型

(4)逻辑运算符

AND     当且仅当两个布尔表达式都为TRUE是,返回TRUE

OR       当且仅当两个布尔表达式都为FALSE是,返回FALSE

NOT     对布尔表达式的值取反,优先级别最高

2.使用T-SQL插入数据

如何向表中添加数据

(1) 在SQl Server中插入数据比较简单,只要选择并右击表,然后在快捷菜单中选择打开表选项,就可以向表中直接输入数据行

(2)使用T-SQL可以向表中添加新数据,也可以将现有表中的数据添加到新创建的表中

2.1使用INSERT插入数据

[语法]

INSETR [INTO] 表名[(列明列表)] VALUES(值列表);

其中:

[INTO]是可选的,也可以省略

表名是必须的

表的列名是可选的,如果省略,将依次插入所有列

多个列名和多个值列表用逗号分隔

分号(;)是T-SQL语句中止符,分号不是必须的.

例:

INSERT INTO Students(SName,SAddress,SGrade,SEmail,SSEX)

VALUES ('张三','上海松江',6,'[email protected]',0)

注意:

SQL Server,默认T-SQL是不区分大小写的,本书所有的T-SQL关键字均采用了大写方式,以突出表现

在插入数据的时候,需要注意以下事项:

每一次插入一整行数据,不可能只插入半行或者几列数据,但允许某些列为空或使用默认值.如果违反列的非空约束,那么插入语句会检验失败,不能成功插入数据

数据值的数目必须与列数相同,每个数据值的数据类型,精度和小数位数也必须与相应的列匹配

INSERT语句不能为标识列指定值,因为他的数字是自动增长的

对于字符类型,日期类型的列,当插入数据的时候,用单引号(')将其引起来

尽管可以不指定列名,但是最好明确指定插入列和对应的值,以做到"心中有数"

如果在设计表的时候指定某列不允许为空,则该列必须插入数据,否则将报告错误信息

插入的数据项,要求符合检查约束的要求,

可以使用DEFAULT关键字来代替插入的数值,为具有默认值的列插入数据

2.2一次插入多行数据

一次插入多行数据有三种方法

(1)通过INSERT SELECT语句将现有表格中的数据添加到已存在的表中

例:

INSERT INTO AddressList (姓名,地址,电子邮件)

SELECT SName,SAddress,SEmail

FROM Students

SELECT 语句用于查询,上边的SQL把学生信息表中以存在的姓名,地址,和E-mail信息插入到新的AddressList表中,避免了录入大量重复数据项

需要注意以下两点:

查询得到的数据个数,顺序,数据类型等必须与插入的项保持一致

AddressList表必须预先创建好,并且具有姓名,地址,和电子邮件三个列

(2)通过SELECT INTO 语句将现有表中的数据添加到新表中

与上面的INSERT INTO 类似,SELECT INTO语句也是从一个表中选择一些数据插入到新表中,不同的是,这个新表是执行查询语句的时候创建的,不能够预先存在

例如:

SELECT Students.SName,Student.SAddress,Students.SEmail

INTO AddressList

FROM Students

将创建新表AddressList,把Students表中的SName,SEmail作为AddressList表的新列,并且把查询到的数据全部插入到新表中.

在向一个新表插入数据的时候,又会牵扯到一个新问题,如何插入标识列?

因为标识列的数据是不允许指定的,因此我们可以创建一个新的标识列,语法如下

[语法]

SELECT IDENTITY(数据类型,标识种子,标识增长量) AS 列名

INTO 新表

FROM 原始表

上面的语句可改为:

SELECT Students.SName,Student.SAddress,Students.SEmail,IDENTUTY(int,1,1) As StudentID

INTO AddressList

FROM Students

(3)通过UNION关键字合并数据进行插入

UNION语句用于将两个不同的数据或者查询结果组合成一个新的结果集.

当然,不同的数据或者查询结果,也要求数据个数,顺序,数据类型都一致,因此,当向表中重复插入多次数据的时候可以使用SELECT...UNION来简化操作

例如:

INSERT STUDENTS (SName,SGrade,SSex)

SELECT '张可', 7 , 1  UNION

SELECT '李阳', 4 ,0  UNION

..................................

SELECt '杨晓',  5 , 1 UNION

这样的效果其实和INSERT...SELECT的效果是一样的,只不过多行数据是手写的,然后用UNION合并组合成多行数据记录,然后把这些多行数据一起插入

3使用T-SQL更新数据

3.1使用UPDATE更新数据

[语法]

UPDATE 表名 SET 列名 = 更新值 [ WHERE 更新条件 ]

其中:

SET后面可以紧随多个数据列的更新值,不限一个,使用逗号分隔

WHERE子句是可选的,用来限制更新数据的条件,如不限制,则整个表的所有数据行将被更新

需要注意的是,使用UPDATE语句,可以更新一行数据,也可能更新多行数据,但也可能不会更新任何数据.

在更新数据的时候,一般都有条件限制,别忘了书写WHERE条件语句,否则将更新表中所有行的数据,这可能导致有效数据的丢失.

4 使用T-SQL删除数据

4.1使用DELETE删除数据

[语法]

DELETE [FROM] 表名 [WHERE<删除条件>];

DELET语句只要删除就是删除整条记录,不会值删除单个列,所以在DELETE后补能出现列名

4.2使用 TRUNCATE TABLE 删除数据

TRUNCATE TABLE 用来删除表中所有行,功能上他类似于没有WHERE子句的DELETE语句.

TRUNCATE TABLE 比 DELETE执行速度更快,使用的系统资源和事物日志资源更少,并且删除数据后表的标识列会从新开始编号

TRUNCATE TABLE 删除表中的所有行,但是表的结构 , 列 , 约束,索引等不会被改动.TRUNCATE TABLE不能用于有外键约束的表,这种情况下需要使用DELETE语句

实际工作中,不建议使用TRUNCATE TABLE语句,因为使用他删除的数据不能恢复还原.

5.导入和导出数据

5.1导出数据

(1)在数据库右键菜单选择"任务"->"导出数据"

(2)选择要从何处取得数据,这时候可以选择SQL Server自身,并选择数据库

(3)确定把数据导出到什么位置,这时候可以在上方的目标列表框中选择"平面文件目标"选项,然后在下方输入文件的名称,并确定文件的相关选项

(4)选择是否用一条查询语句进行复制,单击"下一步"按钮

(5)选择表名并设置文本文件的格式

(6)确定是否立即运行,是否保存该转换设置,单击"下一步"按钮一直到完成转换.

5.2导入数据

(1)首先准备数据

(2)在数据库右键菜单中选择"任务"->"导入数据"命令

(3)选择从何处取得数据

(4)选择将数据源复制到目标源

(5)确定后,单击"下一步"按钮一直到完成转换

你可能感兴趣的:(数据库学习笔记(三)--SQL语句)