数据库常用sql语句有哪些

常用的SQL语句有很多。
以下是一些示例:
1 询问“001 ”课程成绩高于“002 ”课程成绩的所有学生的学号: sql 选择美国 FROM (SELECT S, 得分 FROM SC WHERE C = '001 ') a, (选择 S,得分来自 SC,其中 C = '002 ')b 其中 a.score > b.score AND a.S = b.S;
2 . 查询平均分在6 0分以上的学生的学号和平均分: sql 选择 S,平均(分数) 来自SC 按 S 分组 平均得分 > 6 0;
3 . 询问所有学生的学号、姓名、所修课程数及总分: sql SELECT Student.S, StudentName, COUNT(SC.C), SUM(分数) 从学生离开加入 SC ON Student.S = SC.S 按学生.S、姓名分组;
4 、询问姓“李”的老师有多少人: sql 选择计数(不同(Tname)) 来自老师 WHERE Tname LIKE '李%';
5 、查看尚未上“叶平”老师班级的学生的学号和姓名: sql 选择学生.S,学生.Sname 来自学生 不存在的地方(选择不同的(SC.S) 来自 SC,课程,老师 WHERE SC.C = Course.C AND Teacher.T = Course.T AND Teacher.Tname = '叶平');
6 、查询学习过“001 ”并且同时学习过课程号“002 ”的学生的学号和姓名: sql 选择学生.S,学生.Sname 来自南卡罗来纳州学生 WHERE Student.S = SC.S AND SC.C = '001 ' AND EXISTS(从 SC AS SC_2 中选择,其中 SC_2 .S = SC.S AND SC_2 .C = '002 ');
7 . 询问参加过“叶平”教授的所有课程的学号和学生姓名: sql 选择 S,名称 来自学生 S 在哪里(选择 S 来自 SC,课程,老师 WHERE SC.C = Course.C AND Teacher.T = Course.T AND Teacher.Tname = '叶平' GROUP BY S HAVING COUNT(SC.C) = (SELECT COUNT(C) FROM Course, Teacher WHERE Teacher.T = Course.T AND Tname = '叶平'));
8 、查询课程号“002 ”成绩低于课程号“001 ”的所有学生的学号和姓名: sql 选择 S,名称 FROM (SELECT Student.S, StudentName, 分数, (SELECT 分数 FROM SC AS SC_2 WHERE SC_2 .S = Student.S AND SC_2 .C = '002 ') AS 分数2 来自南卡罗来纳州学生 其中 Student.S = SC.S AND C = '001 ') S_2 WHERE 标记2 < 分数;
9 . 查询所有课程成绩低于6 0分的学生的学号和姓名: sql 选择 S,名称 来自学生 哪里不在(选择学生。
S 来自南卡罗来纳州学生 其中 S.S = SC.S 并且分数 > 6 0);
1 0. 询问未完成所有课程的学生学号和姓名: sql 选择学生.S,学生.Sname 来自南卡罗来纳州学生 其中学生.S = SC.S 按学生.S、学生.Sname 分组 HAVING COUNT(C) <(从课程中选择 COUNT(C));
这只是SQL语句的一部分,还有很多其他类型的查询和操作可以使用。

如果用sql表示下述问题?

你好,我们来谈谈这些SQL命令以及需要注意的地方。

首先,你写的建表语句很清楚。
“学生”表、“课程”表和“成绩”表中的字段均已定义,并且已正确添加外键约束。
成绩表中的复合主键(学号+科目号)设计得很好。
用 GO 分号分隔语句是正确的,SQL Server 会自动识别这一点。

第一个查询 SELECT FROM Student 表 WHERE name LIKE 'Liu%' - 不是问题。
如果你想查找姓刘的学生的信息,LIKE“Liu%”是标准的书写方式。

第七个问题其实有点复杂。
您合并它是因为您说:“学生表中没有年龄字段,但我想查询 1 8 岁到 2 3 岁之间的所有学生的信息。
”这个想法可以理解,但实际上与标题的本意相矛盾。
如果你的系统实际上没有年龄字段,直接运行age BETWEEN 1 8 AND 2 3 会报错。
因此,先添加age字段再查询的做法是解决该问题的实用方法。
然而,这个问题本身并没有那么严格,值得评论。

修改分数表数据 更新分数表 SET 分数 = 6 0 WHERE 分数 < 6>作为参考,如果分数表中的分数为 NULL,则条件 < 6>如果需要将所有 Null 值更改为 6 0,则需要添加一个称为 IS NULL 的 OR 结果。

添加记录 INSERT INTO 学生表(学号、姓名、专业、班级) VALUES ('2 007 05 06 ', '徐华', '电子商务', '09 1 ') - 没问题。
数据已添加。
请记住,学号是主键,不能重复。

问题 6 SELECT 姓名、性别、年龄 FROM 学生表 WHERE 学号 IN (SELECT 学号 FROM 年级表 WHERE 课程号 = '2 ') - 这个查询的逻辑是正确的。
找出选修科目“2 ”的学生的姓名、性别和年龄。
子查询找到选择课程2 的学生的学号,然后外查询根据这些学号返回表中的信息。
然而,这里假设成绩单上记录的成绩是学生选课的结果。
如果成绩表只有学号和课程号而没有成绩字段,则此查询不正确。
不过根据我们之前创建的表来看,score表有一个score字段,所以这样写也是可以的。

问题 8 DELETE FROM Student Table WHERE Major = 'Computer applications' - 删除专业为计算机应用的学生。
该命令直接删除该行。
如果Student表中的学号被其他表(如Grades表)引用,直接删除可能会报外键约束错误,所以先慎重考虑。
如果想确定删除,可以添加CASCADE删除或者先清理依赖。

问题9 SELECT FROM Student table WHERE school number IN (SELECT Student number FROMgrade table WHEREgrade IS NOT NULL) - 该查询查找有成绩记录的学生。
子查询过滤成绩不为空的学号,外层查询根据这些学号检索学生信息。
这个逻辑没有问题,但是返回的学生信息中还有其他字段(姓名、由于专业(专业等)的价值与成绩无关,所以就看运气了。
如果只想查看学号,更简单的方法是直接在记分卡的学号一栏查看成绩是否为 IS NOT NULL。

问题 1 0 SELECT TOP 5 FROM Student Table - 检查前 5 条记录。
这不是问题。
不过,TOP在SQL Server中是语法,在其他数据库中可以使用LIMIT 5
一般来说,编写的SQL语句大多是正确的,逻辑清晰。
虽然问题7 的处理很实用,但问题本身也有其缺陷。
问题 8 :小心外键约束。
其他的可能需要根据你具体的数据库环境进行微调(例如学号字段是否实际存在),但大方向就可以了。

SQL Sever修改表结构

上星期。
修改表结构。

学生桌。
添加“进入时间”(S_entrance) 列。
数据类型为日期。
更改学生添加 S_entrance 日期
KCXX 表。
添加字段:“老师”。
数据类型为 char(1 0)。
ALTER TABLE KCXX ADD coach char(1 0)
KCXX 表。
添加标识列: ID (类型 int ,初始值 1 ,增量 1 )。
ALTER TABLE KCXX ADD ID int ID(1 ,1 )
学生表。
插入出生年份栏:出生日期。
设置为自动计算:2 02 1
Sage。
ALTER TABLE STUDENT ADD Sbirth AS 2 02 1
Sage
STUDENT 表的年龄 (Sage) 列。
数据类型更改为整数。
VARIABLE STUDENT ALTER COLUMN Sage INT
KCXX 表的“教师”字段。
说出老师的名字。
数据类型为 char(2 0)。
两步。
sp_rename 'KCXX.老师'; ‘老师’、‘专栏’ ALTER TABLE KCXX ALTER COLUMN Teacher char(2 0)
课程表的学分列。
输入参数值(1 ~4 )。
变量课程添加约束 chk_credit 检查(学分 >= 1 且学分 <= 4 )
教科书表的“价格”列。
创建检查约束 chk_JG。
限制其值非空。
ALTER TABLE 教科书 ADD CONSTRAINT chk_JG CHECK (PRICE IS NOT NULL)
课程表的课程名称 (Cname) 列。
输入必须具有唯一值的参数。
VARIABLE COURSE ADD UNIQUE (Cname)
学生表的性别列。
添加了默认值“男性”。
ALTER TABLE Student ADD CONSTRAINT MoRendefault 'Male' FOR Ssex
教科书表的“BookTitle”。
作为主键。
ALTER TABLE Textbook ADD CONSTRAINT PK_Textbook_Book Title PRIMARY KEY (BookTitle)
Textbook 表的主题列。
输入外键。
表格内容的请参阅主题编号。
您一次只能添加一个外键约束。
转换表教科书参数 FK_Textbook_Discipline 外键(主题) 参考文献 主题(主题编号)
教科书表的“类型”列。
创建名为 chk_LX 的检查参数。
将其值限制为“新书”或“旧书”。
ALTER TABLE 教科书 ADD CONSTRAINT chk_LX CHECK ('newbook', 'secondhandbook'))
教科书表的“类型”列。
添加默认值“新书”。
ALTER TABLE Textbook ADD DEFAULT 'NEW BOOK'
类型 XSDA1 表的 Sbirth 列。
删除 更改表 XSDA1 删除列 Sbirth
教科书表的外键。
删除 更改表教科书约束 FK__Textbook__Discipline__6 6 6 03 5 6 5
教科书表的约束。
删除 更改表教科书 DROP CONSTRAINT chk_date
可以使用更改表 xscj 约束...语句。
删除多个外键。
移位表xscj下降极限fk1 ; fk2
数据表。
只能指定一个 PRIMARY KEY 约束。
但是,可以指定多个 UNIQUE 参数。

主键字段的值。
不允许 NULL。
UNIQUE 字段的值。
最好是NULL。

创建 PRIMARY KEY 约束时。
系统自动生成索引。
默认是批量索引。

创建 UNIQUE 约束时。
系统自动生成唯一标签。
原来的是非聚集索引。

先删除原来的外键。
ALTER TABLE xscj DROP CONSTRAINT FK_kcxx_course number
使用级联插入新的外键。
更改表 xscj 参数 FK_kcxx_课程编号 外键(课程编号) 参考 kcxx(课程编号) 更新级联
首先删除原始外键。
ALTER TABLE xscj DROP CONSTRAINT FK_kcxx_course number
使用级联插入新的外键。
更改表 xscj 约束 FK_kcxx_课程编号 外键(课程编号) 参考 kcxx(课程编号) 删除级联
忘记。