SQL急求!!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL急求!!!!相关的知识,希望对你有一定的参考价值。
sql怎么创建一张人事表,表名emp,字段包括职工编号(p_c_empID)姓名(c_name)性别(c_sex)部门编号(c_deptno)工资(f_sal
查询每个部门女职工人数超过总女职工人数1/3的部门名称和人数
CREATE TABLE 学生信息
(
学号varchar(14) IDENTITY(1,1) PRIMARY KEY,
姓名varchar(8) UNIQUE NOT NULL,
班级编号varchar(14) REFERENCES '班级信息',
年级int null,
性别varchar(2) CHECK(性别in ('男’','女’)),
民族varchar(20) DEFAULT '未知该生民族',
籍贯varchar(50)
)
2. 修改表
1)重命名表:
EXEC sp_rename ‘oldname’,’newname’
2)修改列属性:
ALTER TABLE 学生信息
ALTER COLUMN 姓名varchar(20) NOT NULL
3)添加列:
ALTER TABLE 学生信息
ADD 家庭住址nvarchar(20) NULL
4)删除列:
ALTER TABLE 学生信息
DROP COLUMN 家庭住址CASCADE
增加字段
alter table docdsp add dspcode char(200)
删除字段
ALTER TABLE table_NAME DROP COLUMN column_NAME
修改字段类型
ALTER TABLE table_name ALTER COLUMN column_name new_data_type
改名
sp_rename
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
语法
sp_rename [ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
--假设要处理的表名为: tb
--判断要添加列的表中是否有主键
if exists(select 1 from sysobjects where parent_obj=object_id('tb') and xtype='PK')
begin
print '表中已经有主键,列只能做为普通列添加'
--添加int类型的列,默认值为0
alter table tb add 列名 int default 0
end
else
begin
print '表中无主键,添加主键列'
--添加int类型的列,默认值为0
alter table tb add 列名 int primary key default 0
--工资单里面工资金额为整数的数据
SELECT *
FROM (--模拟表
SELECT CAST('1000.00' AS FLOAT) A
UNION ALL
SELECT CAST('1001.02' AS FLOAT) A
)TB
WHERE CAST(RIGHT(A,2) AS INT)=0 --条件,取小数点后数字转化为整形,如果=0就是整数,取两位是你的浮点数保留2位
/*结果:
A
----------------------
1000
(1 行受影响)
*/
----要查在1000,00附近数据
没有直接可以使用的函数吧?本人不知,BETWEEN..AND..可以取附近的值,附近根本没有度,是取不到值的,要取得四舍五入后与整数相同的值或则差别具体指定数据的值倒是可以取。
--要查在1000,00附近数据
----模拟表
CREATE TABLE TEST(
A NUMERIC(18,2))
--插入
INSERT INTO TEST
SELECT '999.88'
UNION ALL SELECT '1000.00' UNION ALL
SELECT '1001.02' UNION ALL SELECT '98.02'
UNION ALL SELECT '98.00' UNION ALL SELECT '65.50'
--
SELECT *
FROM TEST
/*A
---------------------------------------
999.88
1000.00
1001.02
98.02
98.00
65.50
(6 行受影响)
*/
--找出1000跟98附近,即四舍五入后与该整形相等的数据或差距指定数据
SELECT *
FROM TEST
WHERE EXISTS (
SELECT 1
FROM (
SELECT A
FROM TEST
WHERE CAST(RIGHT(A,2) AS INT)=0
)TA
WHERE --TA.A<>CAST(TEST.A AS INT)--与各整数相同的值
--OR
ABS(TA.A-CAST(TEST.A AS INT))<3 --与各整数相差在3之内的数据
)
--删除演示环境
DROP TABLE TEST
/*
A
---------------------------------------
999.88
1000.00
1001.02
98.02
98.0--工资单里面工资金额为整数的数据
SELECT *
FROM (--模拟表
SELECT CAST('1000.00' AS FLOAT) A
UNION ALL
SELECT CAST('1001.02' AS FLOAT) A
)TB
WHERE CAST(RIGHT(A,2) AS INT)=0 --条件,取小数点后数字转化为整形,如果=0就是整数,取两位是你的浮点数保留2位
/*结果:
A
----------------------
1000
(1 行受影响)
*/
----要查在1000,00附近数据
没有直接可以使用的函数吧?本人不知,BETWEEN..AND..可以取附近的值,附近根本没有度,是取不到值的,要取得四舍五入后与整数相同的值或则差别具体指定数据的值倒是可以取。
--要查在1000,00附近数据
----模拟表
CREATE TABLE TEST(
A NUMERIC(18,2))
--插入
INSERT INTO TEST
SELECT '999.88'
UNION ALL SELECT '1000.00' UNION ALL
SELECT '1001.02' UNION ALL SELECT '98.02'
UNION ALL SELECT '98.00' UNION ALL SELECT '65.50'
--
SELECT *
FROM TEST
/*A
---------------------------------------
999.88
1000.00
1001.02
98.02
98.00
65.50
(6 行受影响)
*/
--找出1000跟98附近,即四舍五入后与该整形相等的数据或差距指定数据
SELECT *
FROM TEST
WHERE EXISTS (
SELECT 1
FROM (
SELECT A
FROM TEST
WHERE CAST(RIGHT(A,2) AS INT)=0
)TA
WHERE --TA.A<>CAST(TEST.A AS INT)--与各整数相同的值
--OR
ABS(TA.A-CAST(TEST.A AS INT))<3 --与各整数相差在3之内的数据
)
--删除演示环境
DROP TABLE TEST
/*
A
---------------------------------------
999.88
1000.00
1001.02
98.02
98.00 参考技术A 创建
CREATE TABLE emp
(
p_c_empID varchar(10) IDENTITY(1,1) PRIMARY KEY,
c_name varchar(8),
c_sex varchar(2) CHECK(性别in ('男’','女’)),
c_deptno varchar(10),
f_sal varchar(20)
)
添加字段
alter table emp add c_note varchar(50)
查询出工资最高的女职工的姓名和部门名称
select top 1 c_name,c_deptno from emp order by f_sal; 参考技术B Create table emp(p_c_empid char(8) primary key,c_name char(8),c_sex char(2),c_deptno char(6)foreign key references dept(deptno),f_sal money)
你少给了个部门表吧、
create table dept(deptno char(6)primary key,deptname char(20))
注意先创建部门表dept,再创建表emp
select deptname,sum(p_c_empid) as 人数
from emp,dept
where c_sex='女' and emp.c_deptno=dept.deptno
group by deptname
having sum(p_c_empid)>(select sum(p_c_empid)/3 from emp where c_sex='女') 参考技术C 查询出工资最高的女职工的姓名和部门名称:
select top 1 emp.c_name,emp.c_note from emp order by f_sal des;
若部门表与人事表不是同一个table,则可通过sql 串联把部门名称带出 参考技术D 给你个网站 去学习下把 http://www.w3school.com.cn/sql/sql_intro.asp
在SQL SERVER 2008中执行数据时有错误提示,急求大家帮忙!
IBatisNet.DataMapper.Exceptions.DataMapperException: Unable to open connection to "Microsoft SQL Server 7.0/2000/2005, provider V2.0.0.0 in framework .NET V2.0". ---> System.Transactions.TransactionException: 事务已被隐式或显式提交,或已终止。 ---> System.Runtime.InteropServices.COMException (0x8004D00E): 此事务已明地或暗地被确认或终止 (异常来自 HRESULT:0x8004D00E)
在 System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize, Byte[] whereabouts, Int32& cookieIndex, UInt32& cookieSize, CoTaskMemHandle& cookieBuffer)
在 System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
以上是关于SQL急求!!!!的主要内容,如果未能解决你的问题,请参考以下文章
如何查看sql server 2012是不是激活?在哪里查看?急求呀