HELLO SQL SERVER

课程报名人数,加课程名

SELECT 
cs.CourseID AS 课程ID,
COUNT(*) AS 选择人数,
(SELECT c2.NAME FROM Course c2 WHERE c2.ID = cs.CourseID)AS 课程名称
FROM CourseSelection cs 
GROUP BY cs.CourseID

在这里插入图片描述

三个表连接查询,多个表亦是如此

SELECT 
s.ID AS '学生ID',
s.NAME,
cs.CourseID AS '课程ID',
c.NAME 
FROM Student s LEFT JOIN CourseSelection cs 
ON s.ID = cs.SID 
LEFT JOIN Course c 
ON c.ID = cs.CourseID 

左外连接 可记为保留左侧不匹配的

SELECT 
s.ID AS '学生ID',
s.NAME,
cs.CourseID AS '课程ID'
FROM Student s LEFT JOIN CourseSelection cs 
ON s.ID = cs.SID 

空值被保留了
在这里插入图片描述

CourseSelection插入数据来自查询别的表的结果(中文前面加N)

INSERT INTO CourseSelection (SID,CourseID)
VALUES((SELECT ID FROM Student WHERE NAME = N'琴'),(SELECT ID FROM Course WHERE NAME = N'web开发'))

SQL server中似乎不能光JOIN使用后面要接on

交叉连接笛卡尔积后面没有判断条件

SELECT * FROM Student CROSS JOIN Course 

删除 Id的约束

ALTER TABLE Student 
DROP CONSTRAINT ID

为ID添加默认值的约束

ALTER TABLE Student ADD CONSTRAINT ID DEFAULT (SUBSTRING(cast(RAND() AS char(18)),3,16)) FOR ID

更改 ID 约束 默认值

ALTER TABLE JWGL.dbo.Student DROP CONSTRAINT ID GO
ALTER TABLE JWGL.dbo.Student ADD  DEFAULT (SUBSTRING(cast(RAND() AS char(18)),3,16)) FOR ID GO
ALTER TABLE Student ALTER COLUMN NAME NCHAR(10) NOT NULL

更改 CLASS为Chinese_PRC_CI_AS collate 可以输入中文 前面也得加N 服!

ALTER TABLE Student
ALTER COLUMN CLASS char(16) COLLATE Chinese_PRC_CI_AS NULL


INSERT INTO Student (NAME,CLASS)
VALUES(N'阿萨德',N'商店')

添加列SEX 使用中文

ALTER TABLE Student 
ADD SEX char(2) COLLATE Chinese_PRC_CI_AS NULL

添加约束 男或女,不加N验证不通过,服!

ALTER TABLE Student 
ADD CONSTRAINT SEX CHECK(SEX = N'男' Or SEX = N'女')

删除SEX的约束

ALTER TABLE Student 
DROP CONSTRAINT SEX

猜你喜欢

转载自blog.csdn.net/printf_hello/article/details/114801590
今日推荐