网易首页 > 网易号 > 正文 申请入驻

0065 使用SQL语言查询和增删改MySQL数据库表数据

0
分享至

上节课介绍了关系数据库的基本概念以及如何通过客户端软件访问数据库。

这节课来介绍通过SQL语句来查询和更新数据。

什么是SQL语言

SQL是结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

常用的SQL语句如下:

创建表、删除表、查询语句、插入记录、更新记录、删除记录。

下面分别介绍这几种SQL语句的语法和例子。

SQL语言是大小写不敏感的。

注意SQL语句的数值数据类型不同,字符串需要加引号,数值型不需要加引号。

创建表

上节课通过数据库客户端软件可以在图形化界面中创建了一个表,它背后的实质还是生成一个SQL语句提交到数据库执行。

也可以直接编写好一个SQL语句提交执行来创建一个表,无需通过图形化界面的方式。

语法:

CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件]

[,<列名> <数据类型>[列级完整性约束条件]]…);

例子:

创建学生信息表:

create table studentscore (id int(11), name varchar(30),sex varchar(10),subject varchar(30),score int(11));

创建新闻信息表:

create table news (id int(11),title varchar(100),content varchar(300));

创建新闻信息表带主键:

create table news(id int(11),title varchar(100),content varchar(300),primary key (id));

实验:

打开数据库客户端软件Navicat for MySQL:

双击数据库连接“localdb”,双击数据库“student”:

可以看到有一个表“studentscore”,来执行一句SQL创建一个表news。

点击工具栏按钮图标“查询”:

再点击“查询”按钮下方的按钮“创建查询(N)”:

弹出一个“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将创建SQL语句复制粘贴到这个窗口中:

点击工具栏按钮“运行”:

可以看到Tab窗口切换到了“信息”窗口,显示了SQL语句运行的结果,花费的时间是0.016ms,说明SQL语句正确,执行完成了。

关闭“创建查询”窗口,回到主窗口,点击左侧菜单“表”,此时发现右侧并没有出现新的表news。

在右侧空白窗口中点击鼠标右键,出现右键菜单:

点击菜单“刷新”:

可以看到新出现了一个表“news”,表明刚才的SQL语句运行成功了,通过SQL语句创建了一个表。

SQL语句调试

有时候编写的SQL语句不一定正确,那么可以通过数据库客户端软件来尝试执行这句SQL,发现错误或者提示之后进行修改,直到SQL语句编写正确。

来实验一下:

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

create table studentscore (id int(11), name varchar(30),sex varchar(10),subject varchar(30),score int(11));

点击“执行”,由于表studentscore已经存在,创建同名的表会出错:

可以看到提示表已经存在,将Tab窗口切换到“查询编辑器”Tab窗口,编辑SQL语句,修改表名为studentscore2:

再此“运行”:

可以看到运行成功了,去“刷新”:

可以看到新的表studentscore2创建好了。

删除表

将刚才创建的studentscore2这个表删除,可以使用删除表SQL语句执行。

语法:

DROP TABLE <表名>;

例子:

drop table studentscore2;

实验:

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

点击“运行”:

然后去表查看“刷新”:

可以看到表被删除了。

查询语句

要从表中查询指定条件的数据记录,可以使用SQL查询语句。

语法:

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…

FROM <表名或视图名>[,<表名或视图名>]…

[WHERE <条件表达式>]

[GROUP BY <列名> [HAVING <条件表达式>]]

[ORDER BY <列名> [ASC|DESC]…]

SQL查询语句的顺序:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。SELECT、FROM是必须的,HAVING子句只能与GROUP BY搭配使用。

这里只介绍最简单的WHERE语法,其它的语法请大家自己去网上搜索相关知识自学。

例子:

检索出表studentscore的所有记录:

select * from studentscore;

检索出表studentscore的所有记录的字段name:

select name from studentscore;

检索出表studentscore的所有记录的字段name,sex,subject,score:

select name,sex,subject,score from studentscore;

检索出表studentscore的记录,条件是姓名为乔峰的:

select * from studentscore where name='乔峰';

检索出表studentscore的记录,条件是姓名里面包含“张”字的:

select * from studentscore where name like '%张%';

检索出表studentscore的记录,条件是性别等于“男”的:

select * from studentscore where sex='男';

检索出表studentscore的记录,条件是分数范围75-90:

select * from studentscore where score>=75 and score<=90;

检索出表studentscore的记录,条件是科目等于“语文”或“数学”或“英语”的:

select * from studentscore where subject in ('语文','数学','英语');

检索出表studentscore的记录,条件是姓名里面包含“张”字,并且性别等于“男”的:

select * from studentscore where name='乔峰' and sex='男';

条件表达式类似于php的条件表达式,当然一些具体细节规定不一样。

WHERE条件表达式语法:

条件表达式一 [ and/or 条件表达式二 ] ,还可以使用括号。

等于:字段=数据

字符串模糊等于:字段 like %数据%

其它%是通配符,相当于任意字符串。

大于等于:字段>=数值

其它数值比较条件判断

等于某组值的一个:字段 in (值1,值2......)

实验:

双击表studentscore,可以看到已经存在一条记录:

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

select * from studentscore where name='乔峰';

点击“运行”:

可以看到运行结果出现在“结果1”Tab窗口,查询出来了一条记录。

切换Tab窗口到“查询编辑器”,修改SQL语句如下:

select * from studentscore where name like '%张%';

点击“运行”:

可以看到查询结果没有找到符合条件的记录。

切换最上方的窗口,回到表studentscore记录查看窗口,然后点击向下方向键:

然后手工插入一条记录,姓名为张三丰:

然后,点击最下方的工具小按钮,提交,将数据保存进入数据库。

确保看到右下角的状态显示“记录2/2”,这样确保数据提交到数据库了。

然后点击最上方的窗口切换到“查询编辑器”窗口,重新运行下列SQL语句:

select * from studentscore where name like '%张%';

点击“运行”:

可以看到查询结果找到了符合条件的1条记录。

虽然表里面总共2条记录,但是通过where条件匹配,找到了1条记录,这就是查询语句的作用。

大家可以自己手工增加更多的记录数据,然后实验各种各样的查询SQL语句进行练习。

插入记录

语法:

INSERT INTO <表名> [(字段名[,字段名]…)] VALUES (常量[,常量]…);

例子:

insert into studentscore (id,name,sex,subject,score) values (3,'段誉','男','英语',73);

或者

insert into studentscore (id,name,sex,subject,score) values (4,'王语嫣','女','音乐',68);

实验:

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

insert into studentscore (id,name,sex,subject,score) values (3,'段誉','男','英语',73);

点击“运行”:

切换Tab窗口到表数据查看窗口:

点击最下方的工具栏按钮“刷新”:

可以看到多了一条记录出来了。

主键不能重复

主键的作用就是定义一个表里面的代表唯一性记录的字段。

例如,一个身份信息表里面的身份证号字段可以作为主键,因为身份证号是唯一性的,2条记录中不可能出现同一个身份证号。

例如,学生分数信息表里面的ID作为主键,也就是不会出现2条记录的ID的值是一样的。

如果插入记录的时候,插入的ID的值已经在表里面某条记录存在了,则插入会提示不成功。

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

insert into studentscore (id,name,sex,subject,score) values (3,'王语嫣','女','音乐',68);

点击“运行”:

可以看到提示插入出错了。

更新记录

如果一条记录已经存在于表当中了,则可以使用SQL语句去修改数据。

语法:

UPDATE <表名> SET 列名=值表达式[,列名=值表达式…]

[WHERE 条件表达式]

例子:

将姓名等于乔峰的所有记录的分数全部改为100:

update studentscore set score=100 where name='乔峰';

将ID等于3的记录的分数改为88:

update studentscore set score=88 where id=3;

将姓名包含张字并且科目为语文的分数改为68性别改为男:

update studentscore set score=68,sex='男' where name like '%张%' and subject='语文';

注意update语句可以针对复数条记录进行更新,需要注意where条件。

满足where条件的记录的相应字段都会更新。

实验:

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

update studentscore set score=100 where name='乔峰';

点击“运行”:

切换到表数据查看窗口,刷新:

可以看到数据更新了。

删除记录

如果一条记录已经存在于表当中了,则可以使用SQL语句去删除这条记录。

语法:

DELETE FROM <表名> [WHERE 条件表达式]

例子:

将姓名等于乔峰的所有记录删除:

delete from studentscore where name='乔峰';

将ID等于3的记录删除:

delete from studentscore where id=3;

将姓名包含张字并且科目为语文的记录删除:

delete from studentscore where name like '%张%' and subject='语文';

注意update语句可以针对复数条记录进行更新,需要注意where条件。

满足where条件的记录的相应字段都会更新。

实验:

打开“创建查询”窗口,光标停留在“查询编辑器”Tab窗口中,将下面这句SQL语句复制粘贴到这个窗口中:

delete from studentscore where id=3;

点击“运行”:

切换到表数据查看窗口,刷新:

可以看到记录被删除了。

更多SQL语言知识

SQL语言是一门非常复杂的语言,有各种各样的语法和规范和用法,能够实现非常复杂的功能。

作为初学者,可以暂时不要太深入的学习,掌握好以上常用的一些语法即可。

随着后续课程的深入,跟随更多的练习,可以自己去自学更多的语法规则,不断的进行实验,就能逐渐的掌握这门语言了。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
胡锡进怎么了?

胡锡进怎么了?

手工制作阿歼
2024-05-04 19:46:01
深圳炒房客全军覆没,深圳南山区房价失守120000元

深圳炒房客全军覆没,深圳南山区房价失守120000元

有事问彭叔
2024-05-02 21:07:50
明日立夏是“凶日”,提醒:1不结,2不动,3不洗,4不喝,5不躁

明日立夏是“凶日”,提醒:1不结,2不动,3不洗,4不喝,5不躁

牛锅巴小钒
2024-05-04 19:36:03
国际刑事法院:“威胁报复”将构成罪行

国际刑事法院:“威胁报复”将构成罪行

参考消息
2024-05-04 11:23:09
劣币驱逐良币?多条高铁涨幅20%,悬着的心死了,专家怎么不发声

劣币驱逐良币?多条高铁涨幅20%,悬着的心死了,专家怎么不发声

荷兰豆爱健康
2024-05-04 19:53:55
赵本山黑脸巡视儿子公司!生意冷清亏损严重,砸钱数亿或血本无归

赵本山黑脸巡视儿子公司!生意冷清亏损严重,砸钱数亿或血本无归

清欢渡语
2024-04-28 22:38:17
沙特大满贯爆大冷!男单首位大种子惨败出局,日本世界冠军轰3-0

沙特大满贯爆大冷!男单首位大种子惨败出局,日本世界冠军轰3-0

知轩体育
2024-05-04 23:59:08
半场-曼城3-0狼队 哈兰德点射双响+戴帽罗德里抢断后送助攻

半场-曼城3-0狼队 哈兰德点射双响+戴帽罗德里抢断后送助攻

直播吧
2024-05-05 01:32:47
5月3日深夜,葛斯齐直播画风突变,网友 :葛斯齐真怕了?

5月3日深夜,葛斯齐直播画风突变,网友 :葛斯齐真怕了?

山野下
2024-05-04 09:36:40
近200万教师过剩!2024年,第一个被打破的铁饭碗出现了

近200万教师过剩!2024年,第一个被打破的铁饭碗出现了

智谷趋势
2024-05-01 14:22:09
惊天大逆转!2-1逆转日本后她们哭了 在谩骂声中成了历史最强组合

惊天大逆转!2-1逆转日本后她们哭了 在谩骂声中成了历史最强组合

宏堃趣侃体育
2024-05-04 14:31:28
“凭什么被白睡?”北京一女子和男友相恋6年,花掉36万拒绝归还

“凭什么被白睡?”北京一女子和男友相恋6年,花掉36万拒绝归还

蔚蓝天空岛
2024-05-01 17:01:40
大S发布对汪小菲最终声明:对未来充满期待,愿为孩子齐心协力

大S发布对汪小菲最终声明:对未来充满期待,愿为孩子齐心协力

娱乐的小灶
2024-05-03 18:43:48
独家调查:河南大学失火  涉事公司及校方称当晚礼堂没有施工人员

独家调查:河南大学失火 涉事公司及校方称当晚礼堂没有施工人员

央广网
2024-05-04 08:30:12
几乎全是假货,利润率高达650%,为何很多人仍然愿意被割韭菜!

几乎全是假货,利润率高达650%,为何很多人仍然愿意被割韭菜!

盛世科记
2024-04-21 10:00:48
疑似一级建筑师评梅大高速是豆腐渣工程:混凝土里看不到一根钢筋,工程监督方何在?

疑似一级建筑师评梅大高速是豆腐渣工程:混凝土里看不到一根钢筋,工程监督方何在?

剑鸣涛声
2024-05-03 19:28:52
两大 IT 养老院裁员大礼包:N+4!

两大 IT 养老院裁员大礼包:N+4!

侃故事的阿庆
2024-05-04 20:15:27
国足主场核心易主,伊万重用,穿10号战袍,实力碾压张稀哲戴伟浚

国足主场核心易主,伊万重用,穿10号战袍,实力碾压张稀哲戴伟浚

大咖唠体育
2024-05-04 12:47:57
7 个 iPhone 实用隐藏技巧,不会等于白买!

7 个 iPhone 实用隐藏技巧,不会等于白买!

黑猫科技迷
2024-04-08 00:26:03
胖猫跳江后,真发货的麦当劳与发空包的那些国内商家

胖猫跳江后,真发货的麦当劳与发空包的那些国内商家

记忆承载
2024-05-04 09:17:41
2024-05-05 02:00:49
学哥读书
学哥读书
读万卷书,行万里路,知行合一
1253文章数 3396关注度
往期回顾 全部

科技要闻

人类首次!去月背取样,中国人再进一步

头条要闻

大二女生休学在南极邮轮上打工4个月 赚了5万元的工资

头条要闻

大二女生休学在南极邮轮上打工4个月 赚了5万元的工资

体育要闻

现场见证,哈兰德英超生涯63场已进60球,追平席尔瓦的进球数

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

巴菲特:主要投资仍将聚焦在美国

汽车要闻

北京车展上的概念车,AI如何点评?小米SUV发布?

态度原创

房产
健康
游戏
旅游
公开课

房产要闻

单价2万内,装标4200+,主城改善大盘无套路硬刚!

春天野菜不知不识莫乱吃

《剑星》通关评测:可能不完美,但涩到极致让我无法拒绝

旅游要闻

“五一”假期哪个景点最吸引人?

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版