当前位置:网站首页 > 数据科学与大数据 > 正文

数据表的增删改查语句的基本结构是什么?(数据库增删改查的语句格式)



目录

MySQL 背景知识 

数据库基础操作

1.创建数据库

2.查看所有数据库

 3.选中指定的数据库

4.删除数据库

数据库表操作

MySQL的数据类型

1.创建表

 3.查看指定表的结构

4.删除表

增删改

新增操作

 修改(Updata)

 删除语句

 面试题

查询操作

指定列查询

 查询的列为表达式

给查询结果的列,指定别名(使用as)

查询的时候 针对列进行去重(把有重复的记录,给合并成一个)

针对查询结果进行排序

 排序还可以指定多个列来进行排序

条件查询


MySQL是 客户端-服务器结构的程序
数据是存储在服务器硬盘(外存)上的
MySQL 存储数据的结构(关系型数据库):数据库服务器--多个数据库--多个数据表--多行记录(行)--多列字段(列)

1.创建数据库

create database 数据库名

create database 数据库名 charset 字符集名

2.查看所有数据库

show databases

 3.选中指定的数据库

use 数据库名

 选择数据库后,后续操作都是针对这个数据库来展开的

4.删除数据库

drop  database 要删除的数据库名

 这个操作非常危险,一旦删除数据库,就真的删除了,没有回收站

MySQL的数据类型

数值类型

常用类型 int,double,decimal

 M表示有效数字的位数,D表示小数点后保留几位

字符串类型

 varchar 最常用表示字符串的类型,带有一个参数,约定了最大存储的空间,比如varchar(128),就表示这个列最多存128个字符,因此可以根据实际需求,来设置多长合适.

text,和mediumtext 适用于更长的字符串

日期类型

数据库表操作

1.创建表

create table 表名(列名 类型,列名 类型,......) ;

 表名和列名不能和SQL的关键字重复,如果必须要这样做,可以使用 反引号` `

 

 注释可以使用 -- 表示 类似 //

2.查看指定数据库下的所有表

show tables;

 3.查看指定表的结构

desc 表名;

 Field表示字段,Type表示字段的类型,NULL表示该字段是否允许为空(必选还是选题),Key表示约束,Defalult表示这一列的默认值,Extra表示额外的描述信息

4.删除表

drop table 表名

 删除表操作和删除数据库操作一样,都是非常危险的,删除了就真的删除了

新增操作

insert into 表名 values(列,列,列......);

SQL中使用Insert  关键字表示新增,每次新增都是新增一行

values 后面()内容,个数和类型要和表的结构匹配

 对指定列(一个或多个)进行插入

insert into 表名(列名) values(列名)

 一次指定插入多行

Insert 语句,values后面的()可以有多组,每一组就对应到一行(一行记录) 

 修改(Updata)

updata 表名 set 列名 = 值 +(一些子句比如 where,oder by,limit 当然也可以不加)

将王五同学的语文成绩修改成80分

update student2 set chinese = 80 where name = "王五";

 where子句描述了哪些行需要进行修改,set描述了哪些列需要进行修改.

修改操作,可以使用表达式进行修改

把所有同学的语文成绩-5;

update student2 set chinese = chinese-5;

 

update 可以修改多个列,多个列使用逗号隔开

给李四的语文成绩修改为70 数学成绩修改为80

update student2 set chinese = 70,math = 80  where name = "李四";

 

给总成绩倒数三名的数学成绩+5

update student2 set math = math+5 order by chinese+math+english asc limit 3; 

 

 删除语句

delete from 表名 where 条件

如果没有条件,就是把整个表中所有的记录都删除

删除student2表中所有的记录;

delete from student2;

 面试题

在mysql 中,一次插入一条记录,分别插入十次,效率要低于一次把10条记录一起插入

原因:1.由于网络请求和响应需要时间开销(插入十次就需要十次的请求和响应,插入一次只需要一次)
        2. 数据库服务器是把数据保存在硬盘上的,在进行io(输入输出)操作的时候,数据量对效率的影响不是很大,而io操作的次数影响比较大
       3.mysql 为关系型数据库,每次进行sql,内部都会开启一个事务,每次开启事务会有一定的时间开销

全列查询(查询表里的所有列)

select * from 表名

此处的 * 是通配符,代表了所有的列
注意此处的 select * 操作非常危险,这里的查询操作,会遍历表里面的所有数据,把数据从硬盘上读出来,通过网卡进行发送.
如果数据非常大,就很容易把硬盘IO吃满,或者把网络带宽吃满

指定列查询

select 列名 from 表名

 查询的列为表达式

在查询的过程中进行一个简单的计算(列和列之间)

现在有一个student2表(方便后面展示)

查询所有同学英语成绩+10

select name,english+10 from student2; 

注意:进行表达式查询的时候,查询结果是一个临时表,这个表是不写入硬盘当中的,临时表的类型不和原始的表完全一致,会尽可能的把数据给表示进去..因此,这里102.0是可以存进这个临时表的,而如果是原来的表是存不进102.0的(原来的语数英类型是decimal(3,1))

查询所有同学的总分(三门课相加)

select name,chinese+math+english from student2;

 

给查询结果的列,指定别名(使用as)

使用表达式查询的时候,写的表达式就是查询临时表的列名,比较丑,我可以起个别名

select name,ch inese+math+english as total from student2;

查询的时候 针对列进行去重(把有重复的记录,给合并成一个)

distinct(可以指定某一个列进行去重)

比如这里的李四和赵六的数学都是70分

select distinct math from student2;

 注意这里的70只出现了一次,因此是去了重的

针对查询结果进行排序

order by 字句

比如我们要针对语文这一列进行升序排序

select name,chinese from student2 order by chinese asc;

asc  为升序, desc 为降序

针对语文这一列进行降序排序

 select name,chinese from student2 order by chinese desc;

 

 如果要排序的列中,有NULL,NULL视为最小值

排序也可以针对别名进行排序

比如针对总成绩进行降序排序

select name,chinese+math+english as total from student2 order by total desc;

 排序还可以指定多个列来进行排序

排序指定多个列的时候,先以第一列为准,再比较第二列

比如这里来语文和数学来排序,语文高的排在前面,当语文分数一样时,再比较数学,数学高的排前面

select name,chinese,math from student2 order by chinese desc,math desc;

条件查询

where 查询的结果按行进行删选,通过where指定一个条件,判断查询到的每一行,是否满足条件,把条件为真的行保留(作为临时表结果)

在sql中,"="号,就是比较相等的意思,不是赋值(这个符号如果左右俩边都是NULL结果为false,此时我们可以使用<=>避免这个问题)

查询英语不及格的同学

select * from student2 where english<60;

 查询哪些同学语文成绩好于英语成绩

select * from student2 where chinese > english;

查询总分在200分以上的同学

select name,chinese+english+math as total from student2 where chinese+english+math > 200; 

 注意这里where子句,不能使用列的别名来比较,比如这里不能用total代替chinese+english+math

查询语文成绩大于80,并且英语成绩也大于80的学生

select name,chinese,english from student2 where chinese > 80 and english > 80;

 查询语文成绩大于80,或者英语成绩大于80的学生

select name,chinese,english from student2 where chinese > 80 or english > 80;

如果一个条件中同时有and和or,先计算and后计算or,当然我们也可以写括号来定义优先级 

between...and...

查询语文成绩在70到80之间的同学

select * from student2 where chinese between 70 and 80; 

in

查询语文成绩为95或者80或者75或者60的同学

select * from student2 where chinese in(95,80,75,60); 

like

查询 姓张 的同学的成绩(开头第一个字是张)

select * from student2 where name like "张%"; 

这里%分号的含义是通配符的意思可以表示0个或多个字符,也就是说以张开头的内容,都能查询出来 

使用下划线_ 匹配一个字符(__匹配俩个,依次类推)

比如查询 姓张,并且名称是俩个字的同学

select * from student2 where name like "张_";

使用like的查询是模糊查询,查询的开销比较大

limit

查询结果中,引入一个limit来限制查询结果的数量
在查询结果末尾,加上limit 指定N,N就表示这次查询最大结果的数量

比如现在只查询总分前3名同学的记录

select *,chinese+math+english as total from student2 order by total desc limit 3; 

limit offset

如果直接使用limit n,查到的是前N行(第一页)的东西,如果搭配offset 就可以指定第几条开始进行筛选, 

比如我们要排除掉第一行的张三,查看其它同学中总分前三名的记录

select *,chinese+math+english as total from student2 order by total desc limit 3 offset 1;

到此这篇数据表的增删改查语句的基本结构是什么?(数据库增删改查的语句格式)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 大数据算法(大数据算法网课超星尔雅章节答案)2025-08-01 12:09:05
  • 大数据培训哪些课程(大数据培训有哪些课程)2025-08-01 12:09:05
  • 数据库课程设计案例(数据库课程设计案例分析)2025-08-01 12:09:05
  • sundb数据库项(数据库sp_helpdb)2025-08-01 12:09:05
  • orecal数据库招标(oralcal数据库)2025-08-01 12:09:05
  • 数据库增删改查功能称为(数据库增删改查属于什么功能)2025-08-01 12:09:05
  • 3DTiles数据转shp(3dtiles数据下载)2025-08-01 12:09:05
  • impdp导入表数据命令(impdp导入表空间)2025-08-01 12:09:05
  • goldendb数据库官网(dbms_goldengate_auth)2025-08-01 12:09:05
  • 天气预报数据接口(天气预报 接口)2025-08-01 12:09:05
  • 全屏图片