(基础篇)mysql数据库学习之DML数据操作语言

82 阅读4分钟

1.插入数据

语法:

insert into <tableName> (columnName,columnName....) values (value1,values2...); 
// tableName 数据表 columnName 字段列名 
例: insert into student (stu_id,stu_name) values (1,'张三')
注意1.往数据表中指定的列添加数据,不允许为空的列必须提供数据

   2.数据表后的字段名列表顺序可以不与表中一致,但是values中值的顺序比心和表名后字段名顺序对应

   3.当要向表中所有列添加数据,数据表后吗的字段列表可以省略,但是values中的值的顺序要与数据表定义的字段顺序保持一致(项目中建议罗列出所有字段列表名,防止新增列,导入插入失败)

2.删除数据

语法

//删除全部 
delect from <tableName> 
//删除某条 
delete from <tableName> where conditions. // conditions:条件
例:delete from student where stu_name ='章三'

3.修改数据

    //更新全部
    update <tableName> set columnName = value
    //更新某条数据 update <tableName> set columnName = value [where conditions] 
    例:update student set stu_name='李四' where stu_id = 100

4.查询基础

语法

//查询全部字段 
select * from <tableName>
// 查询部分字段 
select colnumName1[,colnumName2,colnumName3..] from <tableName> 
//可以使用 LIMIT 属性来设定返回的记录数 
select * from <tableName> limit 10;
//通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
select * from <tableName> OFFSET 10;

5.where 子句

在删除、修改及查询的语法后面都可以添加where 子句(条件),从而用于筛选满足特定条件下的数据进行查询、修改和删除的操作。

单条件

操作符说明示例
=等于,筛选字段值的精确匹配where colnumName = valueselect * from stu where stu_id = '202201'
!=不等于,检测两个值是否相等,如果不相等返回truewhere colnumName != value例:select * from stu where stu_id != '202201'select * from stu where stu_id <> '202201'
大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回truewhere colnumName > value例:select * from stu where stu_id > '202201'
<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回truewhere colnumName < value例:select * from stu where stu_id < '202201'
>=大于等于where colnumName >= value
<=小于等于where colnumName <= value

多条件

where子句中,可以将多个条件通过andornot进行连接,通过多个条件来筛选要操作的数据。

(1) and 并且关系,筛选多个条件同时满足的记录

例如:select * from stu where stu_gender ='男' and stu_age < 24;

(2) or 或者关系,筛选多个条件中至少满足其中一个的记录

例如:select * from stu where stu_gender ='男' or stu_age < 24;

(3) not 取反

例如: select *from stu where stu_age not between 20 and 30;

6.LIKE子句

SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
1)%:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示

(2)_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

(3[]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

(4[^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

7.对查询结果的处理

1)计算列-对从数据表中查询的记录的列进行一定的运算之后显示出来

例如: 计算出生年份

例:SELECT stu_name, 2022-stu_age from stu_info

image.png

(2)字段别名--给查询结果的列进行重新命名(as)

例: SELECT stu_name as 姓名, 2022-stu_age as 出生年份 from stu_info

image.png

3)消除重复行--distinct

SELECT DISTINCT columName1,columName2 from <表名>

(4) 排序 --将结果将按升序及降序排列(order by)

SELECT columnName1,columnName2 from <表名> where <条件> ORDER BY columnName asc | desc

// asc 升序 desc 降序

8. 常用聚合函数 -SQL中提供了⼀些可以对查询的记录的列进⾏计算的函数

1count() 统计函数,统计满⾜条件的指定字段值的个数(记录数)

#统计学⽣表中学⽣总数

selectcount(stu_num) from stus;

(2max()计算最⼤值,查询满⾜条件的记录中指定列的最⼤值

例如:计算年龄最大的

select max(stu_age) from stus;

(3min()计算最⼩值,查询满⾜条件的记录中指定列的最⼩值

例如:计算年龄最小的

select min(stu_age) from stus;

 (4)sum()计算和,查询满⾜条件的记录中指定的列的值的总和

 (5)avg()求平均值,查询满⾜条件的记录中计算指定列的平均值

9.日期函数

当我们向⽇期类型的列添加数据时,可以通过字符串类型赋值 (字符串的格式必须为yyyy-MM-dd hh:mm:ss) 如果我们想要获取当前系统时间添加到⽇期类型的列,可以使⽤ now()或者sysdate()

例如:#

通过 now() 获取当前时间

insert into stus(stu_name,stu_enterence) values(张⼩四,now());

10.字符串函数

1concat(colnum1,colunm2,...)拼接多列

 (2) upper(column) 将字段的值转换成⼤写

例如:select upper(stu_name) from stus;

(3lower(column)将指定列的值转换成⼩写

(4substring(column,start,len)从指定列中截取部分显示start从1开始

11.分组查询--将数据表中的记录按照指定的类进⾏分组(group by)

select 分组字段/聚合函数 from 表名 [where 条件] group by 分组列名 [having 条件]
[order by 排序字段]
语句执⾏顺序:先根据where条件从数据库查询记录-->group by

对查询记录进⾏分组-->执⾏having对分组后的数据进⾏筛选-->最后执行排序

注意:分组筛选的字段用having

#先对查询的学⽣信息按性别进⾏分组(分成了男、⼥两组),然后再分别统计每组学⽣的个数

select stu_gender,count(stu_num) from stus group by stu_gender;

image.png

12.分页查询--limit

当数据表中的记录⽐较多的时候,如果⼀次性全部查询出来显示给⽤户,⽤户的可读性/体验性就不太好,因此我们可以将这些数据分⻚进⾏展示。

select ... from ..

where ...

limit param1,param2

param1 int ,表示获取查询语句的结果中的第⼀条数据的索引(
索引从0开始)

param2 int,表示获取的查询记录的条数(如果剩下的数据条数
<param2,则返回剩下的所有记录)

如果在⼀张数据表中:

pageNum:表示查询的⻚码

pageSize:表示每⻚显示的条数

通⽤分⻚语句如下:

select* from<tableName>[where ...] limit (pageNum-1)*pageSize,pageSize;