MySQL数据库表的约束,关联及查询

一.表的约束

1.设置t_hero的主键为id
复制代码
mysql> alter table t_hero add primary key(id);
2.设置t_hero id属性非空
复制代码
mysql> alter table t_hero modify id int not null;
3.设置name属性为非空非重复
复制代码
mysql> alter table t_hero modify name varchar(255) not null;
mysql> alter table t_hero add unique (name);
4.设置检查约束
复制代码
mysql> alter table t_hero add constraint chk_gender check(gender in ('男', '女'));
mysql> desc t_hero;

二.查询语句练习

1.基本查询语句
复制代码
-- 查询所有数据
select * from t_hero;
-- 查询需要的字段信息
select id, name, password from t_hero;
-- 查询一个字段,一个等值条件
select name from t_hero where id = 1;
-- select 字段列表  from 表名称  where 条件

2.聚合函数使用
复制代码
mysql> select count(*) from t_hero;
+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)
3.查询时的别称使用
复制代码
mysql> select count(*) 总数 from t_hero;
+------+
| 总数 |
+------+
|    4 |
+------+
1 row in set (0.00 sec)
4.常见条件查询
复制代码
mysql> select id,name,address from t_hero where id in (2,4);
+----+----------+---------+
| id | name     | address |
+----+----------+---------+
|  2 | 林黛玉   | 贾府    |
|  4 | 紫霞仙子 | 盘丝洞  |
+----+----------+---------+
2 rows in set (0.00 sec)
5.模糊查询
复制代码
mysql> select * from t_hero where name like "林%";
+----+--------+----------+------+--------+---------+------------+-------+
| id | name   | nickname | age  | gender | address | weapon     | types |
+----+--------+----------+------+--------+---------+------------+-------+
|  2 | 林黛玉 | 林妹妹   |   18 | 女     | 贾府    | 倒拔垂杨柳 | 人类  |
+----+--------+----------+------+--------+---------+------------+-------+
1 row in set (0.00 sec)
6.逻辑运算符and
复制代码
mysql> select id,name,address from t_hero where name like "林%" and address = "贾府";
+----+--------+---------+
| id | name   | address |
+----+--------+---------+
|  2 | 林黛玉 | 贾府    |
+----+--------+---------+
1 row in set (0.00 sec)
7. 分组查询
复制代码
mysql> select nickname from t_hero group by nickname;
+----------+
| nickname |
+----------+
| 齐天大圣 |
| 林妹妹   |
| 黑旋风   |
| 盘丝大仙 |
+----------+
4 rows in set (0.00 sec)
8.结果排序
复制代码
mysql> select * from t_hero where id <= 3 order by id;
+----+--------+----------+------+--------+---------+------------+-------+
| id | name   | nickname | age  | gender | address | weapon     | types |
+----+--------+----------+------+--------+---------+------------+-------+
|  1 | 孙悟空 | 齐天大圣 | 1000 | 男     | 花果山  | 如意金箍棒 | 猴子  |
|  2 | 林黛玉 | 林妹妹   |   18 | 女     | 贾府    | 倒拔垂杨柳 | 人类  |
|  3 | 李逵   | 黑旋风   |   30 | 男     | 沂州    | 两柄板斧   | 人类  |
+----+--------+----------+------+--------+---------+------------+-------+
3 rows in set (0.00 sec)

三.外键与多表关联

1.创建用于外键关联的表
复制代码
mysql> select * from typesName;
+----+----------+
| id | name     |
+----+----------+
|  1 | 猴子   |
|  2 | 人类   |
|  3 | 神仙   |
+----+----------+
2.创建外键相关字段
复制代码
mysql> alter table t_hero add bookNum int;
3.多表关联
复制代码
mysql> alter table t_hero
    -> ADD CONSTRAINT fk_hero_book
    -> foreign key(bookNum) references bookName(id);
 
mysql> UPDATE t_hero
    -> SET heroNum = 1
    -> WHERE book = "西游记";
 
mysql> UPDATE t_hero
    -> SET heroNum = 2
    -> WHERE book = "红楼梦";
 
mysql> UPDATE t_hero
    -> SET heroNum = 3
    -> WHERE book = "水浒传";
 
mysql> UPDATE t_hero
    -> SET heroNum = 4
    -> WHERE book = "西游记";
相关推荐
_1_734 分钟前
SQL Server 磁盘满了 收缩日志
数据库·sqlserver
basketball6161 小时前
Redis基础:1. Redis介绍
数据库·redis·缓存
李可以量化1 小时前
成交量的终极量化策略:价量共振指标完整实现(下篇)
前端·数据库·人工智能
汽车仪器仪表相关领域2 小时前
南华 NHAT-610 柴油车排放测试仪 产品详解
数据库·功能测试·汽车·压力测试·可用性测试
我滴老baby4 小时前
工业时序数据实战:基于 DolphinDB 流计算引擎的实现与调优
数据库
睡不醒男孩0308234 小时前
TiDB数据库调研
数据库·tidb
珠***格4 小时前
实操落地|防逆流装置的安装规范、调试标准与故障处置
网络·数据库·人工智能·分布式·能源·边缘计算
Omics Pro5 小时前
3种蛋白结构输入方式!已申报欧洲发明专利
数据库·人工智能·python·机器学习·plotly
itfallrain6 小时前
Spring 构造器循环依赖排查:@RequiredArgsConstructor + @Lazy 到底有没有生效
数据库·python·spring
Database_Cool_6 小时前
AnalyticDB MySQL vs StarRocks/ByteHouse:云数仓选型指南——全托管 vs 自建方案
数据库·数据仓库·mysql·阿里云