万能的 SQL编程
简介:T-SQL语句创建库、创建表和听、和添加约束等。T-SQL是数据库结构化查询语言,常见的增加、删出、修改、查询、创建库和创建表的语句,还支持定义变量、输出语句。逻辑控制语句(IF、CASE、WHERE等)、过程或函数等,这些称为T-SQL编程。
T-SQL中的变量分为局部变量和全局变量。局部变量的使用是先声明,再赋值。全局变量由系统定义和维护,可以直接使用,但一般不定全局变量。
变量是一块内存空间的表示,变量是存储数据的容器。数组是一连串的空间,所以有下表。
3.1使用变量
变量是可以存储数据值得对象,可以使用局部变量向SQL语句传递数据。可以声明许多变量以便临时使用。声明变量以后,可以用一条T-SQL语句设置该变量的值。处理中的下一条语句可以从该变量中检索数值,并给出结果。
局部变量:T-SQL中,局部变量的名称必须以标记@作为前缀。语法:
DECLARE @variable_name DateType
variable_name为局部变量的名称,DataType为数据类型。
例如:
DECLARE @name varchar(8) --声明存放姓名变量name,最多可以存储8个字符
DECLARE @number int --声明一个存放学好的变量number
局部变量的赋值有两种方法:使用SET语句或SELECT语句
语法
SET @variable_name =value
或者
SELECT @varible_name=value
示例1
/*--查询李文才的信息--*/
DECLARE @name varchar(8) --学生姓名
set @name ='李文才' --使用SEL赋值
select StudentNo,StudentName,BornDate,Address
from Student
where StudentName =@name
/*--查找与李文才学号相邻的学生信息--*/
DECLARE @studentNo int --学号
--使用SELECT赋值
select @studentNo=StudentNo from student
where StudentName =@name
select StudentNo ,StudentName,BornDate ,Address
from Student
where (StudentNo =@studentNo+1) OR (studentNo =@studentNo -1)
GO
SEL语句与SELECT语句的区别 及使用上的不同
SEL | SELECT | |
同时对多个变量赋值 | 不支持 | 支持 |
表达式返回多个值时 | 出错 | 将返回的最后一个值赋给变量 |
表达式返回值时 | 变量被赋值为NULL | 变量保持原值 |
DECLARE @addr nvarchar(100),@name nvarchar(100) --声明多个局部变量
set @addr =' ',@name='张三' --发生语法错误
select @addr='北京',@name='张三' --为两个局部变量@addr和@name赋值 set @addr=(select address from Student) --发生语法错误
select @addr=Address from Student --最后一条记录的Address列值
set @addr=(select Address from Student where 1<0)
--查询无结果时,@addr被赋值为NULL
select @addr='北京'
select @addr=Address from student where 1<0
--查询无结果时,@addr保持原值
--01.在SQL中如何定义一个变量??
--变量分为局部变量和全局变量:
局部变量:@作为前缀,如@age
全局变量以@@作为前缀,如@@version
全部变量由系统定义和维护,我们只能读取,不能修改
--SQL中变量也分成两类:局部变量和全局变量
--011.局部变量
--int
declare @num int
set @num=0
print @num
--字符串
declare @name nvarchar(32)
set @name='张三'
print @name
--日期
declare @mydate datetime
set @mydate=getdate()
print @mydate
--小数
declare @price decimal(18,2)
set @price=18.89
print @price
--程序的boolean对应数据库中的bit 在SQL Server中认为就是假,非就是真
declare @sex bit
set @sex=-1000
print @sex
--查询和微冷的雨相邻的学生信息
--定义一个变量,保存微冷的雨的学号
declare @stuno int
select @stuno=StudentNo from student
where studentno=23311
print @stuno
--李小龙
select * from student
where studentno=@stuno-41
--习大大
select * from student
where studentno=@stuno+5
--局部变量练习一
--set与select区别
--01.set不支持给多个变量赋值的,但是select支持
declare @num1 int,@num2 int
select @num1=studentno,@num2=gradeid from student
where studentno=23270
--02.表达式返回多个值的时候,set会出错,但是select会将最后一个值赋值给变量
declare @result nvarchar(20)
select @result=studentname from student
print @result
select * from student
declare @myresult nvarchar(20)
set @myresult=(select studentname from student)
print @myresult
--03.当表达式没有返回值时,set变量会被赋值为null
declare @myresult nvarchar(20)
set @myresult='李四'
set @myresult=(select studentname from student where 0>100)
if(@myresult is null)
begin
print '是空'
end
USE ajax
select * from admin
where uaddress=null
null--不代表空,代表不知道。
use myschool
declare @myresult nvarchar(20)
set @myresult='张三'
select @myresult=studentname from student where 0>100
select @myresult
--03.什么场景下选用select,什么场景下选用set
--如果是从某一张表中获取数据赋值给某个变量,那么只能用select
--其他的场景下两个等价
declare @tag nvarchar(2)
set @tag='★'
print @tag
print @tag+@tag
print @tag+@tag+@tag
print @tag+@tag+@tag+@tag
print @tag+@tag+@tag+@tag+@tag
--go的位置:结论:如果语句是select,那么go关键字可以和select语句位于同一行,其他语句要另起一行.
--go的含义是将go之前所有的语句看成是一个可执行单独,用白话来说,就是将一堆sql语句,一次性的交给SQL Server引擎处理.
select * from student
select * from grade
go
create table test
(
id int primary key not null,
name nvarchar(20)
)
go
select dateadd(yy,2,getdate())
--*************************1.局部变量案例*********************************************
--**************************练习********************************************
--练习:查询学号是(李小龙)的学生姓名和年龄,并输出比他小岁的学员信息(姓名和年龄)
--01.先找出李小龙的年龄@age
declare @age int
select @age=datediff(yy,birthday,getdate()) from student
where studentno=23270
--02.where 年龄=@age-1
select studentname,datediff(yy,birthday,getdate())
from student
where datediff(yy,birthday,getdate())=@age-1
--**************************3.SQL Server数据类型转换**********************************
--在SQL Server中数据类型转换有两种方式
--方式一:Cast(要转换的变量as 目标类型)
declare @num int
set @num=20
print '我的年龄是'+cast(@num as nvarchar(20))+'岁'
print '我的年龄是'+convert(nvarchar(20),@num)+'岁'
--日期类型转字符串
declare @date datetime
set @date=getdate()
print '今天是'+convert(nvarchar(20),@date,120)
--方式二:Convert(目标类型,要转换的变量,style)
--**************************4.floor和ceiling函数********************************
--floor:
select floor(1.92) --向下取整
--ceiling
select ceiling(1.01) --向上取整
--**************************5.逻辑控制语句*****************************************
--**************if else while case end******************
--现在定义一个变量,判断该变量的值是否大于
declare @num int
set @num=6
if(@num>=50)
print '请根据您的身体状况选择性观看'
else
begin
print '年龄小于,不能观看'
print '你能看到我吗'
end
05.if--else的使用
--练习:
--统计并显示2013-08-09 的oop考试平均分
--如果平均分在70分以上,显示“考试成绩优秀”,并显示前三名学生的考试信息
--如果在以下,显示“考试成绩较差”,并显示后三名学生的考试信息
--定义一个变量保存oop对应的课程编号
declare @subid int
select @subid=SubjectId from Subject
where subjectname='oop'
--定义一个变量,保存平均分
declare @avg int
--如何求2013-08-09 oop 平均分
select @avg=AVG(StudentResult) from result
where examdate>='2013-08-09' and examdate<'2013-08-10'
and subjectid=@subid
--判定@avg和的关系
if(@avg>=70)
begin
--01.打印成绩优秀
print '成绩优秀'
--02.显示前名学生成绩信息
select top 3 studentno,studentresult from result
where examdate>='2013-08-09' and examdate<'2013-08-10'
and subjectid=@subid
order by studentresult desc
end
else
begin
print '成绩好烂!罚吃番薯'
End
declare @num int
set @num=5
if(@num=1)
begin
print '1'
end
else if(@num=2)
begin
print '2'
end
else
begin
print 'aa'
end
06.while 循环
生命诚可贵,爱情价更高。若为学习故,二者皆可抛。
--在SQL 中,只有while一种循环,没有do-while和for循环
--并且没有while(true)的写法,可以使用while(1=1)替代。
--注意:SQL中比较是否相等,用单等号(=)
--求出1到100之间所有偶数的和
//1 ----100之间所有偶数的和
int sum = 0; //保存总和
int num = 1;
while (num<=100)
{
//判定当前num和2的关系
if (num%2==0)
{
sum = sum + num;
}
//num++
num++;
}
Console.WriteLine(sum);
while(9=9)
begin
print '11'
end
--int count = 0;
-- for (int i = 0; i <= 100; i++)
-- {
-- if (i%2==0)
-- {
-- count += i;
-- }
-- }
-- Console.WriteLine(count);
-- Console.ReadLine();
--注意点:每一次更改变量值的时候,都要加上set关键字
--在SQL Server中不支持++,支持+=
--在SQL Server中,对比变量使用=
01.1到100之间所有偶数的和
--01.定义一个变量,保存总和
declare @sum int
set @sum=0
--02.定义一个初始变量
declare @num int
set @num=1
--03.进行while循环
while(@num<=100)
begin
--判定
if(@num%2=0) --代码执行到这里,证明@num是偶数
begin
set @sum+=@num
end
set @num+=1
end
--出了循环,打印总和sum
print @sum
02.打印直角三角形
*
**
***
****
*****
--用循环的方式打印出直角三角形(不是重点,是难点)
declare @i int
declare @j int
declare @str nvarchar(100)
set @i=1
set @j=1
set @str=''
while(@i<=5)
begin
while(@j<=@i)
begin
set @str+='*'
set @j+=1
end
print @str
set @i+=1
end
declare @str2 nvarchar(200)
declare @count int
declare @result nvarchar(200)
set @str2='*'
set @count=0
set @result=''
while(@count<5)
begin
set @result+=@str2
print @result
set @count+=1
end
print '你好'+char(9)+'吃饭'
07.设置输出结果的格式
--****************************6.设置输出结果的格式***************************************
--如果我们想让【结果】和【消息】窗口在同一个窗口显示,那么我们可以
--点击工具→选项→查询结果→SQL Server界面,将选项改成以文本形式显示结果
--*****************************************************************************
use myschool
select * from student
--内容回顾
/*
1.局部变量
declare @num int
set @num=5
print @num
2.全局变量:一般不会自己定义全局变量
@@error:捕获上一条SQL宇语句的错误号。如果返回证明上一条语句没有问题
3.while:
while(1=1)
begin
end
if --else
4.类型转换
convert(目标数据类型,要转换的变量,120) cast(变量as 目标数据类型)
*/
select * from student
--****************** 7.经典while循环加分题目***************************************
--检查学生“oop”课最近一次考试是否有不及格(60分及格)的学生。
--如有,每人加2分,高于95分的学生不再加分,直至所有学生这次考试成绩均及格
--***********************************************************************
--01.看一下oop课程最近一次考试分以下人数
--准备一个变量,保存不及格人数,科目编号,最近考试时间
--01.科目编号
select * from result
declare @subid int
select @subid=subjectid from subject
where subjectname='oop'
--02.最近一次考试时间
declare @mydate datetime
select @mydate=max(examdate) from result
where subjectid=@subid
--03.不及格人数
declare @num int
select @num=count(1) from result
where subjectid=@subid
and examdate=@mydate
and studentresult<70
--04.
while(@num>0) --有成绩低于分的学员,
begin
--每个人+2分,但是分以上不加分
update result set studentresult+=2
where studentresult<95
and subjectid=@subid
and examdate=@mydate
select @num=count(1) from result
where subjectid=@subid
and examdate=@mydate
and studentresult<70
print @num
end
select * from result
order by subjectid,examdate
08.Case End 经典练习
--Case End在面试的时候,会换一种方式考察,就是行转列思想。
--*************************8.Case End 经典练习**************************************
--采用美国ABCDE五级打分制显示学生oop课最近一次考试成绩(姓名等级)
--A级: 90分以上
--B级:80-分
--C级: 70-分
--D级:60-分
--E级:60分以下
--*****************************************************************************
declare @subid int
declare @maxdate datetime
select @subid=subjectid
from subject
where subjectname='oop'
select @maxdate=max(examdate)
from result
where subjectid=@subid
select studentname,等级=
case
when studentresult>=90 then 'A'
when studentresult>=80 then 'B'
when studentresult>=70 then 'C'
when studentresult>=60 then 'D'
else 'E'
end
from student,result
where student.StudentNo=result.StudentNo
and subjectid=@subid
and examdate=@maxdate
select * from result
--方式二
declare @subid int
declare @maxdate datetime
select @subid=subjectid
from subject
where subjectname='oop'
select @maxdate=max(examdate)
from result
where subjectid=@subid
select studentname,等级=
case
StudentResult
when 90 then 'A'
when 80 then 'B'
when 70 then 'C'
when 60 then 'D'
else 'E'
end
from student,result
where student.StudentNo=result.StudentNo
and subjectid=@subid
and examdate=@maxdate
--方式二:when后面不是区间,而是定值的时候
--可以使用该方式
declare @subid int
declare @date datetime
select @subid=subjectid from subject
where subjectname='oop'
select @date=max(examdate)
from result
where subjectid=@subid
select studentname,等级=
case studentresult
when 90 then 'A'
when 80 then 'B'
when 70 then 'C'
when 60 then 'D'
else 'E'
end
from student,result
where student.studentno=result.studentno
and subjectid=@subid
and examdate=@date
select * from result
--Go
select * from student
select * from subject
go
--go必须独占一行
create table myttttt3
(
id int identity(1,1) primary key not null,
name nvarchar(20)
)
go
select * from sysobjects where name='mm'
Declare @date datetime --考试时间
select @date=max(ExamDate) from Result
inner Join Subject ON Result.SubjectNo=Subject.SubjectNo
where SubjectName='java Logic' select 学号=StudentResult< THEN 'E'
where StudentResult BETWEEN AND THEN 'D'
where SrudentResult BETWEEN AND THEN 'C'
where studentResult BETWEEN AND THEN 'B'
else 'A'
end
from result
inner join subject on result.SubjectNo=Subject.SubjectNo
where subjectName='java Login' and ExamDate=@date
/*1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
日期 胜 负
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
*/
create table tmp(rq varchar(10),shengfu nchar(1))
select * from tmp
insert into tmp values('2005-05-09','胜')
insert into tmp values('2005-05-09','胜')
insert into tmp values('2005-05-09','负')
insert into tmp values('2005-05-09','负')
insert into tmp values('2005-05-10','胜')
insert into tmp values('2005-05-10','负')
insert into tmp values('2005-05-10','负')
select * from tmp
select rq as 日期,sum
(case
when shengfu='胜' then 1
else 0
end) as 胜,sum
(
case
when shengfu='负' then 1
else 0
end
) as 负
from tmp
group by rq
作业:1.全局变量的总结
2.局部变量的经典案例:上机练习3和课上的讲解内容,(手写,写到本上)
3.while循环加分经典练习,自己下去看看,写写!
4.第四章预习
09.go关键字
批处理可以将一堆(N条SQL)一次性的发送给SQL引擎执行。
Go关键字是一个批处理结束的标识。
第四章 高级查询
四、高级查询
本章依次讲解四个问题:
01.简单子查询
02.in/not in 子查询
03.Exists子查询
04.T-SQL语句的综合应用
01.简单子查询
案例1:查询学生表中比"美洋洋"小的学员信息(姓名,地址)
--不用变量
--所想即所得
select studentname,address
from Student
where Birthday>(select Birthday from Student where StudentName='美洋洋')
案例2:查询“oop”课程至少一次考试刚好等于60分的学生(姓名,成绩)
select Studentname,studentresult
from Student,result,Subject
where Student.StudentNo=Result.StudentNo
and Result.SubjectId=Subject.SubjectId
and SubjectName='oop'
and StudentResult=60
--用子查询如何实现???
--用到什么条件,交给子查询解决
select studentname,studentresult
from Student,Result
where Student.StudentNo=Result.StudentNo
and SubjectId=(select SubjectId from Subject where SubjectName='oop')
and StudentResult=60
--只检索学生姓名
select studentname
from Student
where StudentNo in
(select StudentNo
from Result
where StudentResult=60 and SubjectId=
(select SubjectId
from Subject
where SubjectName='oop'
)
)
3.2 输出语句
T-SQL支持输出语句,用于输出显示处理的数据结果。输出语句分为两种:PRINT语句和SELECT语句。语法:
PRINT 局部变量或字符串
SELECT 局部变量 AS 自定义列名
其中,使用SELECT语句输出数据是查询语句的特殊应用。
示例2
PRINT '服务器的名称:'+@@SERCERNAME
PRINT 'SQL Server的版本' + @@VERSION
SELECT @@SERVERNAME AS '服务器名称'
SELECT @version AS 'SQL Server的版本'
转换函数 PRINT '当前错误号'+CONVERT(varchar(5)),@@ERROR
示例3
INSERT INTO Student
(StudentName,StudentNo,LoginPwd,GradeId,Sex,BornDate,IdentityCard)
VALUES ('武松',10011,'123456',1,0,'1990-12-31','11010119901231001X')
PRINT '当前错误号'+CONVER(varchar(5),@@ERROR)
UPDATE Student SET BornDate='1970-7-8' WHERE StudentNo=10011
PRINT '当前错误号:'+CONVERT(varchar(5),@@ERROR)
GO
@@ERROR用于表示最近一条SQL 语句是否有错误。如果有错误,则返回非零的值。第一次INSERT语句没错,所以为0;第二条UPDATE语句违反了出生日期必须大于等于1980年1月1日的检查约束,所以错误号不为零。
3.3重点数据类型转换
3.3.1
CAST()和CONVERT()函数
与C#语言类似,在T-SQL语言中,数据类型的转换也分为隐式转换和显式转换。在T-SQL语言中 除了CONVERT()函数能够实现数据类型显式转换功能之外,T-SQL还提供CAST()函数。
示例4
DECLARE @name varchar() --姓名
DECLARE @Result decimal(,) --考试成绩
DECLARE @NO int
set @NO =
select @name =StudentName from Student
where StudentNo=@NO
select @Result =StudentResult from Student
Inner join Result on Student.StudentNo=Result.StudentNo
Inner Join Subject on Result.SubjectNo=Subject.SubjectNo
where SubjectName='jave Logic' AND Student.StudentNo=@NO
AND EXAMDate=='2.13-2-15'
print '姓名:'+@name
print '成绩:'+cast(@Result as varchar())
GO
语法
CAST(表达式AS数据类型)
CONVERT(数据类型[(长度)],表达式[ ,样式])
CAST()函数和COVERT()函数用于讲某种数据类型的表达式转换为另一种数据类型的表达式。与CAST()函数不同之处是,在将日期时间类型/浮点的数据转换为字符串数据时,CONVERT()函数可以通过第3个参数指定转换后的字符样式,不同的样式是转换后字符数据的显示格式不同. CONVERT()函数的第3个参数可以省略.有关样式的具体取值以及对应的显示样式请查SQL Server联机丛书。
3.4逻辑控制语句
顺序结构控制语句: begin-end语句
分支结构控制语句: if-else语句和case-end语句
循环结构控制语句: while 语句
3.4.1begin-end语句
语法
begin
语句和语句快
end
begin-end语句的作用类似于C#的"{}",他经常在分支结构语句和循环结构语句中出现,表示语句块的开始和结束.在一个语句块中可以包含另一个语句块
3.4.1 if-else条件语句
if-else语句属于分支结构,它于C#编程语言的if语句类似,也是根据条件是否成立来确定程序执行方向的.
语法:
if(条件)
语句或语句块1
else
语句或语句块2
当if语句中的条件表达式结果为TRUE是,执行语句或语句块1的代码;否则执行语句或语句块2.
如果多条语句则需要与begin-end结合使用,表示一个完整的语句块
if(条件)
begin
语句1
语句2
....
end
else
.......
--查询获得"JAVA longic"课程最近一次考试的日期
declare @date datetime --考试日期
select @date =MAX(ExamDate) FROM Result INNER JOIN Subject
ON Result.SubjectNo=Subject.SubjectNo
WHERE SubjectName='Java Logic' --查询获得本次考试的平均分
DECLARE @myavg decimal(,) --平均分
SELECT @myavg=AVG(StudentResult) FROM Result
INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo
WHERE SubjectName 'Java Logic' AND ExamDate=@date PEINT '平均分:'+CONVERT(varchar(),@myavg)
IF (@myavg>)
begin
print '考试成绩优秀,前三名的成绩'
selcet top StudentNo, StudentResult FROM Result
INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo
WHERE SubjectName='Java Logic' AND ExamDate=@date
ORDER BY StudentResult DESC
END
ELSE
BEGIN
print '考试成绩较差者,后三名的成绩'
select top StudentNo,StudentResult from Result
INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo
WHERE SubjectName='Java Logic' AND ExamDate=@date
ORDER BY StudentResult
END
把输出的表格数据和文本消息显示在同一个窗体中,需要做如下设置。
选择Microsoft SQL Server Management Studio 菜单中的“工具”→"选择"选项,弹出"选项"对话框,选择"查询结果"→"SQL Server"→"常规"选项,将"显示结果的默认方式"设置为"以文本格式显示结果"。
3.4.3 while循环语句
while循环语句可以根据某些条件重复执行一条SQL语句或一个语句块。通过使用while关键字,可以确保只要指定的条件为TRUE,就会重复执行语句或语句块,直至指定条件为FALSE为止。
在while循环语句中可以使用continue和break语句来控制语句的执行。
语法:
while(条件)
begin
语句或语句块
[break | continue]
END
使用break语句将跳出当前循环结束while循环.使用continue语句会使循环跳过continue语句后面的语句,回到while循环的第一条语句,准备下一轮的条件判断。
Declare @date datetime --考试时间
Declare @subNo int --课程编号
select @subNo =SubjectNo from Subject
where SubjectName='Winforms' select @date=max(ExamDate) from Result
where SubjectNo=@subNo declare @n int
while(=) --条件永远成立
begin
select @n=count (*) from Result
where SubjectNo=@subNo AND ExamDate=@date AND StudentResult<
--统计不及格人数
IF(@n>) --每人加2分
Update result set StudentResult=StudentResult+ from result
where SubjectNo=@subNo AND ExamDate=@date AND StudentResult<
else
break --退出循环
END
print '加分后的成绩如下:'
select StudentName,StudentResult from Result
INner Join Student On Result.StudentNo=Student.StudentNo
where SubjectNo=@subNo And ExamDate =@date
3.4.4 case多分支语句
ease-END语句计算一组条件表达式,并返回其中一个符合条件的结果
语法:
case
when 条件1 then 结果1
when 条件2 then 结果2
[else 其他结果]
END
case语句表示如果"条件1"成立,则执行"结果1",其余类推。如果when的条件都不匹配,则执行else后面的结果。else可以省略。如果省略else并且when的条件表达式的结果都不为TRUE则
case-END语句返回null.
3.5批处理
3.5.1 GO指令
示例8
--批处理1
create table punish( --创建表
StuNo int NOT NULL, --学号
StuCnt int NOT NULL, --不及格次数
StuMng varchar() --处理意见 )
GO --批处理2
INSERT into Punish --批量插入数据
select StudentNo 学号,count() 不及格次数,' '处理意见
from Result where StudentResult <
group BY StudentNo
GO --批处理3
UPDATE Punish set StuMng='警告'
where StuCnt= --更新只有1次不及格记录的处理意见
Update Punish set StuMng='肄业'
where StuCnt Between and --更新有2次或3次不及格记录的处理意见
UPDate Punish set StuMng='开除'
where StuCnt > --更新3次以上不及格记录的处理建意
GO --批处理4
select * from Punish --查询更新后的结果
GO
本章总结
变量的使用是先声明,再赋值。局部变量前必须要“@”作为前缀,全局变量前必须有两个“@”作为前缀。
变量的赋值有两种方式:set语句和select语句
输出结果也有两种方式:print语句和select语句
数据类型转换的两个函数:cast()和CONVERT()
控制流语句提供了条件操作所需的顺序和逻辑
语句块使用begin-END
批处理可以提高语句执行的效率,批处理结束的标志是"GO"
23:55:24
万能的 SQL编程的更多相关文章
- 从c#角度看万能密码SQL注入漏洞
以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...
- sqL编程篇(三) 游标与存储过程
sql编程2 游标与存储过程 sql编程中的游标的使用:提供的一种对查询的结果集进行逐行处理的一种方式不用游标的处理解决方式:逐行修改工资update salar set 工资=‘新工资’ where ...
- SQL编程篇 (二) 定义与流程控制
分类: sql编程:标准的sql 编程 * 纯sql 在标准的编程中又分为 sqlserver-->T-sql oracle-->pl-sql(扩展) 变量:在使用变量之前先定义 声明变量 ...
- 数据库之SQL编程
定义局部变量 declare @num int 途径一: 途径二: set 和select赋值方式的区别 唯一区别,如果从数据库表中获取数据,只能用 select ) select @name =st ...
- SQL Server(六)——索引、视图和SQL编程
1.索引 添加索引,设计界面,在任何一列前右键--索引/键--点击进入添加某一列为索引 2.视图 视图就是我们查询出来的虚拟表 创建视图:create view 视图名 as SQL查询语句,分组,排 ...
- sql编程小结
对照mysql5.1手册,对这几天学的sql编程进行小结,主要涉及触发器.存储过程.权限管理.主从分离等,权当抛砖引玉,高手请略过. 一.触发器 通俗的说就是在指定的数据表增删改的前或后触发执行特定的 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- SQL编程之高级查询(子查询)以及注意事项
SQL编程之高级查询(子查询)以及注意事项 1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...
- SQL Server数据库(SQL Sever语言 函数以及SQL编程)
1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) ...
随机推荐
- AE选中要素
private void 选中要素ToolStripMenuItem_Click(object sender, EventArgs e) { if(axMapControl2.LayerCount&l ...
- RxJava 和 RxAndroid 四(RxBinding的使用)
对Rxjava不熟悉的同学可以先看我之前写的几篇文章 RxJava 和 RxAndroid 一 (基础) RxJava 和 RxAndroid 二(操作符的使用) RxJava 和 RxAndroid ...
- JSON解析方案
在iOS中,JSON的常见解析方案有4种 第三方框架:JSONKit,SBJson,TouchJSON(性能从左到右,越差) 苹果原生(自带):NSJSONSerialization(性能最好) JS ...
- iOS-UITableView的优化(纯手打原创)
TableView的优化 一:什么是TableView的优化以及为什么要优化 1)CPU(中央处理器)和GPU(图形处理器) CPU主要从事逻辑计算的一些工作 GPU主要从事图形处理方面的工作 2 ...
- 使用T-SQL进行活动目录查询
最近在某个项目中,需要针对TFS的用户按照所属的AD组来进行数据分析,但发现TFS中并没有存储用户所属的组信息,故考虑直接从AD中提取这个信息并存放在SQL Server的数据库表里面去. 经过一番G ...
- yii2使用多个数据库的案例
作者:白狼 出处:http://www.manks.top/article/yii2_%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8_config 本文版权归作者,欢迎转载, ...
- 微信网站设置右上角发送、分享的内容——.net版本
一.首先了解本文要解决的问题: 公司前一段开发了移动网站,老板喜欢通过微信看,然后把看到的东西通过右上角的按钮分享出来,但老板发现分享出来的东西,没有指定的图片,没有描述:所以我就得老老实实干活了.. ...
- 【密码】Oracle用户密码系列
[密码]Oracle用户密码系列 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- 4、解决native库不兼容
解决native库不兼容 现象: 报警告 [root@hadoop1 hadoop-]# bin/hdfs dfs -ls /input // :: WARN util.NativeCodeLoade ...
- nginx有关.htaccess小结
可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦. 其实nginx和.htaccess一点 ...