持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情
前言
上篇我们针对DML与DDL做了一些练习。有兴趣的小伙伴可以阅读(# MySQL学习-DML与DDL的练习)。
下面针对MySQL中数据的增删改做一些练习。
练习一
创建数据库dbtest1。
CREATE DATABASE IF NOT EXISTS dbtest1 CHARACTER SET 'utf8';
练习二
运行以下脚本创建表my_employees。
USE dbtest1;
CREATE TABLE my_employees(
id INT(10),
first_name VARCHAR(10),
last_name VARCHAR(10),
userid VARCHAR(10),
salary DOUBLE(10, 2)
);
CREATE TABLE users(
id INT,
userid VARCHAR(10),
department_id INT
);
练习三
显示表my_employees的结构。
DESC my_employees
练习四
向my_employees插入以下数据。
| id | first_name | last_name | userid | salary |
|---|---|---|---|---|
| 1 | patel | Ralph | Rpatel | 895 |
| 2 | Dancs | Betty | Bdancs | 860 |
| 3 | Biri | Ben | Bbiri | 1100 |
| 4 | Newman | Chad | Cnewman | 750 |
| 5 | Ropeburn | Audrey | Aropeburn | 1550 |
方式一
INSERT INTO my_employees
VALUES
(1, 'patel', 'Ralph', 'Rpatel', 895),
(2, 'Dancs', 'Betty', 'Bdancs', 860),
(3, 'Biri', 'Ben', 'Bbiri', 1100),
(4, 'Newman', 'Chad', 'Cnewman', 750),
(5, 'Ropeburn', 'Audrey', 'Aropeburn', 1550);
方式二
使用SELECT查询的方式添加数据,这里还用到了UNION ALL。
INSERT INTO my_employees
SELECT 1, 'patel', 'Ralph', 'Rpatel', 895 UNION ALL
SELECT 2, 'Dancs', 'Betty', 'Bdancs', 860 UNION ALL
SELECT 3, 'Biri', 'Ben', 'Bbiri', 1100 UNION ALL
SELECT 4, 'Newman', 'Chad', 'Cnewman', 750 UNION ALL
SELECT 5, 'Ropeburn', 'Audrey', 'Aropeburn', 1550;
练习五
向users插入以下数据。
| id | userid | department_id |
|---|---|---|
| 1 | Rpatel | 10 |
| 2 | Bdancs | 10 |
| 3 | Bbiri | 20 |
| 4 | Cnewman | 30 |
| 5 | Aropeburn | 40 |
INSERT INTO my_employees
VALUES
(1, 'Rpatel', 10),
(2, 'Bdancs', 10),
(3, 'Bbiri', 20),
(4, 'Cnewman', 30),
(5, 'Aropeburn', 40);
练习六
将3号员工的last_name修改为drelxer。
UPDATE my_employees
SET last_name = 'drelxer'
WHERE id = 3;
练习七
将所有工资少于900的员工的工资改成1000。
UPDATE my_employees
SET salary = 1000
WHERE salary < 900;
练习八
将userid为Bbiri的user表和my_employees的记录全删除。
方式一
DELETE FROM my_employees
WHERE userid = 'Bbiri';
DELETE FROM users
WHERE userid = 'Bbiri';
方式二
将两张表连在一起删除。
DELECT m, u
FROM my_employees m
JOIN users u
ON m.userid = u.userid
WHERE userid = 'Bbiri';
练习九
删除my_employees,users表所有数据。
DELETE FROM my_employees;
DELETE FROM users;
练习十
查询my_employees,users表是否没有数据。
SELECE * FROM my_employees;
SELECE * FROM users;
练习十一
清空my_employees,users表。
TRUNCATE TABLE my_employees;
TRUNCATE TABLE users;
练习十二
创建表格pet。
| 字段名 | 字段说明 | 数据类型 |
|---|---|---|
| name | 宠物名称 | VARCHAR(20) |
| owner | 宠物主人 | VARCHAR(20) |
| species | 种类 | VARCHAR(20) |
| sex | 性别 | CHAR(1) |
| birth | 出生日期 | YEAR |
| death | 死亡日期 | YEAR |
CREATE TABLE pet(
NAME VARCHAR(20),
OWNER VARCHAR(20),
species VARCHAR(20),
sex CHAR(1),
birth YEAR,
death YEAR
);
练习十二
添加数据。
| name | owner | species | sex | birth | death |
|---|---|---|---|---|---|
| Fluffy | harold | Cat | f | 2003 | 2010 |
| Claws | gwen | Cat | m | 2004 | |
| Buffy | Dog | f | 2009 | ||
| Fang | benny | Dog | m | 2000 | |
| bowser | diane | Dog | m | 2003 | 2009 |
| Chirpy | Bird | f | 2008 |
INSERT INTO pet
VALUES
('Fluffy', 'harold', 'Cat', 'f', '2003', '2010'),
('Claws', 'gwen', 'Cat', 'm', '2004', NULL),
('Buffy', NULL, 'Dog', 'f', '2009', NULL),
('Fang', 'benny', 'Dog', 'm', '2000', NULL),
('bowser', 'diane', 'Dog', 'm', '2003', '2009'),
('Chirpy', NULL, 'Bird', 'f', '2008', NULL);
添加数据时,如果字段为空,设置为NULL。
练习十三
添加字段:主人的生日owner_birth DATE类型。
ALTER TABLE pet
ADD owner_birth DATE;
练习十四
将名称为Claws的猫的主人改为kevin。
UPDATE pet
SET OWNER = 'kevin'
WHERE NAME = 'Claws' AND species = 'Cat';
练习十五
将没有死的狗的主人改为duck。
UPDATE pet
SET OWNER = 'duck'
WHERE death IS NULL AND species = 'Dog';
练习十六
查询没有主人的宠物的名字。
SELECT NAME
FROM pet
WHERE OWNER IS NULL;
练习十七
查询已经死了Cat的姓名,主人以及去世时间。
SELECT NAME, OWNER, death
FROM pet
WHERE death IS NOT NULL AND species = 'Cat';
练习十八
删除已经死亡的狗。
DELETE FROM pet
WHERE death IS NOT NULL AND species = 'Dog';
练习十九
查询所有宠物信息。
SELECT *
FROM pet;
练习二十
创建employees表,并添加记录。
| id | name | sex | tel | addr | salary |
|---|---|---|---|---|---|
| 10001 | 张一一 | 男 | 123 | 山东 | 1001.58 |
| 10002 | 刘小红 | 女 | 456 | 河北 | 1201.21 |
| 10003 | 李四 | 男 | 789 | 广东 | 1004.11 |
| 10004 | 刘小强 | 男 | 1012 | 广东 | 1501.23 |
| 10005 | 王艳 | 女 | 1013 | 广东 | 1405.16 |
CREATE TABLE employees(
id INT,
NAME VARCHAR(15),
sex CHAR(1),
tel VARCHAR(25),
addr VARCHAR(35),
salary DOUBLE(10, 2)
);
INSERT INTO employees
VALUES
(10001, '张一一', '男', '123', '山东', 1001.58),
(10002, '刘小红', '女', '456', '河北', 1201.21),
(10003, '李四', '男', '789', '广东', 1004.11),
(10004, '刘小强', '男', '1012', '广东', 1501.23),
(10005, '王艳', '女', '1013', '广东', 1405.16);
练习二十一
查出薪资在1200-1300之间的员工信息。
SELECT *
FROM employees
WHERE salary BETWEEN 1200 AND 1300;
练习二十二
查询出姓刘的员工工号,姓名,家庭住址。
SELECT id, NAME, addr
FROM employees
WHERE NAME LIKE '刘%';
练习二十三
将李四的家庭住址改为广西。
UPDATE employees
SET addr = '广西'
WHERE NAME = '李四';
练习二十四
查询名字中带小的员工。
SELECT *
FROM employees
WHERE NAME LIKE '%小%';
今天先学习到这里,明天继续。