文章目录
一、MySQL表数据查询(重点)
1、约束条件
约束:对表中的数据进行一个限定。
创建约束条件是在创建表的时候,写数据类型之后进行创建
不能后面在加入
①非空约束
表示字段不能为空,插入数据的时候必须传入数据进来
create table t2(
id int(5),
name char(5) not null
);
insert into t2 values (1,"小明");
insert into t2(name) values ("xxx1");
②默认值约束
default
创建和上面一样
没有对插入的数据,指定默认值填充
create table xiaohezi2(
name char(5) not null,
gender enum("男", "女", "酸性", "碱性", "武装直升飞机") default "武装直升飞机"
);
insert into xiaohezi2 VALUES
("徐凤年", "酸性"),
("长沙街道办", "碱性");
insert into xiaohezi2(name) VALUES
("海绵宝宝");
③唯一约束 unique
字段数值不能重复(空值除外)
create table t3(
name char(5),
phone_number char(11) UNIQUE
);
insert into t3 values
("徐凤年", '13145201314'),
("长沙街道办", '13474862508'),
("海绵宝宝", '11012011900');
# 空值可以相同
insert into t3(name) values
("梓良"),
("xxx");
④主键约束 primary key
确保数值唯一而且不能为空
注意每一个表只能有一个主键约束
作用在于表连接上面
create table t4(
id int PRIMARY key
);
insert into t4 values(1111);
# 需求有多个数值唯一且不为空
create table t6(
id int PRIMARY KEY,
age int unique not null
#非空默认唯一都可以叠加且不需要考虑语法顺序
);
主键约束在数据库中起着非常重要的作用,主要有以下几个方面:
-
唯一性约束:主键约束确保表中的每一行都有一个唯一的标识符,即主键值不允许重复。这样可以保证数据的唯一性,避免数据冗余和错误。
-
快速查找:数据库系统会自动为主键列创建索引,这样在根据主键进行查询时可以快速定位到对应的记录,提高检索效率。
-
作为外键引用:主键通常被用作其他表中的外键,建立表与表之间的关联关系。这样可以确保在关联查询时数据的完整性和一致性。
-
优化表结构:通过主键约束,可以更好地组织和管理数据表,使数据结构更清晰、易于维护。
总的来说,主键约束是数据库设计中的重要概念,可以确保数据的唯一性、提高查询效率,并帮助建立表与表之间的关联关系。因此,在设计数据库表时,通常会考虑为每个表选择一个适当的主键。
如果您有任何其他问题或需要进一步解释,请随时告诉我。
⑤自增
auto_increment
设置自增字段必须是主键,默认设置为int类型, 从1开始递增,这样每次插入新记录时,该列的值会自动递增,确保每个记录都有一个唯一的标识。
以最大值为准
create table t7(
id int primary key auto_increment,
name char(5)
);
insert into t7(name) values("梓良");
2、数据更新
①表数据的修改
update 表名 set 字段名= 值 , .... where 条件;
# 如果没有where 子句, 字段的所有数据都全部修改
delete from 表名 where 条件;
# 删除某一行数据
update t7 set name ="唐太宗";
update t7 set name ="唐太宗" where id =7;
②表数据删除
delete from 表名 where 条件;
#删除一行
delete from t7 where id = 1
# 删除某一个数值
update t7 set name = null where id = 2;
3、数据查询
select * from 表名
#查询所有
select *from 表名 where 条件
①模糊查询
like, 在where子句中可以使用该语句以及关键字进行模糊查询
select * from 表名 where 字段名 like '关键字';
通配符
% 表示匹配0个或者多个字符 (贪婪模式) null除外
_ 表示匹配任意一个字符(有多少个下划线,就匹配多少个字段)相当于非贪婪模式
create table t8(
name char(100),
money double(100, 2)
);
insert into t8 values
("mysql从入门到删库跑路", 59.9),
("java从入门到放弃", 69.8),
("python从森林到地中海", 70);
select * from t8 where name like "%从%";
select * from t8 where name like "java______";
②筛出非重复项
消除重复项,留下不重复的项
select distinct * from 表名;
select name from t7;
select distinct name from t7;
③排序
在查询中进行排序——order by
select * from 表名 order by 字段名 desc;
排序默认是升序
asc 升序
desc 降序
在排序中,如果数据重复,那么在该字段对应进行默认排序
select * from t7;
select * from t7 order by id desc;
4、分页(限制查询返回条数)
limit 条数 分页 (开发这个是比较麻烦的模块)
一般我们查询的数据, 都是显示全部,如果还是1000w条数据,我们需要进行分页查询
select * from 表名 limit 返回条数;
select * from 表名 where 条件语句 limit 返回条数;
select * from 表名 where 条件语句 limit 起点 返回条数;
select * from employee limit 5;
# 从0开始算
select * from employee limit 2, 5;
#从第3行开始返回5行->3~`8行
# 这里如果不符合条件, 那么条数会相对应的删除
select * from employee where post="sale" limit 2, 5;
5、分组
group by 根据字段分组
select * from 表名 where 条件 group by 字段名(特指分组的字段名)
select sex, count(id) as SunName from employee GROUP BY sex;
如果有多组符合的话
MySQL 在执行 GROUP BY
查询时会选择每个分组中的第一个符合条件的行作为代表行。
6、as
as 就是别名
select sex, count(id) as SunName from employee GROUP BY sex;