日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL 实用基础代码

發(fā)布時間:2025/5/22 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 实用基础代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE DB_Student --創(chuàng)建數(shù)據(jù)庫
ON PRIMARY
(
NAME=N'DB_Student', --創(chuàng)建數(shù)據(jù)庫.mdf文件
FILENAME=N'D:\database\db_Student.mdf',
SIZE=3072KB,
FILEGROWTH=1024KB
)
LOG
ON
(
NAME=N'DB_Studenta', --創(chuàng)建日志文件,不能重復(fù)mdf
FILENAME=N'D:\database\db_Student.ldf',
SIZE=1024KB,
FILEGROWTH=10%
)
GO

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

創(chuàng)建外鍵,B中存在外鍵,且外鍵是A主鍵,則應(yīng)該先創(chuàng)建A,再創(chuàng)建B
bAId INT FOREIGN KEY(bAId) REFERENCES A(aId)

BACKUP DATABASE [hanson]
TO DISK = N'D:\database\db_hanson_20120719.bak'
WITH DESCRIPTION = N'12年7月19日的備份',
NAME = N'db_hanson 的備份',
SKIP , NOREWIND , NOUNLOAD , STATS = 10
GO

BACKUP DATABASE [hanson] --差異備份
TO DISK = N'D:\database\db_hanson_20120719.bak'
WITH DIFFERENTIAL,
DESCRIPTION = N'12年7月19日的備份',
NOFORMAT , NOINIT,
NAME = N'db_hanson 的差異備份',
SKIP , NOREWIND , NOUNLOAD , STATS = 10
GO

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

USE Homework
SELECT DISTINCT T.Name
FROM T
WHERE T.Name
NOT IN(SELECT T.Name FROM T WHERE T.fenshu<80)

1、查詢出所有數(shù)據(jù)中撥打長途號碼(對方號碼以0開頭)的總時長
2、查詢出本月通話總時長最多的前三個呼叫員的編號
3、查詢出本月?lián)艽螂娫挻螖?shù)最多的前三個呼叫員的編號

SELECT SUM(DATEDIFF(second,Inquiry_Begin,Inquiry_End))
FROM Tel_Inquiry
WHERE Inquiry_Caller LIKE '0%'

SELECT TOP 3 Inquiryer_Id ,SUM(DATEDIFF(second,Inquiry_Begin,Inquiry_End))
FROM Tel_Inquiry
GROUP BY Inquiryer_Id
ORDER BY SUM(DATEDIFF(second,Inquiry_Begin,Inquiry_End))
DESC

SELECT TOP 3 Inquiryer_Id,COUNT(Inquiryer_Id) AS '撥打次數(shù)'
FROM Tel_Inquiry
GROUP BY Inquiryer_Id
ORDER BY COUNT(Inquiryer_Id)
DESC

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1、查詢20號部門中的員工信息

SELECT EMP.DEPTNO,DEPT.DNAME,EMP.EMPNO,EMP.ENAME,EMP.HIREDATE,EMP.JOB,EMP.MGR,EMP.SAL,EMP.COMM,DEPT.LOC
FROM EMP
LEFT JOIN DEPT
ON DEPT.DEPTNO=EMP.DEPTNO
WHERE EMP.DEPTNO=20

2、查找出名字以“MA”開頭的全部員工信息

SELECT EMP.DEPTNO,DEPT.DNAME,EMP.EMPNO,EMP.ENAME,EMP.HIREDATE,EMP.JOB,EMP.MGR,EMP.SAL,EMP.COMM,DEPT.LOC
FROM EMP
LEFT JOIN DEPT
ON DEPT.DEPTNO=EMP.DEPTNO
WHERE EMP.ENAME LIKE 'MA%'

3、按工種升序排列顯示全部員工的有關(guān)情況

SELECT EMP.DEPTNO,DEPT.DNAME,EMP.EMPNO,EMP.ENAME,EMP.HIREDATE,EMP.JOB,EMP.MGR,EMP.SAL,EMP.COMM,DEPT.LOC
FROM EMP
LEFT JOIN DEPT
ON DEPT.DEPTNO=EMP.DEPTNO
ORDER BY EMP.JOB
ASC

4、查詢統(tǒng)計各部門的員工數(shù)據(jù)

SELECT DEPT.DEPTNO,DEPT.DNAME,COUNT(*) AS '員工人數(shù)'
FROM EMP
LEFT JOIN DEPT
ON DEPT.DEPTNO=EMP.DEPTNO
GROUP BY DEPT.DEPTNO,DEPT.DNAME

5、查找出工資高于20號部門中所有員工的人員信息

SELECT EMP.DEPTNO,DEPT.DNAME,EMP.EMPNO,EMP.ENAME,EMP.HIREDATE,EMP.JOB,EMP.MGR,EMP.SAL,EMP.COMM,DEPT.LOC
FROM EMP
LEFT JOIN DEPT
ON DEPT.DEPTNO=EMP.DEPTNO
WHERE EMP.SAL>(SELECT MAX(EMP.SAL) FROM EMP WHERE EMP.DEPTNO=20)

6、為EMP表創(chuàng)建一個視圖emp10_view,要求只包括10號部門員工的有關(guān)信息。
CREATE VIEW MYVIEWS
AS
SELECT EMP.DEPTNO,DEPT.DNAME,EMP.EMPNO,EMP.ENAME,EMP.HIREDATE,EMP.JOB,EMP.MGR,EMP.SAL,EMP.COMM,DEPT.LOC
FROM EMP
LEFT JOIN DEPT
ON DEPT.DEPTNO=EMP.DEPTNO
WHERE DEPT.DEPTNO=10

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一張表dtTest里面有year,mouth,day三個字段,分別表示年月日,如何查找出今天之后的數(shù)據(jù)?
SELECT * FROM dtTest
WHERE GETDATE()<CONVERT(DATE,CONVERT(CHAR(4),Years)+'-'+CONVERT(CHAR(2),Mouths)+'-'+CONVERT(CHAR(2),Daies))

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

有一張學(xué)科分值表Score,里面有3個字段:語文,數(shù)學(xué),英語。比如有1條記錄分別表示語文70分,數(shù)學(xué)80分,英語58分,請用一條sql語句查詢該表記錄并按以下條件顯示出來:(大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。)
顯示格式:
語文 數(shù)學(xué) 英語
及格 優(yōu)秀 不及格

SELECT
CASE WHEN 語文>=80 THEN '優(yōu)秀' WHEN 語文>=60 THEN '及格' ELSE '不及格' END '語文',
CASE WHEN 數(shù)學(xué)>=80 THEN '優(yōu)秀' WHEN 數(shù)學(xué)>=60 THEN '及格' ELSE '不及格' END '數(shù)學(xué)',
CASE WHEN 英語>=80 THEN '優(yōu)秀' WHEN 英語>=60 THEN '及格' ELSE '不及格' END '英語'
FROM Score

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

創(chuàng)建索引

CREATE CLUSTERED INDEX riqi_person on person(date)
在person表的date字段上面創(chuàng)建名為riqi_person的【聚集索引】

CREATE NONCLUSTERED INDEX riqi_person on person(date)
在person表的date字段上面創(chuàng)建名為riqi_person的【非聚集索引】

CREATE CLUSTERED INDEX date_person on person(date,id)
在person表的date,age字段上面創(chuàng)建名為riqi_person的【復(fù)合聚集索引】

CREATE NONCLUSTERED INDEX date_person on person(date,age)
在person表的date,age字段上面創(chuàng)建名為riqi_person的【復(fù)合非聚集索引】

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SQL編程示例 (1)
DECLARE @i INT --聲明變量
SET @i = 1
DECLARE @no VARCHAR(15)
SET @no='201200000001'

WHILE @i < 1000000
BEGIN
SET @i =@i +1
SET @no =cast(cast(@no as bigint) + 1 as varchar)
INSERT INTO StudentInfo
VALUES
(@no,'HANSON','male','302')
END

SQL編程示例 (2)
DECLARE @PhoneNumber CHAR(12)='15305535987'
DECLARE @AreaNum CHAR(4)
SET @AreaNum=SUBSTRING(@PhoneNumber,4,4);
IF(@AreaNum='0551')
SELECT '合肥' AS '地區(qū)'
ELSE IF(@AreaNum='0552')
SELECT'蚌埠' AS '地區(qū)'
ELSE IF(@AreaNum='0553')
SELECT '蕪湖' AS '地區(qū)'
ELSE
SELECT '其他' AS '地區(qū)'

SQL編程示例 (3)
DECLARE @i INT
SET @i = 0
WHILE @i < 10
BEGIN
SET @i =@i +1
IF @i=4
CONTINUE
ELSE IF @i=8
BREAK
ELSE
PRINT @i
END

事務(wù)處理 @@error

SELECT * FROM Account
BEGIN TRANSACTION
DECLARE @errorSum INT
SET @errorSum=0
UPDATE Account SET ABalance=ABalance-200
WHERE AName='李四'
SET @errorSum=@errorSum+@@ERROR
UPDATE Account SET ABalance=ABalance+1000
WHERE AName='張三'
SET @errorSum=@errorSum+@@ERROR
IF @errorSum<>0 --如果有錯誤
BEGIN
print '交易失敗'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
print '交易成功'
COMMIT TRANSACTION
END
GO
--顯示轉(zhuǎn)賬后的賬戶余額
SELECT * FROM Account
GO


事務(wù)處理
--try-catch捕獲并處理
BEGIN TRY
BEGIN TRANSACTION
UPDATE Account
SET ABalance=ABalance-200
WHERE AName='李四'
UPDATE Account
SET ABalance=ABalance+200
WHERE AName='張三'
COMMIT TRANSACTION
END TRY
BEGIN CATCH
rollback
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = '出現(xiàn)了錯誤,錯誤信息:'+ERROR_MESSAGE(),@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
GO
BEGIN TRANSACTION;
BEGIN TRY
--李四取出元
UPDATE Account SET Balance=Balance-200 --更新帳戶余額
WHERE Name=N'李四'
--張三存入元
UPDATE Account SET Balance=Balance+1000 --更新帳戶余額
WHERE Name=N'張三'
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
GO

+++++++++++++++++++++++++++++++++++++++++

創(chuàng)建存儲過程
CREATE PROCEDURE avaday
@DAYS INT,
@ID INT
AS
BEGIN
SELECT
CASE WHEN StaffSex='female' AND (StaffUsed+@DAYS)<=5 THEN '批準(zhǔn)'
WHEN StaffSex='male' AND (StaffUsed+@DAYS)<=2 THEN '批準(zhǔn)'
ELSE '不批準(zhǔn)' END 批復(fù)結(jié)果
FROM Vacation
WHERE StaffId=@ID
END

EXEC avaday @ID=101,@DAYS=1

--with 臨時表

WITH
S
AS
(
SELECT TOP 2 Inquiry_Caller,count(*) AS 電話次數(shù)
FROM Tel_Inquiry
GROUP BY Inquiry_Caller
ORDER BY count(Inquiry_Caller) DESC
)
SELECT TOP 1 *
FROM S
ORDER BY 電話次數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/yixuezi/archive/2012/07/24/2607208.html

總結(jié)

以上是生活随笔為你收集整理的SQL 实用基础代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。