mysql declare 语法_sql_declare等语法 | 学步园[通俗易懂]

mysql declare 语法_sql_declare等语法 | 学步园[通俗易懂]===sqlserver:—sqldeclare–简单赋值declare@aintset@a=5select@a–使用select语句赋值declare@user1nvarchar(50)select@user1=’张三’select@user1declare@user2nvarchar(50)select@user2=NamefromST_Userwhe…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

===sqlserver:—sql declare

–简单赋值

declare @a int

set @a=5

select @a

–使用select语句赋值

declare @user1 nvarchar(50)

select @user1=’张三’

select @user1

declare @user2 nvarchar(50)

select @user2 = Name from ST_User where ID=1

select @user2

—表变量

declare @t table

(

id int not null,

msg nvarchar(50) null

)

insert into @t values(1,’1′)

insert into @t values(2,’2′)

select * from @t

—select,set赋值的区别

http://www.xuebuyuan.com/37583.html

{

示例:

DECLARE @Variable1 AS int, @Variable2 AS int

/* 使用 SELECT */

SELECT @Variable1 = 1

/* 使用 SET */

SET @Variable2 = 2

select f1 into v1 from tab1

select f1,f2,f3 into v1,v2,v3 from tab1

说明:

1.SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值

SELECT @VAR1=’Y’,@VAR2=’N’

SET @VAR1=’Y’;SET @VAR2=’N’;

2.表达式返回多个值时,用SET将会出错,而SELECT将取最后一个值,如下:

SELECT @VAR1 = IsRight FROM Permission –将取最后一个值

SET @VAR1 = IsRight FROM Permission –将报错

3.表达式无返回值时,用SET将置变量值为NULL,用SELECT交保持变量值

SET @VAR1 = ‘初始值’

SELECT @VAR1 = IsRight FROM Permission –此时@VAR1为’初始值’

SET @VAR1 = (SELECT IsRight FROM Permission) –此时@VAR1为NULL

4.使用标量子查询时,如果无返回值,SET和SELECT一样,都将置为NULL,

SET @VAR1 = ‘初始值’

SELECT @VAR1 =(SELECT IsRight FROM Permission ) –此时@VAR1为NULL

SET @VAR1 = ( SELECT IsRight FROM Permission) –此时@VAR1为NULL

}

—sql exec执行语句

—区块sql

区块定义,常用

begin

……

end;

也可以给区块起别名,如:

lable:begin

………..

end lable;

可以用leave lable;跳出区块,执行区块以后的代码

局部变量的作用范围在它被声明的BEGIN … END块内

select newid() 随机选择记录

Print 向客户端返回用户信息

—sqlserver identity(int,1,1)

括号里面表示的意思是int类型,起始值为1,每次增量为1。

CREATE TABLE tb3(id int ,col int)

INSERT INTO tb3(col) VALUES(10)

INSERT INTO tb3(col) VALUES(20)

SELECT IDENTITY(int,100,2) as aid,* into #T3 FROM tb3

select * from #T3

CREATE TABLE tb1(id int IDENTITY(10,1),col int)

INSERT INTO tb1(col) VALUES(10)

INSERT INTO tb1(col) VALUES(20)

SELECT * FROM tb1

—sqlser

select GETDATE() 获取当前日期时间

–将test_no_cx中的记录批量插入到test_has_cx中

insert test_has_cx select * from test_no_cx

—sqlserver

create table Topics

(

topicID int identity primary key,

topicName varchar(50)

)

insert into Topics (topicName)

select ‘耐克’ union

select ‘彪马’ union

select ‘李宁’ union

select ‘安踏’ union

select ‘特步’ union

select ‘361°’

用一个表中的数据来更新另一个表中的数据:

(注意区分这里面涉及到了有3个表)

UPDATE titles –表1

SET titles.ytd_sales = t.ytd_sales + s.qty

FROM titles t, sales s –表2、表3

WHERE t.title_id = s.title_id

AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

(ERROR:该语句无效,因为区分错了表)

UPDATE titles

SET t.ytd_sales = t.ytd_sales + s.qty

FROM titles t, sales s

WHERE t.title_id = s.title_id

AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

@@ERROR : 返回最后执行的Transact-SQL语句的错误代码。没有错误则为零。

@@ROWCOUNT : 返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。

SQL中@@ROWCOUNT函数:返回受上一语句影响的行数。

@ERROR,当前一个语句遇到错误,则返回错误号,否则返回0。

在每一条语句执行后都将被重置,如果将来使用需要将变量保存到局部变量中。

update SNS_TopicData set TopicCount=TopicCount+1 where Topic =’1′

if @@rowcount>0

begin

print ‘成功’

end

else

begin

print ‘失败’

end

===mysql:—mysql delimiter

delimiter $$ — 切换成以$$为批处理结束符

delimiter ; — 切换成以;为批处理结束符

注意:

1.delimiter — 告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了

2.delimiter $$后面不需要加分号.

3.定义delimiter $$后,就表示批处理解释执行的标识符是$$,但是里面的语句还是不能漏掉分号,如一般的sql语句后面要加分号,end if等语句后面要加分号,declare语句后面要加分号…

—mysql DECLARE:

1.在外部不需定义,可直接引用@n.如: SET @a=1; SELECT @a;

2.在存储过程内部定义时不带@符号,如declare n int;

3.如果mysql直接在查询器中执行DECLARE @n INT;是会报错的,一个是因为不需要带@符号,另一个是declare语句不能直接在外部使用,可以放在存储过程中使用

—mysql数据库锁定机制:

MySQL各存储引擎使用了三种类型(级别)的锁定机制:行级锁定,页级锁定和表级锁定。

—limit 1

http://www.jb51.net/article/35774.htm

LIMIT 1适用于查询结果为1条(也可能为0)会导致全表扫描的的SQL语句。

前提是所查询的列不是索引列,如果查询的是索引列(包括主键查询)就不需要limit 1。

示例:

create table t_user(

id int primary key auto_increment,

email varchar(255),

password varchar(255)

);

SELECT * FROM t_user WHERE email=? LIMIT 1;

—mysql编码

http://www.cnblogs.com/zzwlovegfj/archive/2012/06/25/2560649.html

— mysql存储引擎

http://www.cnblogs.com/zzwlovegfj/archive/2012/07/11/2586929.html

===sql:

—TRUNCATE TABLE

(deletes only the data inside the table)

删除表中的所有行数据,但不会删除表定义

truncate table #Tmp  –清空临时表的所有数据和约束

http://www.cnblogs.com/stublue/archive/2011/02/18/1958033.html

—主键关联与外键关联

主键关联是指的一个表的主键和另外一个表的主键关联

外键关联是指的一个表的主键和另外一个表的非主键关联

{

主键关联:

person_t:

person_id

address_id

address_t

address_id

address_name

他们通过 address_id 关联是外键关联

person_t:

person_id

persion_name

address_t

person_id

address_name

他们通过person_id 关联就是主键关联。

}

—分组查询

{

http://www.cnblogs.com/gaiyang/archive/2011/04/01/2002452.html

例如,有如下数据库表:

A    B

1    abc

1    bcd

1    asdfg

如果有如下查询语句(该语句是错误的)

select A,B from table group by A

该查询语句的意图是想得到如下结果(当然只是一相情愿)

A     B

1     abc

bcd

asdfg

右边3条如何变成一条,所以需要用到聚合函数,如下(下面是正确的写法):

select A,count(B) as 数量 from table group by A

这样的结果就是

A    数量

1    3

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组

SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2

group by xxx having count(*)>1

}

—全文索引

http://www.cnblogs.com/ericwen/archive/2008/09/04/1283998.html

在数据库中快速搜索数据,使用索引可以提高搜索速度,然而索引一般是建立在数字型或长度比较短的文本型字段上的,比如说编号、姓名等字段,如果建立在长度比较长的文本型字段上,更新索引将会花销很多的时间。如在文章内容字段里用like语句搜索一个关键字,当数据表里的内容很多时,这个时间可能会让人难以忍受。

在SQL Server中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数据的速度,在本章里,将会对全文索引进行详细的介绍。

—全表扫描

—删除重复,只保留一条数据,没有主键{

SqlServer:

create table t_repeat(

age int,

remark varchar(20)

)

insert into t_repeat values(1,’aaa’),(1,’aaa’),(1,’aaa’),(1,’aaa’),(1,’aaa’),(1,’aaa’),(1,’aaa’)

1.先把数据表的去除重复的数据放到临时表中

SELECT DISTINCT * into #Temp from t_repeat

select * from #Temp

2.把数据表里的数据清空

truncate table t_repeat

3.把临时表里的数据插入到数据表里

insert into t_repeat select * from #Temp

4.删除临时表

drop table #Temp

———–

select distinct * into #t from tablename

truncate table tablename

select * into tablename from #t

}

{

删除重复数据

http://www.cnblogs.com/moss_tan_jun/archive/2011/07/29/2121167.html

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

}

{

select * from tablename where id in (

select id from tablename

group by id

having count(id) > 1

)

}

—查询优化:

http://www.cnblogs.com/moss_tan_jun/archive/2011/04/26/2029886.html

http://www.cnblogs.com/moss_tan_jun/archive/2011/04/23/2025988.html(good)

http://www.cnblogs.com/moss_tan_jun/archive/2011/02/10/1950852.html

http://www.cnblogs.com/moss_tan_jun/archive/2011/02/10/1950848.html

http://www.cnblogs.com/mybluesky99/archive/2011/04/19/2020829.html

http://www.cnblogs.com/mybluesky99/archive/2011/04/19/2020848.html

—sql例子:

http://www.cnblogs.com/moss_tan_jun/archive/2011/04/23/2025986.html(自定义函数、游标)

http://www.cnblogs.com/moss_tan_jun/archive/2011/04/23/2025945.html(from子查询)

http://www.cnblogs.com/moss_tan_jun/archive/2011/01/15/1936182.html (游标、临时表)

===PL/SQL

PL/SQL(Procedure Language/Structuer Query Language)是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。

构成PL/SQL程序的基本单位是程序块。程序块由过程、函数和无名块3种形式组成,它们之间可以互相嵌套。

PL/SQL的运行工具有:SQL*Plus、PL/SQL developer

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171259.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PG索引类型[通俗易懂]

    PG索引类型[通俗易懂]PG索引类型索引类型CREATEINDEX在一个指定表或者物化视图的指定列上创建一个索引,索引主要用来提高数据库的效率(尽管不合理的使用将导致较慢的效率)btree选择性越好(唯一值个数接近记录数)的列,越适合b-tree。当被索引列存储相关性越接近1或-1时,数据存储越有序,范围查询扫描的HEAPPAGE越少。 支持多列索引,默认最多32列,编译可改。(通过调整pg…

    2022年5月29日
    61
  • SSM项目部署到阿里云服务器。只需要五个步骤。

    SSM项目部署到阿里云服务器。只需要五个步骤。最近在看很多ssm项目部署到阿里云的教程:踩了很多坑,所以希望大家部署时候有所借鉴吧。有什么不懂可以联系qq交流:980631161.主要分为五个步骤:1.购买服务器2下载xshell和Xftp63.在服务器上安装jdk,mysql,tomcat。4.数据库准备数据5.maven项目生成war文件。1.购买服务器在阿里云购买一个ESC服务器网址是:https://www….

    2022年6月20日
    56
  • 谈SaaS下如何迅速部署应用软件

    谈SaaS下如何迅速部署应用软件

    2021年7月26日
    50
  • 如何开展云平台密评工作[通俗易懂]

    如何开展云平台密评工作[通俗易懂]1.背景云计算目前大家都很熟悉了,为了降低系统的成本或者打通数据的融合,许多企业事业单位的系统都选择部署在云上。云计算技术由于使用虚拟化等技术,其网络等边界相对而言是很模糊的,而部署在云平台上的系统,其安全风险也随之增加。实际测评中,我们经常会碰到云平台和云租户业务应用系统密码应用(以下称为“云上应用”)的密评。2.云平台测评的责任和范围我们可以依据《商用密码应用安全性评估FAQ》第19条的内容,当我们对运行在云平台上的云上应用进行测评时原则上要完成两部分测评工作:(1)当我们对云平台自身

    2025年8月1日
    4
  • at24c02模块怎么用_AI8C模块参数

    at24c02模块怎么用_AI8C模块参数AT24C02模块概述:  该文主要描述了,AT24C02简介、AT24C02特性、硬件原理图、管脚描述、从器件地址、写周期限制、读写操作时序。1、AT24C02简介  AT24C01/02/04/08/16是一个1K/2K/4K/8K/16K位(AT24C02大小为256字节)串行CMOSE2PROM内部含有128/256/512/1024/2048个8位字节,CATALYST公…

    2025年6月30日
    5
  • Java递归调用_递归算法1加到100

    Java递归调用_递归算法1加到100递归用于解决什么样的问题?1)各种数学问题如:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google编程大赛)2)各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等.3)将用栈解决的问题–>递归代码比较简洁简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归需要遵守的重要规则:1…

    2022年9月2日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号