1给表中插入数据
语法1:insert into 表名 values(值1,值2,值3,值4...值n);插入全部数据
insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n);一次插入多条 数据
语法2:insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ;插入部分字段,没有插入的字段,默认值就是null, 也支 持一次性插入多条数据
2修改表记录
语法1:update 表名 set 字段名称 = 值 where 条件 ;一般实际开发中修改:都是带条件修改 (推荐)
语法2:update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;一次性修改多个字段
语法3:update 表名 set 字段名称= 值,字段名称2 =值2....;不带条件 属于批量修改 (部分场景可以用的)
3删除表的记录
语法:delete from 表名 where 条件 ; 带条件删除记录 (使用的非业务字段id删除)
语法:delete from 表名 :删除全表数据
语法:truncate table 表名; 删除全表数据
delete from 表名 和 truncate table 表名 :两个区别?
共同点:都是可以删除全表的记录的;
不同点:delete from 表名 ; 仅仅只是将表的全部记录删除了,表还在!它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲)
truncat table 表名; 将表所有数据删除,而且还会把删除之后,自动创建一个张一模一样的表,影响自增主键的值!
!拓展: 创建一个学生表,id 加入主键(非空且唯一)和自增长(不断的自增1)约束
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT , -- id主键并且自增长
NAME VARCHAR(20),
age INT
);
DQL语句
最通用的语法:select * from 表名; 查询表的全部数据
1字段去重(去掉该字段内重复的数据)
语法:select distinct 字段名称 from 表名;
2条件查询
语法:select 字段列表 from 表名 where 条件;
使用赋值运算符:= 比较运算符:<,<=,>=,>,!=(<>) 逻辑运算符:and(&&),or(||)
针对两个范围查询: 可以使用&&,可以使用and, 也可以 "字段名称 between 值1 and 值2"
注意:mysql中判断某个字段为null,使用的语法是 is null ;判断某个字段不为null,使用的语法是 is not null
关于int类型字段求和的时候,注意: int类型的值 + null 值 = null;
因此:mysql提供函数 ifnull(字段名称,值); 如果字段名称是null,给一个默认值
3模糊查询
语法:select 字段列表 from 表名 where 字段名称 like '%xxx%' ;
%:代表任何多个字符或者某个字符(使用居多):网站门户系统---"搜索商品" ,模糊搜索
_:代表某个单个字符
4聚合函数查询:针对int类型(单行单列数据)
语法:select 聚合函数 from 表名 where 还可以指定条件;
count(字段名称):查询表中记录(字段名称使用都是id,非业务字段,来保证查询到的记录数量准确)
avg(字段名称): 查询这个字段中平均值
sum(字段列表):求和函数
max(字段名称):最大值
min(字段名称):最小值
!注意:select语句嵌套select语句 --- 子查询
例如:查询出学生数学成绩大于数学平均分的学生所有信息
分两步:-- 1)查询数学平均分是多少
SELECT AVG(math) FROM student3; -- 79.5000
-- 2)查询大于数学平均分的学生信息
SELECT
*
FROM
student3
WHERE
math > 79.5000;
一步完成:SELECT
*
FROM
student3
WHERE
math > (SELECT AVG(math) FROM student3) ;
5排序查询(order by)
语法:select 字段列表 from 表名 where 条件 order by 字段名称 排序规则(asc(默认值就是升序)或者desc 降序)