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 = "西游记";
相关推荐
代码的余温37 分钟前
SQL性能优化全攻略
数据库·mysql·性能优化
回家路上绕了弯3 小时前
MySQL 详细使用指南:从入门到精通
java·mysql
MaxHua3 小时前
SQL语法大全指南:从基础到进阶的关键字与用法解析
后端·mysql
回家路上绕了弯3 小时前
MySQL 索引详解:从原理到最佳实践
后端·mysql
手把手入门3 小时前
★CentOS:MySQL数据备份
数据库·mysql·adb
喂完待续3 小时前
【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
大数据·数据仓库·hive·hadoop·sql·apache
SelectDB3 小时前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache
路多辛3 小时前
Golang database/sql 包深度解析(二):连接池实现原理
数据库·sql·golang
SimonKing4 小时前
Mybatis批量插入,形式不同性能也不同
数据库·后端·程序员
小卓笔记4 小时前
MySQL库表操作
mysql