练习——MySQL数据库操作

这篇博客介绍了MySQL数据库操作的基础和进阶题目,包括连接数据库的命令、表的创建、数据插入及查询等。进阶部分涉及多对一关系的表设计,以及使用IFNULL函数处理缺失值和逻辑删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础题

  1. 关系型数据库核心元素有哪些?
数据行
数据列
数据表(数据行的集合)
数据库(数据表的集合)
  1. 使用命令行连接数据库服务器的命令是什么?
mysql -u用户名 -p密码
或
mysql -u用户名 -p
回车后输入用户名
  1. 列出数据库的命令
查看所有数据库
show databases;

使用数据库
use 数据库名;

查看当前使用的数据库
select database();

创建数据库
create database 数据库名;

删除数据库
dorp database 数据库名;
  1. 列出表的命令
查看当前数据库的所有表
show tables;

​查看指定表的结构
desc 表名;
  1. 设计班级表结构为id、name、is_delete,编写创建表的语句
mysql> create table class(
    -> id int unsigned auto_increment primary key not null,
    -> cls_name varchar(20) default '',
    -> is_delete bit default null);
Query OK, 0 rows affected (1.58 sec)

mysql> desc class;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| cls_name      | varchar(20)      | YES  |     |         |                |
| is_delete | bit(1)           | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
  1. 列出数据操作语句的语法
增加
insert into 表名 values (...);
insert into 表名(列名) values (...);
insert into 表名 values (...),(...),(...),(...);
​
修改
update 表名 set 列名=... where 条件;
​
删除
delete from 表名 where 条件;
​
基本查询
select * from 表名;
  1. 向班级表中插入数据python1、python2、python3
insert into class (name) values ('python1'),('python2'),('python3');

进阶题

  1. 学生表结构设计为:姓名、生日、性别、家乡,并且学生表与班级表为多对一的关系,写出创建学生表的语句
mysql> create table students(
    -> id int unsigned auto_increment primary key not null,
    -> name varchar(20) not null,
    -> birthday date,
    -> gender enum('男','女','中性','保密'),
    -> hometown varchar(20),
    -> cls_id int unsigned,
    -> is_delete bit default 0);
  1. 向学生表中插入数据:

​ * python1班有郭靖、黄蓉,要求:使用全列插入,一次一值

insert into students values(0,'郭靖','2016-1-1',1,'蒙古',1,0);

insert into students values(0,'黄蓉','2016-5-8',2,'桃花岛',1,0);

​ * python2班有杨过、小龙女,要求:使用指定列插入,一次一值

insert into students(name,gender,cls_id) values('杨过',1,2);
insert into students(name,gender,cls_id) values('小龙女',2,2);

​ * 未分班的学生有黄药师、洪七公、洪七婆,要求:使用指定列插入,一次多值

insert into students(name) values('黄药师'),('洪七公'),('洪七婆');
mysql> select * from students;
+----+-----------+------------+--------+-----------+--------+-----------+
| id | name      | birthday   | gender | hometown  | cls_id | is_delete |
+----+-----------+------------+--------+-----------+--------+-----------+
|  3 | 郭靖      | 2016-01-01 || 蒙古      |      1 |           |
|  4 | 黄蓉      | 2016-05-08 || 桃花岛    |      1 |           |
|  5 | 杨过      | NULL       || NULL      |      2 |           |
|  6 | 小龙女    | NULL       || NULL      |      2 |           |
|  7 | 黄药师    | NULL       | NULL   | NULL      |   NULL |           |
|  8 | 洪七公    | NULL       | NULL   | NULL      |   NULL |           |
|  9 | 洪七婆    | NULL       | NULL   | NULL      |   NULL |           |
+----+-----------+------------+--------+-----------+--------+-----------+
  1. 查询学生的姓名、生日,如果没有生日则显示无
select name, ifnull(birthday,'no') from students;

+-----------+-----------------------+
| name      | ifnull(birthday,'no') |
+-----------+-----------------------+
| 郭靖      | 2016-01-01            |
| 黄蓉      | 2016-05-08            |
| 杨过      | no                    |
| 小龙女    | no                    |
| 黄药师    | no                    |
| 洪七公    | no                    |
| 洪七婆    | no                    |
+-----------+-----------------------+
7 rows in set (0.06 sec)

ifnull函数
存在则输出前面内容,不存在则输出后面内容

  1. 查询学生的姓名、年龄
select name, year(now())-year(birthday) as age from students where birthday != '';

+--------+------+
| name   | age  |
+--------+------+
| 郭靖   |    4 |
| 黄蓉   |    4 |
+--------+------+
  1. 逻辑删除洪七婆
update students set isdelete=1 where name='洪七婆'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值