admin管理员组文章数量:1794759
《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版权声明:本文标题:《SQL Server基础——SQL语句》 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686995449a126684.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论