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 = "西游记";
相关推荐
周胡杰17 分钟前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj00121 分钟前
navicate如何设置数据库引擎
数据库·mysql
ladymorgana21 分钟前
【Spring Boot】HikariCP 连接池 YAML 配置详解
spring boot·后端·mysql·连接池·hikaricp
赵渝强老师23 分钟前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle
暖暖木头25 分钟前
Oracle注释详解
数据库·oracle
御控工业物联网42 分钟前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
GJCTYU2 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
MicroTech20252 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
Code季风2 小时前
SQL关键字快速入门:CASE 实现条件逻辑
javascript·数据库·sql
weixin_478689762 小时前
操作系统【2】【内存管理】【虚拟内存】【参考小林code】
数据库·nosql