admin管理员组

文章数量:1794759

《SQL Server基础——SQL语句》

《SQL Server基础——SQL语句》

SQL Server基础——SQL语句

        

        

        

一、创建和删除数据库;
1.创建数据库(默认化初始值)

格式:

CREATE DATABASE 数据库名称

例如:

CREATE DATABASE SCC          2.创建数据库(自定义初始值)

格式:

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 )          3.删除数据库

格式:

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                   四、约束语句;
1.主键约束(PRIMARY KEY)

格式一:

列名 数据类型(长度) 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)————双主键 )          2.外键约束(FOREIGN KEY)

格式:

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) )          3.非空约束(NOT NULL)

格式:

列名 数据类型(长度) NOT NULL

例如:

USE SCC GO CREATE TABLE 课程表 ( Cno CHAR(5) NOT NULL )          4.唯一约束(UNIQUE)

格式:

列名 数据类型(长度) UNIQUE

例如:

USE SCC GO CREATE TABLE 课程表 ( Cno CHAR(5) UNIQUE )                   五、修改语句;
1. 添加数据

格式:

INSERT INTO 表名 (列名1, 列名2) VALUES(数据1, 数据2);

例如:

INSERT INTO 学生表 (Sid, Sname) VALUES(3, '陈宇辉');          2. 更改数据

格式:

UPDATE 表名 SET 列名1=新值1, 列名2=新值2 WHERE 过滤条件

例如:

UPDATE 学生表 SET Score='99', Sage='25' WHERE Sname='陈宇辉'          3.删除数据(一行)

格式:

DELETE FROM 表名 WHERE 列名='值'

例如:

DELETE FROM 学生表 WHERE Sno = '8001' AND SAGE not in ('20', '21')          4.删除约束

格式:

ALTER TABLE 表名 DROP CONSTRAINT 约束名

例如:

ALTER TABLE 选课表 DROP CONSTRAINT C2                   六、终局之战;
1. 断开数据库连接

格式:

ALTER DATABASE 数据库名 SET OFFLINE WITH ROLLBACK IMMEDIATE

例如:

ALTER DATABASE SCC SET OFFLINE WITH ROLLBACK IMMEDIATE          2. 分离数据库

格式:

EXEC sp_detach_db @dbname=N'数据库名'

例如:

EXEC sp_detach_db @dbname=N'SCC'          3.附加数据库

格式:

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'                   七、查询语句;
1.查询某列

格式:

SELECT 列名 FROM 表名 WHERE 查询条件

例如:

USE SCC GO SELECT SNO, SNAME FROM STUDENT WHERE SDEP='数学系'                  2.自定义查询结果

格式:

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'          3.正倒序排列

格式:

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          4.去除重复项

格式:

SELECT DISTINCT 列名 FROM 表名 WHERE 查询条件

例如:

USE SCC GO SELECT DISTINCT SNO, SNAME FROM STUDENT WHERE SDEP='数学系'          5.把一个表的数据插入到另一个表

格式一:(当要插入的表不存在时)

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='女'                   八、分类汇总;
1.求总人数

格式:

SELECT count(*) FROM 表名

例如:

USE SCC GO SELECT count(*) FROM STUDENT          2.求最高值和最小值

格式:

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为依据分组          3.求平均值

格式:

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                   九、连接查询;
1.第一种连接方式

格式:

SELECT 列名 FROM 表名1, 表名2 WHERE 表名1.列名=表名2.列名

例如:

USE SCC GO SELECT * FROM STUDENT, SC WHERE STUDENT.SNO=SC.SN          2.第二种连接方式

格式:

SELECT 列名 FROM 表名1 JOIN 表名2 ON 表名1.列名=表名2.列名

例如:

USE SCC GO SELECT * FROM STUDENT JOIN SC ON STUDENT.SNO=SC.SN                   十、特殊查询; 1.姓张的同学

代码:

USE SCC GO SELECT * FROM STUDENT WHERE SNAME LIKE '张%'          2.数学系或计算机系的同学

代码:

USE SCC GO SELECT * FROM STUDENT WHERE (SDEP='数学系' or SDEP='计算机系')          3.缺少了成绩的同学

代码:

USE SCC GO SELECT * FROM SC WHERE SGRADE is NULL          4.选修课超过三门的学生学号

代码:

USE SCC GO SELECT FROM SC GROUP BY SN having count(*)>3          5.求各系的男女生人数

代码:

USE SCC GO SELECT SDEP, SSEX, COUNT(*) FROM STUDENT GROUP BY SDEP, SSEX ORDER BY SDEP          6.查询每一门课的间接先行课

代码:

USE SCC GO SELECT X.CNO, Y.PRECNO FROM COURSE X, COURSE Y WHERE X.PRECNO=Y.CNO          7.求 C1 课程的成绩高于张三的学生

代码:

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 )          8.查询选修了全部课程的学生

代码:

【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 ) )          9.求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名

代码:

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 ) ) )          10.类别中最高的图书定价不低于全部按类别分组的图书平均定价的 2 倍

代码:

USE Book GO SELECT BType FROM BookInfo GROUP BY BType having max(BPrice)>=ALL ( SELECT AVG(BPrice)*2 FROM BookInfo GROUP BY BType )          11.选修C1课程,并且也选修C2课程的学生学号

例一: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

本文标签: 语句基础SQLSERVER