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' |
| != | 不等于,检测两个值是否相等,如果不相等返回true | where colnumName != value例:select * from stu where stu_id != '202201'select * from stu where stu_id <> '202201' |
| 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true | where colnumName > value例:select * from stu where stu_id > '202201' | |
| < | 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true | where colnumName < value例:select * from stu where stu_id < '202201' |
| >= | 大于等于 | where colnumName >= value |
| <= | 小于等于 | where colnumName <= value |
多条件
在where子句中,可以将多个条件通过and、or、not进行连接,通过多个条件来筛选要操作的数据。
(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
(2)字段别名--给查询结果的列进行重新命名(as)
例: SELECT stu_name as 姓名, 2022-stu_age as 出生年份 from stu_info
(3)消除重复行--distinct
SELECT DISTINCT columName1,columName2 from <表名>
(4) 排序 --将结果将按升序及降序排列(order by)
SELECT columnName1,columnName2 from <表名> where <条件> ORDER BY columnName asc | desc
// asc 升序 desc 降序
8. 常用聚合函数 -SQL中提供了⼀些可以对查询的记录的列进⾏计算的函数
(1)count() 统计函数,统计满⾜条件的指定字段值的个数(记录数)
#统计学⽣表中学⽣总数
selectcount(stu_num) from stus;
(2)max()计算最⼤值,查询满⾜条件的记录中指定列的最⼤值
例如:计算年龄最大的
select max(stu_age) from stus;
(3)min()计算最⼩值,查询满⾜条件的记录中指定列的最⼩值
例如:计算年龄最小的
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.字符串函数
(1) concat(colnum1,colunm2,...)拼接多列
(2) upper(column) 将字段的值转换成⼤写
例如:select upper(stu_name) from stus;
(3)lower(column)将指定列的值转换成⼩写
(4)substring(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;
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;