MySQL数据库操作学习(3)数据查询

一、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
    #非空默认唯一都可以叠加且不需要考虑语法顺序

);

主键约束在数据库中起着非常重要的作用,主要有以下几个方面:

  1. 唯一性约束:主键约束确保表中的每一行都有一个唯一的标识符,即主键值不允许重复。这样可以保证数据的唯一性,避免数据冗余和错误。

  2. 快速查找:数据库系统会自动为主键列创建索引,这样在根据主键进行查询时可以快速定位到对应的记录,提高检索效率。

  3. 作为外键引用:主键通常被用作其他表中的外键,建立表与表之间的关联关系。这样可以确保在关联查询时数据的完整性和一致性。

  4. 优化表结构:通过主键约束,可以更好地组织和管理数据表,使数据结构更清晰、易于维护。

总的来说,主键约束是数据库设计中的重要概念,可以确保数据的唯一性、提高查询效率,并帮助建立表与表之间的关联关系。因此,在设计数据库表时,通常会考虑为每个表选择一个适当的主键。

如果您有任何其他问题或需要进一步解释,请随时告诉我。

⑤自增

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只特立独行猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值