`

T-SQL 操作数据库

阅读更多

 SQL语言的分类

SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

1、数据查询语言DQL (Data Query Language) 

 

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:

 

SELECT <字段名表>

 

FROM <表或视图名>

 

WHERE <查询条件>

 

2、  数据操纵语言DML(Data Manipulation Language)

 

数据操纵语言DML主要有三种形式:

 

1) 插入:INSERT

 

2) 更新:UPDATE

 

3) 删除:DELETE

 

3、  数据定义语言DDL(Data Definition Language)

 

数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:

 

CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

 

| | | | |

 

表 视图 索引 同义词 簇

 

4、  数据控制语言DCL(Date Control Language)

 

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:

 

1) GRANT:授权。

 

2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。

 

回滚---ROLLBACK

 

回滚命令使数据库状态回到上次最后提交的状态。其格式为:

 

SQL>ROLLBACK;

 

3) COMMIT [WORK]:提交。

 

在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。

 

提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。

 

(1) 显式提交

 

用COMMIT命令直接完成的提交为显式提交。其格式为:

 

SQL>COMMIT;

 

(2) 隐式提交

 

用SQL命令间接完成的提交为隐式提交。这些命令是:

 

ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。

 

(3) 自动提交

 

若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:

 

SQL>SET AUTOCOMMIT ON;

----------------------------------------------------------

 

创建数据库  

 

use   master       -- 指定使用 master  数据库

go

 if exists( select * from  sysdatabases  where name =  “ school ” )

drop database school   -- 若 school 数据库不存在,则删除

go

create database school       -- 创建数据库 school

On [primary]

 (

 name= school _dat,    -- 数据库主文件逻辑名称

filename=‘C:\Data\school.mdf’,    -- 数据库主文件物理名称

size=10,    -- 指定主文件初始大小

maxsize=50,   -- 指定主文件最大值

filegrowth=5   -- 指定主文件增长值

)

 log on

 (

 name=‘ school _log’,   -- 数据库日志文件逻辑名称

filename='c:\data\school.ldf',  -- 数据库主文件物理名称

 size=5,  -- 指定日志文件初始大小

maxsize=25mb ,   -- 指定日志文件最大值

filegrowth=5  -- 指定日志文件增长值

 )

-------------------------------------------------------------------------------------

 

创建数据库表

 

vuse school   --   指定数据库

go

if exists(select * from  sysobjects  where name=‘student')

drop table student  – 如果已存在 student 表,则删除

go

create table student

(

     id int   identity(1,1)    primary  key  not null,               --     编号 , 标识列

    sno  varchar(12) not null,                                        --     学号    唯一

    sex int not null,                                                         --    用户性别

    age int not null,                                                       --   年龄

    address varchar(50) not null                                   --   地址

)

go

 

-----------------------------------------------------------------------------------

 

创建约束

主键约束    primary  key

唯一约束    unique

默认约束    default

外键约束    foreign key

检查约束    check

注意!

主键: FK_

唯一: UQ_

默认: DF_

外键: FK_

检查: CK_

-----------------------------------------------------------------------

 

为数据库表添加主键约束

Alter  Table  stuInfo

Add Constraint  PK_stuNo  Primary Key (stuNo)

 

为数据库表添加唯一约束

Alter  Table  stuInfo

Add Constraint  UQ_SNO  unique(SNO)

 

为数据库表添加默认约束

ALTER TABLE student

ADD  CONSTRAINT   DF_Sex  DEFAULT (1)  FOR sex

 

为数据库表添加外键约束

alter table bbsSection

add constraint FK_CID  FOREIGN  KEY(CID) REFERENCES Class(CID)

 

为数据库表添加检查约束

ALTER TABLE sex

ADD CONSTRAINT CK_Sex CHECK (sex = 0 or sex = 1)

 

常用检查约束表达式

 

age >0  and age < 101       年龄在 1 到 100 之间

sex =0  or  sex = 1  性别只能为 0 或 1 

len(password)=4           密码长度等于 4

password like  ‘ [0-9] [a-z][a-z][a-z] ’    密码为四位,第一位是数字,后三位是小写字母  

-------------------------------------------------------------------------- 

 

简单   :增,删,改,查

增: insert  into  student[(name,age,address)] values( ‘ jack ’ ,21, ’ 北京 ’ )

删: delete from student where id = 1

改: update student  set name = ‘tom’ , age =22  where id = 2

查:  select * from student where id = 3

---------------------------------------------------------------------------------------

 

深入查询

1, 查询 student 表中所有数据 , 以 name 列排序

select * from student order by name [asc or  desc]

2, 查询 student 表中前 3 条数据

select top 3 * from student

Mysql  没有 top, 使用  limit

Select *From student limit 0,4

3, 查询 student 表中不重复的数据

  select distinct name[,address] from student  

 

4, 两表联查 (where  写法 )

select student.name,class.name from student,class  where student.cid = class.cid

5, 两表联查 (join on)

select student.name,class.name from student Join class on student.cid = class.cid

 

6,join 的其他类型

[inner] join: 只显示符合条件的记录,默认为 jion

left [outer] jion :  显示左边表中所有的记录,以及右边表中符合条件的记录

right [outer] jion: 显示右边表中所有的记录,以及左边表中符合条件的记录

cross join : 将一个表的每一条记录和另一个表的每一条记录搭配成新的记录,不需要用 on 来设置条件

 

 

select student.name,class.name

from student   left  join class

on student.cid = class.cid

 

 

select student.name,class.name

from student   right  join class

on student.cid = class.cid

 

select student.name,class.name

from student   cross  join class

on student.cid = class.cid

 

 

7 ,使用 where  子句条件查询

 

7.1  可以灵活应用比较运算符:

=       等于

<>     不等于

!=      不等于

>        大于

>=     大于等于

!>      不大于

<       小于

<=      小于等于

!<      不小于

select * from student where id <5

select * from student where id <>4

select * from student where id !> 5

 

7.2  使用 and( 和 )  , or( 或 )  连接不同   查询

select * from student where id <5  and id >2

select * from student where id !<5  and id <7

7.3   使用 in  查询

select * from student where id in (2,3,4

 

7.4   使用 like 模糊查询

通配符:

%( 替代任意多个   字符的任意字符串 )

_( 替代任何单个字符 ) 

[]( 替代指定范围 [a.f] 或集合 [abcdef] 中的任何单个字符 )

[^]( 替代不属于指定范围 [a.f] 或集合 [abcd] 的任何单个字符 )

select * from student where  name like ‘[0-9]’

select * from student where  name like  ‘ [^abcd] ’

select * from student where  name like  ‘  [abc]_ ’

select * from student where  name like  ‘ [^0-9]% ’

注意 !

like  ‘ abc [_] ’       等同字符  : abc_

like  ‘ abc[%] ’       等同字符  : abc%  

like  ‘ ab[%]c       等同字符 : ab%c

like  ‘ []] ’                等同字符 : ]

like  ‘ []]abc ’         等同字符 : ]abc

 注:当where多个条件时,需要在查询条件外面加();

例:select * from student where age > 23 and (name like  ‘ [^0-9]% ’ or name like ‘  [abc]_ ’ or name like ‘[0-9]’)

 

8.1   使用 any  查询     只要有一行使结果为真,则结果为

select * from student where age > any (select count from class)

8.2   使用 some 查询     和 any 使用相同

select * from student where age > some(select count from class)

8.3   使用 all  查询     要求子查询的所有行都使结果为真 ,  则结果为真

select * from student where age > all (select count from class)

 

 

9 , 使用 order by  子句排序 asc | desc

select * from student order by name  [asc | desc]

select * from student order by address ,name [asc | desc]

10.1 ,  使用 group by  简单分组

select cid,count(id) from student group by cid

10.2 ,  使用 group by  分组, with cube 汇总

select cid,age,count(id) count from student group by cid,age with cube

10.3 ,  使用 group by  分组, with rollup 汇总

select cid,age,count(id) count from student group by cid,age with rollup

注意!

要查询的列必需包含在聚合函数或 GROUP BY  子句中

 me where id not in

       (select top  行数  x ( 页数 -1) id form tableName)

----------------------------------------------------------------------------

 

 

视图查询

 

视图:是另一种查看数据库中一个或多个表中的数据的方法,视图是一种虚拟表,通常是作为一个或多个表的行或列的子集创建的。

视图通常用来进行了以下 3 种操作:

1 、筛选表中的行

2 、防止未经许可的用户访问敏感数据

3 、将多个物理数据表抽象为一个逻辑表据表

使用 T — SQL 创建视图

Create VIEW view_name as <select  语句 >

例: use stuDB go

      if exists(select *from sysobjects where name= ‘ view_stuinfo_stumarks ’ )

drop VIEW view_stuinfo_stumarks go

create VIEW view_stuinfo_stumarks

as

select  姓名 =stuName, 学号 =stuinfo.stuNo ,笔试成绩 =writtenExam ,机试成绩 =labExam ,

平均分 =(writtenExam+labExam) / 2

 from stuinfo left join stumarks on stuinfo.stuno = stumarks.stuNo

go

查询视图

Select *from view_stuinfo_stumarks

 

--------------------------------------------------------------------------------------------

 

 

Oracle 中去掉重复值

 

SELECT distinct p.viewDocumentID FROM Print p,ViewDocument  WHERE  p.isvalid =1 AND ( p.printerID=:useId")

SELECT count(distinct p.viewDocumentID) FROM Print p,ViewDocument v WHERE p.isvalid =1 AND ( p.printerID=:useId “ )

Oracle 添加字段

添加单列

ALTER   TABLE   表名    ADD   列名   数据类型

添加多字段

ALTER   TABLE   表名    ADD   (   列名 1   数据类型 1, 列名 2   数据类型 2)

Oracle 修改字段

修改单列数据类型

ALTER   TABLE   表名    MODIFY    列名   数据类型   

同时修改多列数据类型  

ALTER   TABLE   表名    MODIFY   (   列名 1   数据类型 1, 列名 2   数据类型 2) 

 

 

Oracle 删除字段

删除单列  

ALTER   TABLE   表名    DROP   COLUMN   列名  

删除多列

ALTER   TABLE   表名    DROP   ( 列名 1, 列名 2)

Oracle 同时添加和修改多列  

ALTER   TABLE   表名    ADD   (   列名 1   数据类型 1, 列名 2   数据类型 2)

MODIFY   (   列名 3   数据类型 3, 列名 4   数据类型 4)

 

 

11 、使用 group by all  分组查询

select cid,count(id) count from student where cid >2 group by all cid

12 、使用 having  子句分组查询

select cid,count(id) count from student group by cid having cid >2

13 、简单分页查询

Select top  行数  *from tableNa

 

2
13
分享到:
评论

相关推荐

    sql server 2012 T-SQl基础教程 源码和示例数据库

    本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...

    SQLServer数据库管理常用的SQL和T-SQL语句

    使用以下 T-SQL 语句可以查看当前数据库所在机器的操作系统参数: ```sql EXEC MASTER..XP_MSVER; ``` 这将返回当前数据库所在机器的操作系统参数,如操作系统的版本、架构、处理器类型等信息。 查看数据库启动参数...

    T-SQL语句创建数据库的存储实验报告

    实验报告“T-SQL语句创建数据库的存储实验报告”主要涵盖了数据库存储结构的理解,特别是信息行结构,以及如何使用T-SQL语句进行数据库存储操作。实验目标旨在让学习者掌握数据库存储的基础知识,包括定长元组、变长...

    T-SQL语言基础 T-SQL语言基础

    T-SQL的这些基础知识构成了对数据库进行查询、更新、删除和插入操作的基础。掌握这些概念对于编写高效的SQL查询和存储过程至关重要。了解和熟练运用T-SQL语言,能帮助数据库管理员和开发人员更好地管理和维护SQL ...

    利用T-SQL语句实现数据库的备份与还原的功能

    在IT领域,特别是数据库管理与维护中,利用T-SQL语句进行数据库的备份与还原是一项至关重要的技能。本文将深入解析如何通过T-SQL语句实现这一功能,重点涵盖以下四个方面: ### 1. 获取SQL Server服务器上的默认...

    T-SQL课件(介绍了T-SQL的一些基本知识)

    T-SQL,全称Transact-SQL,是SQL(结构化查询语言)的扩展,主要用于Microsoft SQL Server数据库管理系统。...学习T-SQL的这些基础知识将有助于理解如何有效地管理和操作数据库,以及如何编写高效的SQL代码。

    T-SQL示例大全(全是T-SQL语句 )

    本压缩包“T-SQL示例大全”提供了丰富的T-SQL语句实例,旨在帮助用户深入理解和熟练运用T-SQL进行数据库操作。 一、T-SQL基础 T-SQL的基础包括数据类型、变量、常量、运算符以及流程控制语句。例如,数据类型包括...

    SQL、T-SQL与PL-SQL的区别

    SQL是关系数据库的标准语言,适用于各种关系数据库管理系统,而T-SQL和PL-SQL分别是SQL SERVER和Oracle的专有语言。T-SQL和PL-SQL在功能上都比SQL强大,提供了更多的功能和优化,但它们也更复杂、更难以掌握。 在...

    Microsoft SQL Server 2008技术内幕:T-SQL查询 样例数据库

    T-SQL是微软SQL Server的主要编程语言,用于管理和操作数据库,执行查询、数据更新以及存储过程等任务。样例数据库为读者提供了实际操作的环境,以便更好地理解和应用书中所讲解的概念。 在T-SQL查询中,有几个关键...

    T-SQL用户指南&T-SQL用户手册打包下载

    T-SQL,全称为Transact-SQL,是SQL(Structured Query Language)的一种扩展,由Microsoft在SQL Server中引入,主要用于数据库管理和数据操作。这个压缩包文件“T-SQL”包含了全面的T-SQL用户指南和参考手册,是学习...

    Inside Microsoft SQL Server 2008 T-SQL Programming

    《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入探讨了SQL Server 2008中的T-SQL编程技术,这是SQL Server数据库管理与开发的核心语言。T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的...

    Microsoft SQL Server 2008技术内幕:T-SQL查询_源代码及附录.zip

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL...通过阅读这本书和实践其中的示例,读者将能够熟练掌握SQL Server 2008中的T-SQL查询,从而更高效地管理和操作数据库。

    《T-SQL 2008 入门》[PDF]

    这本书通过详细讲解语法和实用范例,旨在使读者能够熟练地运用T-SQL进行数据库操作。 首先,书中会深入浅出地介绍T-SQL的基础语法,包括SELECT语句的使用,用于从数据库中检索数据。读者将学习如何使用不同的子句,...

    Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码

    T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中用于数据操作、查询、存储过程和数据库控制的一种扩展SQL语法。此书主要关注于如何高效地使用T-SQL进行数据检索和处理,为数据库管理员和开发人员提供...

    Microsoft SQL Server 2008 T-SQL Fundamentals

    总之,《Microsoft SQL Server 2008 T-SQL Fundamentals》全面覆盖了T-SQL的基础和进阶内容,无论你是初学者还是有一定经验的数据库专业人士,这本书都将提供宝贵的资源,助你提升在SQL Server环境下的T-SQL技能。...

    T-SQL性能调优秘笈 基于SQL Server 2012窗口函数_PDF电子书

    - **T-SQL简介**:T-SQL是Transact-SQL的简称,它是微软SQL Server数据库管理系统所使用的SQL方言,是一种用于管理SQL Server数据库的标准语言。 - **SQL Server 2012版本特点**:SQL Server 2012是Microsoft公司...

    Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf

    《Microsoft SQL Server 2008技术...通过对这本书的学习,读者将能够熟练掌握SQL Server 2008中的T-SQL查询技巧,从而更高效地管理和操作数据库。无论是数据库管理员、开发人员还是数据分析人员,都能从中受益匪浅。

    用T-SQL指令创建数据库和表.pdf

    T-SQL 是一种专门用于 Microsoft SQL Server 的指令语言,用于管理和操作数据库。学生将学习如何使用 T-SQL 语言创建数据库,并在该数据库中创建三张表:Student、Course 和 SC。 在创建表时,学生需要确定表中的列...

    Transact-SQL数据库编程.ppt

    Transact-SQL,通常简称为T-SQL,是SQL语言的一个扩展,尤其适用于微软的SQL Server数据库管理系统。它不仅包含了标准SQL的查询功能,还添加了诸如变量、流程控制、函数和存储过程等高级特性,为数据库开发提供了更...

    实验二 T-SQL语言基础

    在数据库管理领域,T-SQL(Transact-SQL)是SQL的一个扩展,尤其在Microsoft SQL Server中被广泛使用。本实验主要关注T-SQL的基础知识,包括基本语法格式、运算符与表达式、基本语句以及系统函数和用户定义标量函数...

Global site tag (gtag.js) - Google Analytics