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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 分布式CAP原理

    分布式CAP原理Consistentdata:    Operationscommitorfailintheirentirety(atomic)    操作的提交或者失败都是整体的(原子性)    Transactionsneverobserveorresultininconsistentdata(consistent)        事务不会导致不一致的数据  

  • OSError: cannot open resource 错误原因及解决方法[通俗易懂]

    OSError: cannot open resource 错误原因及解决方法[通俗易懂]错误类型最近学习python的时侯,初步学习了wordcloud库,很强大、很易用的一个库。但是我在进行练习的时候却遇到了OSError:cannotopenresource这样的错误,于是逐步分析每行代码,还是找到了错误。问题代码|importwordcloud,jiebaf=open(‘F:/PythonStudy/新时代中国特色社会主义.txt’,’r’,encodin…

  • java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍

    java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍Prototype模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。如何使用原型模式因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式…

    2022年10月31日
  • Ubuntu使用MAC主题[通俗易懂]

    Ubuntu使用MAC主题[通俗易懂]在Ubuntu上体验Mac系统

  • python压平嵌套列表

    python压平嵌套列表

    2021年11月22日
  • Mac修改redis密码[通俗易懂]

    Mac修改redis密码[通俗易懂]由于我长时间使用redis,结果今天启动redis服务,密码给活活忘记了,那么如何在Mac本地修改redis密码,操作如下Redis并没有像MySQL或者是Oracle那样的严格安全校验机制,所以修改起来非常容易,以下提供两种修改方式:停止Redis后重置密码(永久有效)若没有运行Redis,则直接修改Redis的配置文件(默认的安装位置);如果是手动编译的代码请前往相应的目录,并修改redis.conf。Macsudovim/usr/local/redis-6.0.

发表回复

您的电子邮箱地址不会被公开。

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