SQL语言

article/2025/10/6 10:16:00

创建数据库

创建table,create table后可以"库名.表名"或者"库名.用户.表名",也可以用上面工具选择,如果名字中含有特殊关键字,mysql需要交``,sql server需要加[]

创建表

CREATE TABLE Student (S# CHAR ( 8 ),Sname CHAR ( 10 ),Ssex CHAR ( 2 ),Sage INTEGER,D# CHAR ( 2 ),Sclass CHAR ( 6 ) 
);
CREATE TABLE Dept ( D# CHAR ( 2 ), Dname CHAR ( 10 ), Dean CHAR ( 10 )
);
CREATE TABLE Course (C# CHAR ( 3 ),Cname CHAR ( 12 ),Chours INTEGER,Credit FLOAT ( 1 ),T# CHAR ( 3 ) 
);
CREATE TABLE Teacher ( T# CHAR ( 3 ), Tname CHAR ( 10 ), D# CHAR ( 2 ), Salary FLOAT ( 2 ) 
);
CREATE TABLE SC ( S# CHAR ( 8 ), C# CHAR ( 3 ), Score FLOAT ( 1 ) 
);

向表中追加元组

INSERT INTO [Student]([S#], [Sname], [Ssex], [Sage], [D#], [Sclass]) VALUES ('98030101', '张三      ', '男', 20, '03', '980301'); 
INSERT INTO [Student]([S#], [Sname], [Ssex], [Sage], [D#], [Sclass]) VALUES ('98030102', '张四      ', '女', 20, '03', '980301'); 
INSERT INTO [Student]([S#], [Sname], [Ssex], [Sage], [D#], [Sclass]) VALUES ('98030103', '张五      ', '男', 19, '03', '980301'); 
INSERT INTO [Student]([S#], [Sname], [Ssex], [Sage], [D#], [Sclass]) VALUES ('98040201', '王三      ', '男', 20, '04', '980402'); 
INSERT INTO [Student]([S#], [Sname], [Ssex], [Sage], [D#], [Sclass]) VALUES ('98040202', '王四      ', '男', 21, '04', '980402'); 
INSERT INTO [Student]([S#], [Sname], [Ssex], [Sage], [D#], [Sclass]) VALUES ('98040203', '王五      ', '女', 19, '04', '980402'); 
INSERT INTO [Dept]([D#], [Dname], [Dean]) VALUES ('01', '机电      ', '李三      '); 
INSERT INTO [Dept]([D#], [Dname], [Dean]) VALUES ('02', '能源      ', '李四      '); 
INSERT INTO [Dept]([D#], [Dname], [Dean]) VALUES ('03', '计算机    ', '李五      '); 
INSERT INTO [Dept]([D#], [Dname], [Dean]) VALUES ('04', '自动控制  ', '李六      '); 
INSERT INTO [Course]([C#], [Cname], [Chours], [Credit], [T#]) VALUES ('001', '数据库      ', 40, 6, '001'); 
INSERT INTO [Course]([C#], [Cname], [Chours], [Credit], [T#]) VALUES ('003', '数据结构    ', 40, 6, '003'); 
INSERT INTO [Course]([C#], [Cname], [Chours], [Credit], [T#]) VALUES ('004', '编译原理    ', 40, 6, '001'); 
INSERT INTO [Course]([C#], [Cname], [Chours], [Credit], [T#]) VALUES ('005', 'C语言       ', 30, 4.5, '003'); 
INSERT INTO [Course]([C#], [Cname], [Chours], [Credit], [T#]) VALUES ('002', '高等数学    ', 80, 12, '004'); 
INSERT INTO [Teacher]([T#], [Tname], [D#], [Salary]) VALUES ('001', '赵三      ', '01', 1200); 
INSERT INTO [Teacher]([T#], [Tname], [D#], [Salary]) VALUES ('002', '赵四      ', '03', 1400); 
INSERT INTO [Teacher]([T#], [Tname], [D#], [Salary]) VALUES ('003', '赵五      ', '03', 1000); 
INSERT INTO [Teacher]([T#], [Tname], [D#], [Salary]) VALUES ('004', '赵六      ', '04', 1100); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98030101', '001', 92); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98030101', '002', 85); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98030101', '003', 88); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98040202', '002', 90); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98040202', '003', 80); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98040202', '001', 55); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98040203', '003', 56); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98030102', '001', 54); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98030102', '002', 85); 
INSERT INTO [SC]([S#], [C#], [Score]) VALUES ('98030102', '003', 48); 

查询

简单查询

检索学生表中所有年龄小于等于19岁的学生的年龄及姓名

SELECT Sname,Sage
FROM Student
WHERE Sage<=19;

检索教师表中所有工资少于1500元或者工资大于2000元 并且是03系的教师姓名?

错误

SELECT Tname 
FROM Teacher 
WHERE Salary < 1500 OR Salary > 2000 AND D# = '03';
--相当于Salary < 1500 OR (Salary > 2000 AND D# = '03')

正确

SELECT Tname 
FROM Teacher 
WHERE (Salary < 1500 OR Salary > 2000) AND D# = '03';

在选课表中,检索成绩大于80分的所有学号

SELECT DISTINCT S# 
FROM SC
WHERE Score>80;

检索结果中要求无重复元组, 是通过DISTINCT保留字的使用来实现的。

检索002号课大于80分的所有同学学号并按成绩由高到低顺序显示

SELECT S#
FROM SC
WHERE C#='002' AND Score>80
ORDER BY Score DESC;

结果排序问题
DBMS可以对检索结果进行排序,可以升序排列,也可以降序排列。

  • Select语句中结果排序是通过增加order by子句实现的

order by 列名 [asc | desc]

  • 意义为检索结果按指定列名进行排序,若后跟asc或省略,则为升序;若后跟desc, 则为降序。

模糊查询问题
比如检索姓张的学生,检索张某某;这类查询问题,Select语句是通过在检索条件中引入运算符like来表示的

  • 含有like运算符的表达式

列名 [not] like“字符串”

  • 找出匹配给定字符串的字符串。其中给定字符串中可以出现%, _等匹配符.
  • 匹配规则:
    • “%” 匹配零个或多个字符
    • “_” 匹配任意单个字符 两个下划线表示一个汉字
    • “ \ ” 转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待, 如用 “%”去匹配字符%,用_ 去匹配字符_

检索所有姓张的学生学号及姓名

SELECT S#,Sname
FROM Student
WHERE Sname LIKE '张%';

多表联合查询

按“001”号课成绩由高到低顺序显示所有学生的姓名(二表连接)

SELECTSname 
FROMStudent,SC 
WHEREStudent.S#= SC.S# AND SC.C#= '001' 
ORDER BYScore DESC;

求有薪水差额的任意两位教师

SELECTT1.Tname AS Teacher1,T2.Tname AS Teacher2 
FROMTeacher T1,Teacher T2 
WHERET1.Salary> T2.Salary;

AS可以省略,为了方便区分第一行在映射结果时也重命名,Teacher1,Teacher2

求“001”号课成绩比“002”号课成绩高的所有学生的学号

SELECT S1.S# 
FROMSC S1,SC S2 
WHERES1.S# = S2.S# AND S1.C#= '001' AND S2.C#= '002' AND S1.Score > S2.Score;

增删改

单一元组新增

INSERT INTO Teacher ( T#, Tname, D#, Salary )
VALUES( '005', '阮小七', '03', '1250' );
INSERT INTO Teacher
VALUES( '005', '阮小七', '03', '1250' );

批元组新增

讲选择的内容加入表格

新建立Table: St(S#, Sname), 将检索到的满足条件的同学新增到该表中

CREATE TABLE St ( S# CHAR ( 8 ), Sname CHAR ( 10 ) );
INSERT INTO St ( S#, Sname ) 
SELECTS#,Sname 
FROMStudent 
WHERESname LIKE '%三';

删除SC表中所有元组

DELETE FROM SC;

删除98030101号同学所选的所有课程

DELETE 
FROMSC 
WHERES# = '98030101';

将所有计算机系的教师工资上调10%

UPDATE Teacher 
SET Salary = Salary * 1.1 
WHERED# IN ( SELECT D# FROM Dept WHERE Dname = '计算机' );

当某同学001号课的成绩低于该课程平均成绩时,将该同学该门课成绩提高5%

UPDATE SC 
SET Score = Score * 1.05 
WHEREC# = '001' AND Score < SOME ( SELECT AVG ( Score ) FROM SC WHERE C# = '001' );

修正与撤销

在学生表Student(S#,Sname,Ssex,Sage,D#,Sclass)基础上增加二列Saddr, PID

ALTER TABLE Student ADD Saddr CHAR [40],PID CHAR [18];

将上例表中Sname列的数据类型增加两个字符

ALTER TABLE Student ALTER COLUMN Sname CHAR ( 10 );

SQL Server / MS Access:

ALTER TABLE table_name
ALTER COLUMN column_name datatype;

My SQL / Oracle:

ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

Oracle 10G 之后版本:

ALTER TABLE table_name
MODIFY column_name datatype;

删除学生姓名必须取唯一值的约束

ALTER TABLE Student DROP CONSTRAINT Sname;

撤消学生表Student

DROP TABLE Student;

SQL-delete语句只是删除表中的元组,而撤消基本表droptable的操作是撤消包含表格式、表中所有元组、由该表导出的视图等相关的所有内容,所以使用要特别注意。

撤消SCT数据库

DROP DATABASE SCT;

http://chatgpt.dhexx.cn/article/mgR3OIAX.shtml

相关文章

mysql -sql编程

基础语句 # 创建库 create database dome; # 切换到数据库 use dome; # 创建表 create table z (a int unsigned); # 查看表show create table z; # 查看表结构 desc z; # 插入数据 insert into z value(1);# 修改表字段类型 alter table zz change column a a int auto_incre…

pl/SQL编程基础

一、PL/SQL编程基础 1、pl/sql的组成&#xff1a;声明块、执行块、异常处理块 2、编制代码实现12...100的计算 3、编写求u12...100的结果并显示的存储过程 4、编写求12...n的带参数的存储过程 三、函数编程 1、函数的概念 function函数,存储在数据库中的带返回值的命名pl/s…

PL-SQL编程

PL/SQL介绍&#xff1a; PL/SQL是ORACLE对标准数据库语言的扩展 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言 PL/SQL 是对 SQL 的扩展 支持多种数据类型&#xff0c;如大对象和集合类型&#xff0c;可使用条件和循环等控制结构 可用于创…

SQL编程学习01

在正式开始学习前&#xff0c;我发现之前安装的MySQL忘记了root密码。 所以在这里补充一下找回root密码的方法&#xff1a;MySQL找回root密码 一、问题与解决&#xff1a; 1、在创建表的时候出现了「1046&#xff08;ErrorCode&#xff1a;1046.No database select…&#x…

SQL编程和高级查询

一、使用SQL操作表 1、SQL语言简介 2、数据库操纵语言 &#xff08;1&#xff09;INSERT命令 INSERT INTO grade VALUES (5,五年级);--插入每一列 INSERT INTO grade VALUES (6,六年级); INSERT INTO grade VALUES (7,七年级); INSERT INTO student(stuNo,stuName,sex) VAL…

数据库系统SQL编程-02

目录 一、查询平均分高于60分的课程&#xff08;MSSQL&#xff09; 表结构: 表样例 输出样例: 编译程序: 二、查询成绩最高的前三名同学(MSSQL) 表结构: 表样例 输出样例: 编译程序: 三、查询所授每门课程平均成绩均在70分以上的教师(MSSQL) 表结构: 表样例 …

嵌入式SQL编程快速上手教程

嵌入式SQL编程快速上手教程 声明&#xff1a;我这里标题虽是《嵌入式SQL编程快速上手教程》&#xff0c;但只是嵌入式SQL编程的冰山一角罢了&#xff0c;我会通过举一道简单例题来教小白快速上手嵌入式SQL编程 第一&#xff1a;题目描述 其模式描述分别是&#xff1a; S (s…

数据库系统SQL编程-01

目录 一、查询各专业学生的平均成绩(MSSQL&#xff09; 表结构: 表样例 输出样例: 编译代码&#xff1a; 二、查询平均成绩最高的前3名同学 表结构: 表样例 输出样例: 编译代码&#xff1a; 三、 查询同专业的学生&#xff08;MSSQL&#xff09; 表结构: 表样…

pl/sql编程语言

–pl/sql编程语言 –pl/sql编程语言是对sql语言的扩展&#xff0c;是的sql语言具有过程化编程的特性 –pl/sql编程语言比一般的过程化编程语言&#xff0c;更加灵活高效 –pl/sql编程语言主要用来编写存储过程和存储函数等。 --声明方法,定义变量 --赋值操作可以用 : 也可以使…

SQL编程开发

文章目录 SQL概述SQL分类SQL语言规范 基本查询语句查询全部列查询特定列过滤操作模糊查询排序操作多表查询单行函数组函数group by和having 子查询库和表的操作库的操作表的操作数据类型列的操作 数据处理之增删改事务、约束和分页事务约束分页 安装好MySQL下步就是使用MySQL&a…

SQL编程

10-1 查询学生表所有学生记录 (5 分) 本题目要求编写SQL语句&#xff0c; 检索出stu表中所有学生记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: 定义表结构的SQL语句。如&#xff1a; CREATE TABLE stu(sno char(4) NOT NULL,sname char(8) NOT NULL,sex tinyin…

SQL 编程

SQL Server中存在两种变量局部变量和成员变量&#xff0c;两种变量的特点和其他语言变量特点一样 全局变量&#xff1a;由系统定义和维护由系统定义和维护 变量名前加“” 例 name 就定义了一个全局变量“name” 局部变量&#xff1a;由用户定义和使用&#xff0c;变量…

可编程的SQL是什么样的?

背景 如果你使用传统编程语言&#xff0c;比如Python&#xff0c;那么恭喜你&#xff0c;你可能需要解决大部分你不需要解决的问题&#xff0c;用Python你相当于拿到了零部件&#xff0c;而不是一辆能跑的汽车。你花了大量时间去组装汽车&#xff0c;而不是去操控汽车去抵达自…

SQL编程语言1

1 SQL简介 SQL是一门操作关系型数据库的编程语言 SQL通用语法 SQL语句可以以单行或多行书写&#xff0c;以分号结尾。只有在读取到分号后系统才会默认你已经输入执行语句MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写注释 单行注释&#xff1a;-- 注释内…

sql数据库高级编程总结(一)

1、数学函数&#xff1a;操作一个数据&#xff0c;返回一个结果 &#xff08;1&#xff09;取上限 ceiling 如果有一个小数就取大于它的一个最小整数 列如9.5 就会取到 10 select code,name,ceiling(price) from car &#xff08;2&#xff09;取下限 floor 如果有一个小数就…

SQL基础编程

文章目录 一.SQL的环境搭载单机离线环境在线环境 二.SQL的单表操作1.sql基础三步2.sql四则运算3.limit (限制查询结果个数)4.order by&#xff08;排序&#xff09;5.where 综合条件筛选6.SQL常量7.distinct (把结果中重复的行删除)8.函数(1) 聚合函数&#xff1a;sum() ——求…

君正X1000芯片性能和处理器介绍

君正X1000芯片是针对语音识别功能做了专门定制的芯片&#xff0c;可以支持4个MIC&#xff0c;支持远场唤醒&#xff0c;功耗很低&#xff0c;适用于物联网、智能家居、智能音频、智能玩具等产品 。 X1000 芯片功能&#xff1a; 穿戴处理器级低功耗&#xff0c;待机功耗0.2mW&am…

IBM storwize V5000存储基础配置

初始帐号密码 Superuser / passw0rd 设备和系统的基本状态 首先添加配置主机&#xff0c;前提是已经连接好光纤线&#xff0c;配置好光纤交换机 这里我们使用光纤通道 系统应该可以自动识别到端口&#xff0c;主机名可以设置为主机型号或者主机应用名 两个端口完成 配置内部存…

《计算机系统概论》-第5章-习题答案

给定指令ADD、JMP、LEA、NOT&#xff0c;请判断它们分别是操作&#xff08;或运算&#xff09;指令&#xff0c;还是数据搬移指令或控制指令&#xff1f;对每一条指令&#xff0c;进一步列出该指令可以采用的寻址模式。 指令类型寻址模式ADD操作立即数、寄存器2种寻址模式JMP控…

X1000之LCD部分的翻译

1.显示大小可达640x48060Hz&#xff0c;24BBP RGB 8 8 8 RGB(256^3) 2的24次方16777216 2.支持的颜色就是我们上面计算的 3. 8080并行接口 MCU接口方式&#xff08;8080&#xff0c;6800接口&#xff09;与RGB接口主要的区别 4.支持内部DMA操作和寄存器操作&#xff08;可以…