格式:
CREATE DATABASE 数据库名称
例如:
CREATE DATABASE SCC
格式:
CREATE DATABASE 数据库名
ON PRIMARY
(
NAME='逻辑名称',
FILENAME='文件存储路径'
)
LOG ON
(
NAME='逻辑名称',
FILENAME='文件存储路径'
)
例如:
CREATE DATABASE SCC
ON PRIMARY
(
NAME='SCC_Data',
FILENAME='D:\SQL\SCC\SCC_Data.mdf',
SIZE=4MB
)
LOG ON
(
NAME='SCC_Log',
FILENAME='D:\SQL\SCC\SCC_Log.ldf',
SIZE=2MB
)
格式:
DROP DATABASE 数据库名
例如:
DROP DATABASE SCC
格式:
USE 数据库名
GO
CREATE TABLE 表名
(
列名 数据类型(长度) 列级约束
)
例如:
USE SCC
GO
CREATE TABLE 学生表
(
Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(8) NOT NULL,
Sage SMALLINT DEFAULT 20, --默认值为20
Sex CHAR(2) CHECK(Sex='男' or Sex='女')
)
格式:
USE SCC
GO
CREATE VIEW 视图名
AS
select 列名
from 表名
GO
例如:
USE SCC
GO
CREATE VIEW View_Card
as
select *
from Card
GO
格式一:
列名 数据类型(长度) PRIMARY KEY
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5) PRIMARY KEY
)
格式二:
CONSTRAINT 约束名 PRIMARY KEY(列名) --CONSTRAINTS语句
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Sno CHAR(5),
Sname CHAR(8),
CONSTRAINT C1 PRIMARY KEY(Sno) --CONSTRAINT C1 PRIMARY KEY(Sno,Sname)————双主键
)
格式:
CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 被引用表的名称(列名)
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5),
CONSTRAINT C1 PRIMARY KEY(Cno)
)
GO
CREATE TABLE 选课表
(
Cno CHAR(5),
Sno CHAR(5),
CONSTRAINT C2 PRIMARY KEY(Sno),
CONSTRAINT C3 FOREIGN KEY(Cno) REFERENCES 课程表(Cno)
)
格式:
列名 数据类型(长度) NOT NULL
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5) NOT NULL
)
格式:
列名 数据类型(长度) UNIQUE
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5) UNIQUE
)
格式:
INSERT INTO 表名 (列名1, 列名2) VALUES(数据1, 数据2);
例如:
INSERT INTO 学生表 (Sid, Sname) VALUES(3, '陈宇辉');
格式:
UPDATE 表名
SET 列名1=新值1, 列名2=新值2
WHERE 过滤条件
例如:
UPDATE 学生表
SET Score='99', Sage='25'
WHERE Sname='陈宇辉'
格式:
DELETE
FROM 表名
WHERE 列名='值'
例如:
DELETE
FROM 学生表
WHERE Sno = '8001'
AND SAGE not in ('20', '21')
格式:
ALTER TABLE 表名 DROP CONSTRAINT 约束名
例如:
ALTER TABLE 选课表 DROP CONSTRAINT C2
格式:
ALTER DATABASE 数据库名
SET OFFLINE WITH ROLLBACK IMMEDIATE
例如:
ALTER DATABASE SCC
SET OFFLINE WITH ROLLBACK IMMEDIATE
格式:
EXEC sp_detach_db @dbname=N'数据库名'
例如:
EXEC sp_detach_db @dbname=N'SCC'
格式:
EXEC sp_attach_db @dbname=N'数据库名',
@filename1=N'.mdf文件的存储路径', @filename2=N'.ldf文件的存储路径'
例如:
EXEC sp_attach_db @dbname=N'SCC',
@filename1=N'D:\SQL\SCC\SCC_Data.mdf', @filename2=N'D:\SQL\SCC\SCC_Log.ldf'
格式:
SELECT 列名
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT SNO, SNAME
FROM STUDENT
WHERE SDEP='数学系'
格式:
SELECT 列名 as 重命名
FROM 表名
WHERE 查询条件
SELECT 列名*0.8 --将查询数据乘以0.8后输出
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT SN, SGRADE, SGRADE*0.8 as 成绩
FROM SC
WHERE CN='C1'
格式:
ORDER BY 列名 DESC --降序排列
ORDER BY 列名 ASC --升序排列
ORDER BY 列名1 DESC, 列名2 ASC --先按“列名1”降序排列,若“列名1”相同,则按“列名2”升序排列
ORDER BY 2 DESCA --按第二列降序排列
例如:
USE SCC
GO
SELECT SN, SGRADE
FROM SC
WHERE CN='C1'
ORDER BY SGRADE DESC, SN ASC
格式:
SELECT DISTINCT 列名
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT DISTINCT SNO, SNAME
FROM STUDENT
WHERE SDEP='数学系'
格式一:(当要插入的表不存在时)
SELECT 列名
INTO 新表名
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT *
INTO TU_STUDENT
FROM STUDENT
WHERE SDEP='计算机系'
格式二:(当要插入的表本身便存在时)
INSERT into 表名1(列名1, 列名2)
select 列名1, 列名2
from 表名2
where 查询条件
例如:
INSERT into Student_back(S_StuNo,S_Name,S_Sex,S_Height)
select S_StuNo,S_Name,S_Sex,S_Height
from Student
where S_Sex='女'
格式:
SELECT count(*)
FROM 表名
例如:
USE SCC
GO
SELECT count(*)
FROM STUDENT
格式:
SELECT max(列名), min(列名)
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT COURSE.CNAME, MAX(SC.SGRADE), MIN(SC.SGRADE)
FROM SC, COURSE
WHERE SC.CN=COURSE.CNO
GROUP BY COURSE.CNAME --以COURSE.CNAME为依据分组
格式:
SELECT AVG(列名)
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT STUDENT.SNAME, AVG(SC.SGRADE)
FROM STUDENT, SC
WHERE STUDENT.SNO=SC.SN
GROUP BY STUDENT.SNAME
格式:
SELECT 列名
FROM 表名1, 表名2
WHERE 表名1.列名=表名2.列名
例如:
USE SCC
GO
SELECT *
FROM STUDENT, SC
WHERE STUDENT.SNO=SC.SN
格式:
SELECT 列名
FROM 表名1 JOIN 表名2 ON 表名1.列名=表名2.列名
例如:
USE SCC
GO
SELECT *
FROM STUDENT JOIN SC ON STUDENT.SNO=SC.SN
代码:
USE SCC
GO
SELECT *
FROM STUDENT
WHERE SNAME LIKE '张%'
代码:
USE SCC
GO
SELECT *
FROM STUDENT
WHERE (SDEP='数学系' or SDEP='计算机系')
代码:
USE SCC
GO
SELECT *
FROM SC
WHERE SGRADE is NULL
代码:
USE SCC
GO
SELECT
FROM SC
GROUP BY SN having count(*)>3
代码:
USE SCC
GO
SELECT SDEP, SSEX, COUNT(*)
FROM STUDENT
GROUP BY SDEP, SSEX
ORDER BY SDEP
代码:
USE SCC
GO
SELECT X.CNO, Y.PRECNO
FROM COURSE X, COURSE Y
WHERE X.PRECNO=Y.CNO
代码:
USE SCC
GO
SELECT *
FROM SC, STUDENT
WHERE SC.CN='C1'
AND STUDENT.SNO=SC.SN
AND SC.SGRADE>
(
SELECT SC.SGRADE
FROM SC, STUDENT
WHERE SC.CN='C1'
AND STUDENT.SNAME='张三'
AND STUDENT.SNO=SC.SN
)
代码:
【25】查询选修了全部课程的学生
USE SCC
GO
SELECT SNAME
FROM STUDENT
WHERE NOT EXISTS
(
SELECT *
FROM COURSE
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE SC.SN=STUDENT.SNO
AND SC.CN=COURSE.CNO
)
)
代码:
USE SCC
GO
SELECT SNAME, SNO
FROM STUDENT
WHERE SNO NOT IN('S2')
AND SNO IN
(
SELECT SN
FROM SC X
WHERE NOT EXISTS
(
SELECT *
FROM SC Y
WHERE Y.SN='S2'
AND NOT EXISTS
(
SELECT *
FROM SC Z
WHERE Y.CN=Z.CN
AND X. SN=Z.SN
)
)
)
代码:
USE Book
GO
SELECT BType
FROM BookInfo
GROUP BY BType
having max(BPrice)>=ALL
(
SELECT AVG(BPrice)*2
FROM BookInfo
GROUP BY BType
)
例一:in
语句
USE SCC
GO
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN=COURSE.CNO
AND SC.CN='C1'
AND SC.SN IN
(
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN=COURSE.CNO
AND SC.CN='C2'
)
例二:exists
语句
USE SCC
GO
SELECT A.SN
FROM SC A, COURSE
WHERE A.CN=COURSE.CNO
AND A.CN='C1'
AND EXISTS
(
SELECT *
FROM SC B, COURSE
WHERE B.CN=COURSE.CNO
AND B.CN='C2'
AND B.SN=A.SN
)
例三:intersect
语句
USE SCC
GO
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN='C1'
AND SC.CN=COURSE.CNO
INTERSECT
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN='C2'
AND SC.CN=COURSE.CNO