前言
SQL的语法比较简单,学起来相比界面UI控制要简单得多,但是SQL在企业级应用中又是如此的重要,以至于很多开发人员都把重点放在SQL上。
SQL并没有面向对象的概念,最复杂的设计也不过是表值函数,以及基于ORM思维的表类型映射处理了,还包括一些通用的程序数据结构处理。当然,SQL真正的精华在我看来,是如何优化其执行效率。各类数据库范式的应用以及索引的构建让数据效率足够强大,同时又结合了数据库结构设计与现实工程中的联系。一般程序语言总会在程序可读性和代码效率性中间遇到矛盾,而SQL直观的代码表达和复杂的关系结构运算,让她变成效率处理中的王者。我们几乎不用考虑太多的代码可读性问题,只需要关注规范及效率即可。
说这么,反回说来还是落在现在的这片文档上,本文着力收录一些基础通用的SQL语法点,并且包含一些巧妙的处理内容。举例力求少和精简,使之即可以作为一个文档手册,又可以作为SQL知识扩展使用。
一,基础的增删改查:
SQL中大概可以分为三种操作的对象类型:数据库,数据表,记录。这三种对象都有其对应的操作语句。
1,数据库操作
1>, 创建数据库
if exists(Select * from sys.databases where name=‘数据库名‘) --先判断要建立的数据库是否存在
Drop Database 数据库名 --删除数据库
Go
Create Database 数据库名
2>,删除数据库:参照1>
3>,备份数据库
--先创建备份数据的设备(Device)
use master --当前库转到主库
Exec sp_addumpdevice ‘Disk‘, ‘Testbak‘, ‘路径\文件名.dat‘ --这里Disk为设备类型,还可以写Pipe(管道),tape(磁带机),不过都使用较少。
--Testbak是为当前设备起的别名
--开始备份
Backup Database 要备份的数据库名 to Testbak
4>数据库修改操作使用的比较少,一般即便要修改也是通过企业管理器来进行,具体的语句这里不写了。
2, 数据表及各类约束的操作
1>创建新表
a> 标准建表: Create Table TbName(Col1 Type1[not null] [ Primary key] Default(Value1), Col2 Type2[null],...)
b>利用查询建表: Select * into 目地表名 from 原表名
这种建表的方式,不能把原表中的约束复制到新表中,必须通过其他语句逐一复制。如果利用这样的语句建立一个空表结构,可以增加 Top 0 或者 Where 1=0即可。
还有一种查询建表的方式: Create Table TbName as Select Col1,Col2 From TbOldName [Definition only]
这里的Definition only 也是只建立表结构的意思,第二种查询建表只对Oracle数据库有效。