mysql增删改查操作
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
...
[,<表级完整性约束条件>]);
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)
/*表级完整性约束条件,Cpon是外码,被参照表是Course,被参照列是Cno*/ 参照表和被参照表可以是同一个表
);
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY(Sno) REFERENCES Student(Sno), /*表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGN KEY(Cno)REFERENCES Course(Cno) /*表级完整性约束条件,Cno是外码,被参照表是Course*/
);
修改基本表:
ALTER TABLE<表名>
[ADD[COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP[COLUMN]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT <完整性约束名>[RESTRICT|CASCADE]]
[ALTER COLUMN <列名><数据类型>];
删除基本表:
DROP TABLE <表名>[RESTRICT|CASCADE];
索引的建立于删除:
建立索引:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>] [,<列名>[<次序>]]...);
例如:
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
修改索引:
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
例如:
ALTER INDEX SC弄RENAME TO SCSno;
删除索引:
DROP INDEX <索引名>;
例如:
DROP INDEX Stusname;
数据查询:
SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>]...
FROM<表名或视图名>[,<表名或视图名>...] | (<SELECT 语句>)[AS] <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1>[HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC | DESC]];
单表查询:
SELECT Sno,Sname
FROM Student;
SELECT Sname,2014-Sage
FROM Student;
SELECT Sname,'Year of Birth:',2014-Sage,LOWER(Sdept)
FROM Student;
SELECT Sname,'Year of Birth:',2014-Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student; /*起别名*/
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN ('CS','MA','IS');
SELECT Sname,Ssex
FROM Student
WHERE Sname LIKE '_刘%';
SELECT Sname,Sno,Sex
FROM Student
WHERE Cname LIKE 'DB\_Design' ESCAPE '\';
SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NULL;
SELECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20;
SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC;
多表连接:
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
嵌套查询:
SELECT Sname
FROM Student /*外层查询或父查询*/
WHERE Sno IN
(SELECT Sno
FROM SC /*内层查询或子查询*/
WHERE Cno='2');
SELECT Sno,Cno
FROM SC x
WHERE Grade >=(SELECT ABG(Grade)
FROM SC y /*起别名,又称为元组变量*/
WHERE y.Sno=x.Sno);
数据更新:
数据插入:
INSERT INTO <表名 > [(<属性列1>[,<属性列2>]...)]
VALUES(<常量1>[,<常量2>]...);
例如:
INSERT
INTO SC(Sno,Cno)
VALUES('201215128','1');
插入子查询结果:
INSERT INTO <表名>[(<属性列1>[,<属性列2>]...)]
子查询;
例如:
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;
修改数据:
UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>]...
[WHERE<条件>];
例如:
UPDATE Student
SET Sage=22
WHERE Sno='201215121';
带子查询的修改语句:
UPDATE SC
SET Grade = 0
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept='CS');
删除数据:
DELETE
FROM <表名>
[WHERE <条件>];
视图:
建立视图:
CREATE VIEW <视图名>[(<列名>,[,<列名>]...)]
AS <子查询>
[WITH CHECK OPTION]
例如:
CREATE VIEW IS_Studnet
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept = 'IS'
WITH CHECK OPTION; /*定义IS_Student视图时加上了 WITH CHECK OPTION 子句,以后对该视图进行插入、修改和删除操作时,关系数据库管理系统会自动加上Sdept='IS'的条件。*/
删除视图:
DROP VIEW <视图名>[CASCADE];
例如:
DROP VIEW BT_S;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?