简单sql操作
----------------------------- 数据库的有关SQL语句 -------------------------
1、数据库
创建 create database data_name
on primary
(name= ,filename= ,size= ,maxsize= ,filegrowth=),
filegroup [辅助文件组名]
(name= ,filename= ,size= ,maxsize= ,filegrowth=)
log on
(name= ,filename= ,size= ,maxsize= ,filegrowth=)
修改 alter database 原数据库名
modify name=新名字
删除 drop database data_name
2、架构
创建 create schema jiagou
删除 drop schema jiagou
3、辅助文件
添加 alter database data_name
add file(name=file1,filename='d:\file1.ndf',size=10MB,filegrwth=10MB) to filegroup
group1
修改 alter database data_name
modify file(name= ,filename= ,size= ,maxsize= ,filegrowth=)
删除 alter database data_name
remove file file_name
4、日志文件(修改的时候,逻辑名称不能修改)
添加 alter database data_name
add log file (name= ,filename= ,size= ,maxsize= ,filegrowth=)
修改 alter database data_name
modify file(name= ,filename= ,size= ,maxsize= )
5、文件组
添加 alter database data_name
add filegroup group_name
修改 alter database data_name
modify filegroup 原文件组名 name=新文件组名
删除 alter database data_name
remove filegroup 文件组名
--------------------------------- 表的有关SQL语句 --------------------------------
1、表
创建:create table table_name
(
id int identity(1001,3) primary key not null,
st_name nvarchar(10) null,
sex nvarchar(4) default('男'),
gongzi money,
shijian datetime
)
修改表名:exec sp_rename 'table', 'table33' (注意:尽量不要改表名,容易引起其它对象的错误)
删除:drop table table_name
2、表的列(字段)的操作
添加列:alter table table_name
add 列名 列的数据类型 null / not null
删除列:alter table table_name
drop column 列名
修改列的名称: exec sp_rename '表名.字段名', '新的字段名', 'column' (提示:尽量不要改列名,容易引起错误)
修改列的数据类型: alter table table_name
alter column 列名 列的数据类型
3、对数据的操作
插入: insert into table_name(字段1,字段2,字段3) values( 值, 值, 值,)
删除:delete from where stu_name='王伟' and id=3
修改:update table_name set 字段名=值 where id=4
------------------------------------ 主键、外建 (补充) -------------------------
1、创建:
create table class
(
cl_id int primary key,
cl_name nvarchar(10) null
)
create table address
(
add_id int primary key,
add_name nvarchar(10) null
)
create table student
(
stu_id int primary key,
stu_name nvarchar(10) null,
cl_id int foreign key references class(cl_id) null ,
add_id int foreign key references address(add_id) null
)
意义:用于和加强表之间的联系,当在添加,修改和删除数据时,保持几张表中数据的一致性
------------------------------ SQL查询语句 --------------------------------
1、排序
select top(3) * from student order by cl_id desc
2、分组
select class_id ,sum(score) as chengji from student group by class_id
having sum(score)>=250
order by sum(score) desc
提示:聚合函数不能在where中使用,所以才用到了having
3、清空表
truncate table table_name
4、消除重复列
select distinct 列名 from table_name (提示:只能显示出此列,其它列显示不出来)
5、select * from table_name where name in ('张三','李四','王五')
select * from table_name where score in (100,90,87,89,96)
------------------------------- 表联接 ---------------------------------
1、内联接:select * from student as s inner join class
as c on s.cl_id=c.cl_id where .....
2、左外联接:返回第一个已命名的表中符合条件的所有行
select * from student as s left join class as c on s.cl_id=c.cl_id
where ....
3、右外链接:返回第二个已命名的表中符合条件的所有行
select * from student as s right join class as c on s.cl_id=c.cl_id
where .....
4、完全外联接:返回左表、右表中的所有值
select * from student as s full join class as c on s.cl_id=c.cl_id
5、交叉联接:将从被联接的表中返回所有可能的行组合(会生成一个笛卡尔积)
select * from student as s cross join class as c
where ....
6、两个以上的表的联接:
select * from student as s join class as c
on s.cl_id=c.cl_id join address as a on s.add_id=a.add_id
where s.name='张三'
7、union 结合多个表的数据
select stu_id as '学生编号' , stu_name as '名字' from student1
union
select id ,name from student2
union
select s_id , s_name from student3
--------------------------- 子查询 ----------------------
1、把子查询用作派生表
可用子查询产生一个派生表,用于代替where、having、from子句中的表,注意要用别名来引用这个派生表
select s.stu_name,s.cl_id from (select * from student where stu_id >2) as s
where s.stu_name='王二'
2、把子查询用作表达式
在sql语句中,所有使用表达式的地方,都可以用子查询代替,此时子查询必须取值为单个列值的表,于是这个子查询可以代替where子句中包含in关键字的表达式
select * from student where stu_id not in (select id from student where stu_id>2)
3、使用子查询关联数据
关联子查询可以作动态表达式,因为它随着外层查询的每一次变化而变化
例1:
select stu_id,stu_name,cl_id,(select count(stu_id) from student) as 记录条数 from student
例2:
select * from student as s join class as c on s.cl_id=c.cl_id
where not exists(select * from class where c.cl_id>3)
--------------------------- 变量、条件语句、循环语句 --------------------------
1、变量
(1)局部变量---可以select、set进行赋值
例一:declare @i int
select @i=count(*) from student
print @i
例二:declare @sname varchar(4)
set @sname='张三'
print @sname
(2)全局变量---只能用系统提供的,用户不能定义,所以只了解一下书上70页的就可以
2、条件语句
(1) if...else...语句
declare @sex_id int
declare @sex_name nvarchar(4)
select @sex_id=sex from student (where ...)
if @sex_id=1
begin
set @sex_name='男'
end
else
begin
set @sex_name='女'
end
print @sex_name
(2) case语句
select stu_name as 姓名, (case cl_id
when 1 then '一班'
when 2 then '二班'
when 3 then '三班'
when 4 then '四班'
else '暂无班级'
end ) as 班级 from student
3、循环语句
while 语句:
declare @i int
declare @name nvarchar(10)
set @i=1
while @i<13
begin
select @name=stu_name from student where stu_id=@i
print @name
set @name=''
set @i=@i+1
end
------------------------------ 事务 ------------------------------
1、事务的概念
事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。这特别使用于多用户同时操作的数据通信系统:订票、银行、保险公司以及证券交易系统等。需要使用事务的SQL语句通常是更新和删除操作等。
2、创建事务
开始事务:begin transaction
提交事务:commit transaction
回滚事务:rollback transaction
@@error全局变量显示错误号
3、例题
begin transaction /* 开始事务 */
declare @error_sum int /* 错误数量 */
declare @sum int /* 人数 */
declare @a nvarchar(10) /* 转钱者 */
declare @b nvarchar(10) /* 得钱者 */
declare @x int /* 转账金额 */
set @error_sum=0
set @a='于聪'
set @b='许'
set @x=2000
select @sum=count(*)from icbc where users=@a or users=@b
if @sum = 2
begin
set @error_sum=@error_sum+0
end
else
begin
set @error_sum=@error_sum+1
end
update icbc set moneys=moneys-@x where users=@a
set @error_sum=@error_sum + @@error
update icbc set moneys=moneys+@x where users=@b
set @error_sum=@error_sum + @@error
if @error_sum > 0
begin
print '操作失败,执行回滚'
rollback transaction /* 回滚事务 */
end
else
begin
print '操作成功'
commit transaction /* 提交事务 */
end
----------------------------- 视图 -------------------------------
视图就是查询语句的别名,而这个别名就称为视图
视图的分类:标准视图、索引视图、分区视图
1、创建视图
语法:create view 视图名称(列的别名)
as (select 查询语句)
create view v_student(sname,cname)
as (select s.stu_name,c.cl_name from
student as s join class as c on
s.cl_id=c.cl_id)
2、删除视图
drop view 视图名称
3、修改视图
语法跟创建视图是一样的:alter view 视图名(别名1,别名2)
as
(select …………)
4、获取视图的定义语句
exec sp_helptext 视图名称
5、查看视图的列的信息
exec sp_help 视图名称
6、查看视图的虚拟表
select * from 视图名称
7、更改视图内的数据
update from 视图名 set ..... where ....
---------------------------- 存储过程 ----------------------------------
1、创建无参数存储过程
语法: create procedure 过程名
as
sql语句体
例题:create procedure p_student
as
select * from student as s join class as c
on s.cl_id=c.cl_id where s.stu_id>2
2、创建带输入参数的存储过程
语法:create procedure 过程名
@参数1 数据类型(=默认值),
@参数2 数据类型(=默认值)
as
select 语句体
例题:create procedure p_student
@name nvarchar(10)
as
select * from student as s join class as c
on s.cl_id=c.cl_id where s.stu_name=@name
3、创建带输入、输出参数的存储过程
语法:create procedure 过程名
@参数1 数据类型 output,
@参数2 数据类型(=默认值)
as
sql 语句体
return
例题:create procedure p_stu_cla
@cname nvarchar(10) output,
@sname nvarchar(10)
as
select @cname=c.cl_name from student as s join class as c
on s.cl_id=c.cl_id where s.stu_name=@sname
return
调用:declare @cname nvarchar(10)
exec p_stu_cla @cname output , '王二'
select @cname
4、存储过程的管理
查看存储过程的定义
exec sp_helptext 过程名
查看存储过程的信息
exec sp_help 过程名
删除存储过程
drop procedure 过程名
修改存储过程
alter procedure 过程名
@参数名 数据类型=默认值 output
as
sql 语句
return
------------------------------------- 函数 --------------------------------------
Sql server2005支持三种用户定义函数:标量函数、内嵌表值函数、多语句表值函数
1、标量函数
标量函数是根据输入参数值的不同来获得不同的函数值,标量函数可以有多个输入参数,但是只能有一个返回值;标量函数体包括一条或多条sql语句,由begin开始,以end 结束;用returns字句定义函数返回值的数据类型,并返回函数值
语法: create function 函数名(标量参数 标量数据类型)
returns 函数返回值的类型
as
begin
函数体
return 变量/标量表达式
end
例题: create function f_count( @sname nvarchar(10) )
returns nvarchar(10)
as
begin
declare @cname nvarchar(10)
select @cname=cl_name from student as s jion class as c
on s.cl_id=c.cl_id where s.stu_name=@sname
return @cname
end
调用函数: declare @name nvarchar(10)
select @name=架构名.f_count('王二')
print @name
2、内嵌表值函数
内嵌表值型函数以返回的都不是一个标量数据,而是一个表,返回的表值函数还可以提供参数化视图功能。
语法: create function 架构.函数名(标量参数 数据类型)
returns table
as
return (select语句)
调用函数:select * from 架构.函数名(参数)
简单sql操作的更多相关文章
- mysql简单的sql操作语句
一,常用.简单的SQL操作语句 1.数据库操作: 1)创建数据库: create database database_name: 创建并设置字符编码 create database database_ ...
- SqlServer简单的操作XML以及SQl的 try catch等统一格式
1:SqlServer简单的操作XML: ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money] @Create_By VARCHAR(), @ ...
- 如何更简单方便地执行SQL操作?
现在公司使用mybatis作为DAL层的框架. 使用起来比较简单,使用xml进行SQL的书写,java代码使用接口执行. 但在写一些简单SQL的时候会显得非常繁琐: xml和java分离(设计上为了解 ...
- salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量 ...
- 下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念
本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...
- ado.net的简单数据库操作(一)
摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在w ...
- Springboot第五篇:结合myBatis进行SQL操作
前提:和之前同样的,本篇会从前端和后台一起讲述关于SQL的select操作(其他操作原理大致类似,不多做解释了). 大致流程:前端通过AJAX将数据发送到后台的路由,后台路由会根据发送的数据进行SQL ...
- ArcSDE10.2.2使用SQL操作ST_Geometry时报ORA-28579或ORA-20006错误
ArcSDE10.2.2使用SQL操作ST_Geometry时报ORA-28579或ORA-20006错误 1.测试环境说明 ArcSDE版本:10.2.2 Oracle版本:12.1.0.1和11. ...
随机推荐
- mvc中Scripts.Render、Styles.Render
一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件 2.BundleConfig就是一个微软新加的 一个打 ...
- 去除DEDECMS后台预览文章URL地址多余的数字信息
在使用织梦模板时发现这样一个问题:在后台预览文章的时候,出现的文章网址尽管是静态URL,但是会在网址的尾部出现问号并跟随一个时间戳,在复制URL时就显得很不方便.那么如何解决这一问题呢? 经过查找资料 ...
- MySQL 的 RowNum 实现
MySQL 的 RowNum 实现 MySQL 下面没有RowNum,排序后序号却无法得到,比较麻烦! 在网上找了再三,通过比较,确认了以下的方法是可行的 : rownum, CollectSn ,b ...
- Linux: vi 编辑器中文乱码
[问题] vi编辑器中文乱码 [解决方案] vi /etc/sysconfig/i18n改成如下即可:LANG="en_US.UTF-8"LANGUAGE="zh_CN. ...
- PHP基于数组的分页函数(核心函数array_slice())
关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页 ...
- python 排序
python 写的排序,实现起来还是比较简单 #快速排序 def qsort(L): if len(L)>1: return qsort([i for i in L[1:] if i<L[ ...
- Aborting commit: 'XXX' remains in conflict
Aborting commit: 'XXX' remains in conflict 错误 本地也删除了一个文件夹,用svn 的repo-brower 删除了服务器上的对应的文件夹 ,再次comm ...
- 慕课网JavaScript入门篇课程笔记
1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...
- iOS定位到崩溃代码行数
不知道大家是不是在代码调试过程中经常遇到项目崩溃的情况: 比如: 数组越界: 没有实现方法选择器: 野指针: 还有很多很多情况.......昨天学到了一种可以直接定位到崩溃代码行数的一个命令,记录一下 ...
- Hibernate学习笔记
一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...