当前位置:首页 » 编程语言 » sql0010
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql0010

发布时间: 2022-11-02 13:41:29

sql的查询语句

都是最基本的sql语句,先把创建表的给你。后面的太多了,有空再写。
(一)
1.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Dept]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Dept]
GO
CREATE TABLE [dbo].[Dept] (
[Dno] [Char] (4)NOT NULL primary key,
[Ename] [char] (20) NOT NULL ,
[Dnum ] [int] check(Dnum >=0)
UNIQUE (Ename)

) ON [PRIMARY]
GO

2.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Employee]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Employee]
GO
CREATE TABLE [dbo].[Employee] (
[Eno] [Char] (6)NOT NULL primary key,
[Dname] [char] (16) NOT NULL ,
[Esex ] [char](1) CHECK(Esex='F' OR Esex='M'),
[Eage] [Smallint] check(Dnum >=0),
[Esalary] [Money](1) check(Smallint >=16 and Smallint<=60),
[Ety] [char](15) DEFAULT'助教'),
[Dno] [char](4) FOREIGN KEY (Dno) REFERENCES Dept(Dno)
) ON [PRIMARY]
GO

㈡ sql中查询序中0010,0020,0030,0040,0050 。如果没有0030我要怎么能查的出来!

没明白你的意思, 你是不是想查询出工序不是0030的记录? 详细描述你想执行的查询。

㈢ sql update 命令

请问您的意思是不是
更新数据库所有的表中,[编号]字段为0010的数据
将其[成本]字段更新为1000
?
如果是这样
update
表名
set
成本=1000
where
编号=0010

㈣ sql问题:将截断字符串或二进制数据。

你的字段容量太小,插入数据时导致数据溢出..
Create DataBase zhusu
GO

use zhusu
create table 旅馆(
编号 varchar(10) primary key,
名称 varchar(20) not null,
地址 varchar(50) not null,
备注 varchar(40)
)
create table 投宿(
编号 varchar(10) not null,
名称 varchar(20) not null,
一周价格 varchar(5),
联系人 varchar(10),
电话 bigint,
foreign key (编号) references 旅馆(编号)
)
go
alter table 投宿
add constraint uk_name
unique(名称)
use zhusu
insert 旅馆 values('艺苑度假村','洲乡艺苑路17号',null)
insert 旅馆 values('0002','理想饭店','洲乡理想街111号',null)
insert 旅馆 values('0003','乐工旅社','洲乡乐工街110号',null)
insert 旅馆 values('0004','莫内花园','洲乡莫内街109号',null)
insert 旅馆 values('0005','鲤鱼山庄','洲乡鲤鱼池108号',null)
insert 旅馆 values('0006','丰田纳园','洲乡丰田体育管',null)
insert 旅馆 values('0007','岁月民宿','洲乡岁月路100幢',null)
insert 旅馆 values('0008','大爱电场','洲乡大爱路',null)
insert 旅馆 values('0009','布拉格酒店','洲乡布拉格广场',null)
insert 旅馆 values('0010','路遇餐厅','洲乡路遇路1号',null)

insert 投宿 values('0002','理想饭店','1200','订房部',8777777)
insert 投宿 values('0003','乐工旅社','2300','蔡饱',8666666)
insert 投宿 values('0004','莫内花园','5000','富翁',8588888)
insert 投宿 values('0005','鲤鱼山庄','3800','范匹',8333333)
insert 投宿 values('0006','丰田纳园','2800','蔡雕',8111111)
insert 投宿 values('0007','岁月民宿','800','师仔',8222222)
insert 投宿 values('0008','大爱电场','1800','蔡饱',8666666)
insert 投宿 values('0009','布拉格酒店','8800','富翁',8588888)
insert 投宿 values('0010','路遇餐厅','1500','邦邦',8555555)

这样应该就不会有问题了..
不过foreign key (编号) references 旅馆(编号) 这句话我没看懂什么意思...去了能不...= =!

㈤ 关于SQL数据库查询指令

说实话,不是看着这80分,我还真不敢随便回答你,因为看得出,你对数据库的了解,,,,真的还,,,,,
1.首先你得知道表名、字段,比如人物级别,你得知道它的字段是什么,一般不会用中文,可能的是 lv,弄清楚人物级别和标识的字段名字后,我们可以开始查询了

2.现在假设人物级别字段为lv,标识为 index,假设表名为 table
1-25级(包括1级,包括25级)人物标识为0001的语句:
select * from table where lv>=1 and lv<=25 and index='0001'
标识为0002的,而且级别是25-60(包括25,包括60)的语句:
select * from table where lv>=25 and lv<=60 and index='0002'

这样根据各个运行结果的条数,就可以看出对应人物有多少个
也可以这样写:
select count(*) from table where lv>=1 and lv<=25 and index='0001'
select count(*) from table where lv>=25 and lv<=60 and index='0002'
这样可以各只出现一条,看对应数字就可以了。

或者你需要2个在一条中看出来?按以下写;
select sum(case when lv>=1 and lv<=25 and index='0001' then 1 else 0 end) 标识0001的25级以下的,sum(case when lv>=25 and lv<=60 and index='0002' then 1 else 0 end) 标识0002的25以上的 from table

以上语句,如果你 需要不包括,只需要把级别对应前面的等号去掉就OK了

OK,搞定,给分啦,好辛苦。嘿嘿

补充一下,你的数据库名,表名,字段名,这是任何人都猜不到的,因为是写程序的人自定义的,谁知道那天杀的怎么想。你可以去对应服务器的企业管理器里找,,,就可以找到了,当然最直接的是问程序开发者,或者看代码(估计你也看不出来,,,汗一个)

㈥ 用SQL查询每个学生的所选课程的最高成绩 要求列出学号,姓名,课程编号,分数 已经得到如下结果 多谢咯

用了聚合函数就需要对其(group by )分组

select STUDENT.学号,姓名,课程名称,max(分数)
FROM GRADE JOIN STUDENT ON GRADE.学号=STUDENT.学号 JOIN CURRICULUM ON GRADE.课程编号=CURRICULUM.课程编号 group by STUDENT.学号,姓名,课程名称

㈦ 求sql语句数据里有0001,0010,0101如何只去掉1前边的0

可以先转换成int型,再换回varchar就可以
select convert(varchar(4),convert(int,'0001'))

㈧ SQL 存储过程建立和使用方法

Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。 存储过程相对于其他的数据库访问方法有以下的优点: (1)重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。 (2)提高性能。存储过程在创建的时候就进行了编译,将来使用的时候不用再重新编译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。 (3)减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。 (4)安全性。参数化的存储过程可以防止SQL注入式的攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。 存储过程一共分为了三类:用户定义的存储过程、扩展存储过程以及系统存储过程。 其中,用户定义的存储过程又分为Transaction-SQL和CLR两种类型。 Transaction-SQL 存储过程是指保存的Transaction-SQL语句集合,可以接受和返回用户提供的参数。 CLR存储过程是指对.Net Framework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。他们在.Net Framework程序集中是作为类的公共静态方法实现的。(本文就不作介绍了) 创建存储过程的语句如下:Code
CREATE { PROC | PROCEDURE } [schema_name.] procere_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ [ OUT [ PUT ]
] [ ,n ]
[ WITH <procere_option> [ ,n ]
[ FOR REPLICATION ]
AS { <sql_statement> [;][ n ] | <method_specifier> }
[;]
<procere_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE_AS_Clause ]

<sql_statement> ::=
{ [ BEGIN ] statements [ END ] }

<method_specifier> ::=
EXTERNAL NAME assembly_name.class_name.method_name [schema_name]: 代表的是存储过程所属的架构的名称 例如: Create Schema yangyang8848
Go
Create Proc yangyang8848.AllGoods
As Select * From Master_Goods
Go 执行:Exec AllGoods 发生错误。 执行:Exec yangyang8848.AllGoods 正确执行。 [;Number]: 用于对同名过程进行分组的可选整数。使用一个 DROP PROCEDURE 语句可将这些分组过程一起删除。 例如: Create Proc S1 ;1
AS
Select * From Master_Goods
Go
Create Proc S1 ;2
As
Select * From Master_Location
Go 创建完毕了两个存储过程。它们在同一个组S1里,如果执行Exec S1 则存储过程默认执行 Exec S1 ;1 。如果我们想得到所有据点信息则需要执行Exec S1 ;2。当我们要删除存储过程的时候,只能执行Drop Exec S1 则该组内所有的存储过程被删除。 [@ parameter]: 存储过程中的参数,除非将参数定义的时候有默认值或者将参数设置为等于另一个参数,否则用户必须在调用存储过程的时候为参数赋值。 存储过程最多有2100个参数。 例如: Create Proc yangyang8848.OneGoods
@GoodsCode varchar(10)
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Go 调用的代码: Declare @Code varchar(10)
Set @Code = '0004'
Exec yangyang8848.OneGoods @Code 在参数的后边加入Output 表明该参数为输出参数。 Create Proc yangyang8848.OneGoods
@GoodsCode2 varchar(10) output,@GoodsCode varchar(10) = '0011'
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Set @GoodsCode2 = '0005'
Go 调用方法:
Declare @VV2 varchar(10)
Exec yangyang8848.OneGoods @Code out 注意:如果存储过程的两个参数一个有默认值一个没有,那么我们要把有默认值得放在后边,不然会出问题哦~~ 细心的朋友,可能看到上边的语句有一些不同,比如,存储过程用的是output,而调用语句用的是out。我要告诉您,两者是一样的。 [RECOMPILE]:指示数据库引擎 不缓存该过程的计划,该过程在运行时编译。如果指定了 FOR REPLICATION,则不能使用此选项。对于 CLR 存储过程,不能指定 RECOMPILE。 这个说一个非常好用的函数 OBJECT_ID :返回架构范围内对象的数据库对象标识号。 例如:我们创建存储过程时,可以如下写代码 If Object_ID('yangyang8848.OneGoods') Is Not Null
Drop Proc yangyang8848.OneGoods
Go Create Proc yangyang8848.OneGoods
@GoodsCode2 varchar(10) out,@GoodsCode varchar(10) = '0011'
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Set @GoodsCode2 = '0005'
Go 针对于上边的这个存储过程,我们调用以下SQL查询 Select definition From sys.sql_moles
Where object_id = Object_ID('yangyang8848.OneGoods'); 我们是可以查到结果的。 可是如果我们对该存储过程加入[ ENCRYPTION ] 那么你将无法看到任何结果 If Object_ID('yangyang8848.OneGoods') Is Not Null
Drop Proc yangyang8848.OneGoods
Go Create Proc yangyang8848.OneGoods
@GoodsCode2 varchar(10) out,@GoodsCode varchar(10) = '0011' With Encryption
As
Select * From Master_Goods Where GoodsCode = @GoodsCode
Set @GoodsCode2 = '0005'
Go</SPAN> 然后我们查询 sys.sql_moles 目录视图,将返回给你Null。</p> 然后我们执行以下SQL: Exec sp_helptext 'yangyang8848.OneGoods' 你将得到以下结果:The text for object 'yangyang8848.OneGoods' is encrypted. 说到这里你应该明白了,参数[ ENCRYPTION ]:是一种加密的功能, 将 CREATE PROCEDURE 语句的原始文本转换为模糊格式。模糊代码的输出在 SQL Server 2005 的任何目录视图中都不能直接显示。对系统表或数据库文件没有访问权限的用户不能检索模糊文本。但是,可通过 DAC 端口访问系统表的特权用户或直接访问数据库文件的特权用户可使用此文本。此外,能够向服务器进程附加调试器的用户可在运行时从内存中检索已解密的过程。 前两天写了一篇关于游标的介绍文章 ,下边写一个例子,将游标与存储过程一起使用上: If Object_ID('dbo.GetMasterGoods') Is Not Null
Drop Proc dbo.GetMasterGoods
Go Create Proc GetMasterGoods
@MyCursor Cursor Varying Output
With Encryption
As
Set @MyCursor = Cursor
For
Select GoodsCode,GoodsName From Master_Goods
Open @MyCursor
Go --下边建立另外一个存储过程,用于遍历游标输出结果 Create Proc GetAllGoodsIDAndName
As Declare @GoodsCode varchar(18)
Declare @GoodsName nvarchar(20)
Declare @MasterGoodsCursor Cursor
Exec GetMasterGoods @MasterGoodsCursor out
Fetch Next From @MasterGoodsCursor
InTo @GoodsCode,@GoodsName
While(@@Fetch_Status = 0)
Begin
Begin
Print @GoodsCode + ':' + @GoodsName
End
Fetch Next From @MasterGoodsCursor
InTo @GoodsCode,@GoodsName
End
Close @MasterGoodsCursor
Deallocate @MasterGoodsCursor
Go 最后执行Exec GetAllGoodsIDAndName结果为以下内容 0003:品0003
0004:品0004
0005:123123
0006:品0006
0007:品0007
0008:品0008
0009:品0009
0010:品0010
0011:品0011
0012:品0012
0013:品0013
0014:品0014

㈨ 怎么在SQL数据库中填充“0”或者“1”这样的数据

--循环插入:把十进制转换成二进制,然后把二进制换成字符型,SUBSTRING取位插入CREATE FUNCTION dbo.inttobit (@number int)
returns varchar(100)
as
BEGIN
DECLARE @i int
DECLARE @j float
DECLARE @m int
DECLARE @OUT1 varCHAR(1)
DECLARE @OUT2 varchar(20)
SET @i=@number
set @out2=' '
WHILE @i>=1
BEGIN
SET @j=@i/2
SET @m=@i%2
SET @i=floor(@j)
SET @OUT1=cast(@m as char(1))
SET @OUT2=@OUT1+@OUT2
END
RETURN @OUT2
END

㈩ C# 怎么把整数数值前面的0去掉,比如0010变成10,有没有什么自带的公式可以解决。这个值是在做sql查询得到

这就是个字符串,怎么会是整数类型呢
强制转换成int型就没有了,Convert.ToInt32("0010")