SQL语言常用操作学习汇总

目录

SQL语言基础

1.sql语言的组成

2.创建语句

2.修改语句

 3.删除语句

4.简单数据查询

5.复杂数据查询

6.数据插入

7.数据更新

8.数据删除

9.视图

数据库编程

1.T-SQL语言

2.存储过程

3.触发器


SQL语言基础

1.sql语言的组成

        主要有命令(函数),字句,运算符,加总函数及通配符

        (1)sql命令在意思上理解就是用户对数据库进行的一系列动作,这些动作包含建立,查询,增删,更新等等。其中还可以细分为数据定义语言,数据查询语言,数据操作语言,数据控制语言。数据定义语言可以用来建立新的数据库,数据表,字段及索引等,数据操作语言则用来新建查询表,筛选,排序,修改,增删等动作。

        数据定义语言可以完成表,视图,索引,存储过程,用户和组的建立和撤销。其主要动词有create,alter和drop.

        create:创建命令动词,创建数据库,创建表,创建视图等。

        alter:修改已创建好的相关命令,如修改表结构,修改视图等。

        drop:删除用create创建的相关命令,如删除表,删除视图等。

        数据处理语言主要是完成数据的查询,增加,修改,删除和运算等功能。其主要动词有select

,update,insert,delete.

        select:查询命令,可理解为从一堆数据中选择出自己所需要的数据。

        insert:插入命令,将数据输入数据库中。

        update:更行命令,相较于插入,更新命令范畴更大,不单单值数据数量的添加,更多的是对数据本身进行修改。

        delete:删除命令,将符合条件的相关数据进行删除。

        (2)子句

        子句在sql语言中主要是来搭配上述的命令动作使用,(筛选)设定命令的操作对对象。

        子句from用于指定数据表。

        子句where可以理解为当的意思,主要用来设定条件。

        子句group by中文意思为分组,通常是将所需的数据以分组的形式显示出来,由此达到一个更全面的视觉效果,当对数组后的数据进行条件设置时,需要用having子句搭配使用。

        子句order by的中文意思为排序,将输出的数据进行排序显示。

        (3)运算符

        运算符分为逻辑运算符和比较运算符,附加在子句中,来是的条件的设置更为多样化。

        1.逻辑运算符

        and逻辑与:要同时符合左右两边的条件。

        or逻辑或:表示左右两边条件满足一个即可。

        not逻辑非:取反的意思。

        2.比较运算符

        <(小于),>(大于),=(等于),<>(不等于)。

        3.between:理解为在.........之间,设置取值范围。

        4..like:用于通配符中,理解为像的意思。

        一般格式为:列名 like 匹配字符串

        5.in:理解为在......之内,用于集合的设定。

        (4)统计函数

        用法有点类似于excel中的函数,主要通过现成的函数来进行一系列的基础运算。

        count:统计个数

        sum:计算和

        avg:计算平均数

        max:求最大值

        min:求最小值

        (5)通配符

        sql语言中的通配符分为三类(%,_,[]),所谓的通配符就是当前urgent对所要设定的对象感到模糊时,可以通过通配符来匹配符合模糊设定条件的数据。

        _:匹配任意一个字符

        %:匹配0个或多个字符

        []:匹配[]中的任意一个字符,若里面多个字符是连续的,可用-表达

        [^]:不匹配[^]中的任意一个字符

2.创建语句

        1.创建数据库

基本语法格式为:

create database database_name        //指定数据库名

on(file子句)      //指定数据库文件和文件属性

log on(file子句)    //指定日志文件属性

一个完整的数据库文件是由一个主数据库文件,若干次要数据库文件和若干日志文件构成。其中,主数据库文件的扩展名为.mdf,次要数据库文件扩展名为.ndf,日志文件扩展名为.ldf

参数说明:

on:指定显式定义用来存储数据库数据部分的磁盘文件

n:占位符,表示可以为新数据库指定多个文件

log on:指定显式定义用来存储数据库日志的文件磁盘

primary:将创建数据库产生的数据文件放在主文件组里

size:指定义文件的大小

maxsize:指定定义的文件可以增长到的最大值

unlimited:指定定义的文件将增长到磁盘变满为止

filegrowth:指定定义的文件的增长量

        2.创建数据表

基本语法格式为:

create table table_name
(列名 数据类型 列级完整性约束,列名 数据类型 列级完整性约束.....,表级完整性约束)

列级完整性约束条件:

null 和not null:空和非空约束

default:默认值约束

primary key:主键约束

unique:唯一性约束

check 逻辑表达式:表达式约束

表级完整性约束条件:

primary key:定义主键

foreign key:定义外键

check 逻辑表达式:表达式约束

2.修改语句

        1.修改数据库

基本语法格式为:

alter database database_name
add file|remove file|add log file|remove log file
(file子句)

        2.修改数据表

基本语法格式为:

alter table table_name
alter 列名 新数据类型    //修改列定义
add 列名 数据类型<约束>  //添加新列
drop 列名   //删除列
add constraint 约束名 约束定义   //添加约束
drop constraint 约束名 约束定义    //删除约束

 3.删除语句

        1.删除数据库

基本语法格式为:

drop database database_name

        2.删除数据表

基本语法格式为:

drop table table_name

需要注意的是,如果该表有外键引用,则需要先删除粗外键所在表

4.简单数据查询

基本语法格式为:

select distinct|all 列名 from 表名
where 行选择条件
group by 分组依据列
having 组选择条件
order by 排序依据列

其中:

distinct|all:all表示显示表中所有满足条件的所有列,distinct表示去除重复列

where:用于指定行选择条件

group by 用于对检索到的记录进行分组

having:用于指定组的选择条件

order by:用于对查询的结果进行排序

注意:如要查询经过计算的列,直接在select子句的列名上进行计算,也就是说,列名的位置可用是多个包含列的计算的表达式

5.复杂数据查询

        1.内连接

内连接是一种常用的连接方式,使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组成新记录

内连接主要有两种连接方式,连接操作是在where子句中执行的,连接称为thera连接,语法格式为:

select 列名 ... from 表名 ... where  连接条件

在连接条件中指明两个表按什么条件进行连接,连接条件中的比较运算符称为连接谓词,连接条件的一般格式为:

表名.列名 比较运算符 表名.列名

比较运算符包括=,>,<,<=,>=,!=,最常见的是=,称为等值连接

另一种连接方式为ANSI连接,连接是在join子句中执行的,语法格式为:

select 列名 ... from 表名 join 表名 on 连接条件 where 子句

        2.外连接

在连接操作中,只有满足连接条件的元组才能作为结果输出,但有时也希望输出哪些不满足连接条件的元组的信息,比如查看全部课程的被选修情况,包括有学生选修和没有学生选修的课程。如果用内连接实现,则只能找到有学生选修的课程,因为内连接的结果首先是要满足连接条件sc.cno=course.cno.对于在course表中有单在sc表中没有的课程(没人选修的课),所以这种情况就需要使用外连接来实现

外连接是只限制一张表的数据必须要满足连接条件,而另一张表中的数据可以不满足连接条件,语法格式为:

from 表名 left|right join 表名 on 连接条件

left join称为左外连接,rigtht join称为右外连接。左外连接的含义是限制表2的数据必须满足连接调价你,而不管表1的数据是否满足连接条件,均输出表1的所有内容。右外连接相反,是限制表1中的数据必须满足连接条件,而表2中的数据均输出。

        3.使用TOP限制结果集

在使用select语句进行查询时,有时只希望列出结果集中的前几个结果,而不是全部结果。例如,在显示学生成绩时,只显示前三名的学生姓名,这时就可以用top谓词来限制输出的结果

基本与语法格式为:

top n with ties

n表示显示前n个数据,with ties表示包括并列的结果

top谓词写在select单词的后边(如果有distinct的话,则在distinct之后),查询列表的前面

注意:使用top 谓词时最好与order by 子句一起使用,因为这样前几名才有意义。

        4.嵌套查询

在sql语言中,一个select...from ...where语句称为一个语句块

如果一个select语句嵌套在一个select语句中,则称之为子查询。而包含子查询的语句称之为外层查询。一个子查询也可以写在另一个子查询中。为了和外层查询有所区别,总是把子查询写在括号中。和外层查询类似,一个子查询其本质也是一个完整的select语句。

1.使用子查询进行基于集合的测试

使用子查询进行基于集合的测试时,通过运算符in或not in,讲一个表达式的值与子句查询返回的结果进行比较,基本语法格式为:

select 列名 from 表名 where 表达式 not in|in (子查询语句)

2.使用子查询进行比较测试

使用子查询进行比较测试时,通过比较运算符将一个表达式的值与子查询返回的值进行比较

基本语法格式为:

select 列名 from 表名 where 表达式 比较运算符 (子查询语句)

3.使用子查询进行存在性测试

通常使用exists谓词,基本语法格式为:

where not exists|exists (子查询语句)

带exists谓词的子查询不返回查询的结果,只返回逻辑真或假

注意:对于否定条件的查询都应该用子查询来实现,而且应该将否定放在外层查询中

6.数据插入

insert语句主要用于实现向数据表中添加新记录的操作,其语法格式为:

insert 表名 values(v1,v2,...)    //v1,v2...表示对应列插入的值
其也可以根据需要指定插入数据的列
insert 表名(c1,c2...) values(v1,v2...)    //c1,c2...表示列名,c和v一一对应

除了基本的数据查询操作,insert语句还可以与select语句相结合以实现数据表之间的复杂插入或复制,基本语法格式为:

insert 表名(c1,c2...)select c1,c2... from 表名   //select查询所得列的个数必须与Insert所需插入列的个数相同

7.数据更新

update语句用于秀阿贵数据表中不符合要求的数据或者是错误的字段,其语法格式为:

update 表名 set 需要更新的列名=更新后的值 where 条件(即筛选需要更新的数据行)

如:

将“计算机系”系全体学生的成绩置零。

update sc set grade=0 from sc join student on sc.sno=student.sno where sdept='计算机系'

同样update也和insert一样,可以与select语句结合使用,基本语法格式为:

update 表名 set (c1,c2...)=(select语句) where 条件(即筛选出需要更新数据的行) 

注意:select查询所得列的个数必须与update所需更新列的个数相同

8.数据删除

delete语句用于从数据表或视图中删除行,其语法格式为:

delete from 表名 where 条件(即筛选出需要删除的行)

同样,dalete也和updat一样可以与select语句结合使用,语法格式为:

delete 表名 where 列名=(select语句)

9.视图

视图是从一个或多个表中导出来的虚拟表,是一种不真正存在的虚拟表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中。视图的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变。

        1.视图的创建

其基本代码格式为:

create view 视图名 视图列名 as (select c1,c2... from 表名 where 条件)(即相当于后面就是一个查询语句)

注意:如果没有指定视图的列,则视图的列名将使用与select语句中查询列名相同的名称

        2.视图的修改

其基本代码格式为:

alter view 视图名 视图列名 as (select c1,c2... from 表名 where 条件)(即相当于后面就是一个查询语句)

        3.视图的删除

基本代码格式为:

drop view 视图名

数据库编程

1.T-SQL语言

        1.注释

        单行注释:--

        多行注释:/* */

        2.常量

        字符串常量要使用单引号括起来,若单引号的字符串中包含单引号,则里面的单引号要双写

        3.变量

        变量是指在程序运行过程中其值可以改变的量。变量的三要素:变量名,变量类型和变量值

        全局变量由系统定义和维护,其名称前面有两个@@,而局部变量由用户定义和使用,其名称前面有一个@

        局部变量可以用declare语句定义,其格式为:

declare @局部变量名 数据类型

         局部变量被定义后期初始值为null,如果之后要给其赋值,可使用set 或select语句,基本语法格式为:

set @局部变量名=表达式
select @局部变量名=表达式

        4.流程控制语句

        包括if,while,case,基本与c语言一样,这里就不进行赘述了

        需要注意的是:里面没有{},语句块用begin...end表示

2.存储过程

存储过程其实可以理解为c语言里面的一个函数,创建好以后,还需要调用才能有效果

        1.存储过程的创建及调用

        创建基本语法格式为:

create proc 存储过程名 @形式参数 数据类型 [=默认值] [output] as sql语句(包括增删改查)

        调用基本语法格式为:

exec 存储过程名 @形参=实参值 [@变量 output]

注意:output表示指定该参数为=返回参数

        2.修改存储过程

        基本语法格式为:

alter proc 存储过程名 @形式参数 数据类型 [=默认值] [output] as sql语句(包括增删改查)

        3.删除存储过程

        基本语法格式为:

drop proc 存储过程名

3.触发器

触发器是一种特殊的存储过程,当对数据表进行插入,修改或者删除时,触发器即可自动执行,不能不调用,也不可传递参数。

        1.触发器创建

        基本语法格式为:

create trigger 触发器名 on 表名 for|after|instead of  insert|update|delete(即引发触发器的操作) as sql语句(即触发器被触发后会执行的操作)

        for|after:使用此修饰的称为后触发型触发器,指定触发器只有在引发触发器的sql语句执行完成,并且所有的约束检查完成后,才执行此触发器

        instead of:使用此修饰的称为前触发型触发器,与后触发型触发器刚好相反

        注意:对于后触发型,可以在同一操作上建立多个触发器;对于前触发型,在同一种操作上只能建立一个触发器;当触发器运行后,系统会自动产生两张临时工作表:inserted表和deleted表。这两张表的结构同建立触发器的表的结构相同,而且只能用在触发器代码中。inserted表中保存了insert操作中新插入的数据和update操作中更新后的数据,deleted表中保存了delete操作中删除的数据和update操作中更新前的数据。当触发器执行完毕后,两张表会自动消失;后触型触发器可以进行回滚操作,rollback,即当操作不正确时,回到此触发器执行前数据库的状态

        2.修改触发器

        基本语法格式为:

alter trigger 触发器名 on 表名 for|after|instead of  insert|update|delete(即引发触发器的操作) as sql语句(即触发器被触发后会执行的操作)

        3.删除触发器

        基本语法格式为:

drop trigger 触发器名

                                        未经本人允许,请勿转载!!!

你可能感兴趣的:(sql,数据库,mysql)