自动全屏网站模板,权威发布,ui设计与制作,谷歌推广费用文章目录 1 插入数据1.1 实际问题1.2 方式 1#xff1a;VALUES的方式添加1.3 方式2#xff1a;将查询结果插入到表中演示代码 2 更新数据演示代码 3 删除数据演示代码 4 MySQL8新特性#xff1a;计算列演示代码 5 综合案例课后练习 1 插入数据
1.1 实际问题 解决方式#… 文章目录 1 插入数据1.1 实际问题1.2 方式 1VALUES的方式添加1.3 方式2将查询结果插入到表中演示代码 2 更新数据演示代码 3 删除数据演示代码 4 MySQL8新特性计算列演示代码 5 综合案例课后练习 1 插入数据
1.1 实际问题 解决方式使用 INSERT 语句向表中插入数据。
1.2 方式 1VALUES的方式添加
使用这种语法一次只能向表中插入一条数据。 情况1为表的所有字段按默认顺序插入数据
INSERT INTO 表名
VALUES (value1,value2,....);值列表中需要为表的每一个字段指定值并且值的顺序必须和数据表中字段定义时的顺序相同。
举例
INSERT INTO departments
VALUES (70, Pub, 100, 1700);INSERT INTO departments
VALUES (100, Finance, NULL, NULL);情况2为表的指定字段插入数据
INSERT INTO 表名(column1 [, column2, …, columnn])
VALUES (value1 [,value2, …, valuen]);为表的指定字段插入数据就是在INSERT语句中只向部分字段中插入值而其他字段的值为表定义时的默认值。
在 INSERT 子句中随意列出列名但是一旦列出VALUES中要插入的value1,…valuen需要与column1,…columnn列一一对应。如果类型不同将无法插入并且MySQL会产生错误。
举例
INSERT INTO departments(department_id, department_name)
VALUES (80, IT);情况3同时插入多条记录 INSERT语句可以同时向数据表中插入多条记录插入时指定多个值列表每个值列表之间用逗号分隔开基本语法格式如下
INSERT INTO table_name
VALUES
(value1 [,value2, …, valuen]),
(value1 [,value2, …, valuen]),
……
(value1 [,value2, …, valuen]);
或者
INSERT INTO table_name(column1 [, column2, …, columnn])
VALUES
(value1 [,value2, …, valuen]),
(value1 [,value2, …, valuen]),
……
(value1 [,value2, …, valuen]);举例
INSERT INTO emp(emp_id,emp_name)
VALUES (1001,shkstart),
(1002,atguigu),
(1003,Tom);
#Query OK, 3 rows affected (0.00 sec)
#Records: 3 Duplicates: 0 Warnings: 0使用INSERT同时插入多条记录时MySQL会返回一些在执行单行插入时没有的额外信息这些信息的含义如下
Records表明插入的记录条数Duplicates表明插入时被忽略的记录原因可能是这些记录包含了重复的主键值。Warnings表明有问题的数据值例如发生数据类型转换。 一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句但是多行的INSERT语句在处理过程中 效率更高 。因为MySQL执行单条INSERT语句插入多行数据比使用多条INSERT语句快所以在插入多条记录时最好选择使用单条INSERT语句的方式插入。 小结
VALUES 也可以写成 VALUE 但是VALUES是标准写法。字符和日期型数据应包含在单引号中
1.3 方式2将查询结果插入到表中
INSERT还可以将SELECT语句查询的结果插入到表中此时不需要把每一条记录的值一个一个输入只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。
基本语法格式如下
INSERT INTO 目标表名
(tar_column1 [, tar_column2, …, tar_columnn])
SELECT
(src_column1 [, src_column2, …, src_columnn])
FROM 源表名
[WHERE condition]在 INSERT 语句中加入子查询。不必书写 VALUES 子句。子查询中的值列表应与 INSERT 子句中的列名对应。
举例
INSERT INTO emp2
SELECT *
FROM employees
WHERE department_id 90;INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE %REP%;演示代码
#0. 储备工作
USE atguigudb;CREATE TABLE IF NOT EXISTS emp1(
id INT,
name VARCHAR(15),
hire_date DATE,
salary DOUBLE(10,2)
);DESC emp1;
/*
----------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
----------------------------------------------------
| id | int | YES | | NULL | |
| name | varchar(15) | YES | | NULL | |
| hire_date | date | YES | | NULL | |
| salary | double(10,2) | YES | | NULL | |
----------------------------------------------------
*/SELECT *
FROM emp1;#Empty set (0.12 sec)#1. 添加数据
#方式1一条一条的添加数据# ① 没有指明添加的字段
#正确的
INSERT INTO emp1
VALUES (1,Tom,2000-12-21,3400); #注意一定要按照声明的字段的先后顺序添加
#错误的
INSERT INTO emp1
VALUES (2,3400,2000-12-21,Jerry);SELECT *
FROM emp1;
/*
---------------------------------
| id | name | hire_date | salary |
---------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
---------------------------------
*/# ② 指明要添加的字段 推荐
INSERT INTO emp1(id,hire_date,salary,name)
VALUES(2,1999-09-09,4000,Jerry);
# 说明没有进行赋值的hire_date 的值为 null
INSERT INTO emp1(id,salary,name)
VALUES(3,4500,shk);SELECT *
FROM emp1;
/*
----------------------------------
| id | name | hire_date | salary |
----------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
| 2 | Jerry | 1999-09-09 | 4000.00 |
| 3 | shk | NULL | 4500.00 |
----------------------------------
*/# ③ 同时插入多条记录 推荐
INSERT INTO emp1(id,NAME,salary)
VALUES
(4,Jim,5000),
(5,张俊杰,5500);#方式2将查询结果插入到表中
SELECT * FROM emp1;
/*输出
--------------------------------------
| id | name | hire_date | salary |
--------------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
| 2 | Jerry | 1999-09-09 | 4000.00 |
| 3 | shk | NULL | 4500.00 |
| 4 | Jim | NULL | 5000.00 |
| 5 | 张俊杰 | NULL | 5500.00 |
--------------------------------------
*/INSERT INTO emp1(id,NAME,salary,hire_date)
#查询语句
SELECT employee_id,last_name,salary,hire_date # 查询的字段一定要与添加到的表的字段一一对应
FROM employees
WHERE department_id IN (70,60);DESC emp1;
DESC employees;SELECT *
FROM emp1;
/*
---------------------------------------
| id | name | hire_date | salary |
---------------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
| 2 | Jerry | 1999-09-09 | 4000.00 |
*/
#说明emp1表中要添加数据的字段的长度不能低于employees表中查询的字段的长度。
# 如果emp1表中要添加数据的字段的长度低于employees表中查询的字段的长度的话就有添加不成功的风险。2 更新数据 使用 UPDATE 语句更新数据。语法如下
UPDATE table_name
SET column1value1, column2value2, … , columnvaluen [WHERE condition]可以一次更新多条数据。如果需要回滚数据需要保证在DML前进行设置SET AUTOCOMMIT FALSE;
使用 WHERE 子句指定需要更新的数据。
UPDATE employees
SET department_id 70
WHERE employee_id 113;如果省略 WHERE 子句则表中的所有数据都将被更新
UPDATE copy_emp
SET department_id 110;更新中的数据完整性错误
UPDATE employees
SET department_id 55
WHERE department_id 110;
#说明不存在 55 号部门演示代码
#2. 更新数据 或修改数据
# UPDATE .... SET .... WHERE ...
# 可以实现批量修改数据的。UPDATE emp1
SET hire_date CURDATE()
WHERE id 5;SELECT * FROM emp1;
/*部分输出
---------------------------------------
| id | name | hire_date | salary |
---------------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
| 2 | Jerry | 1999-09-09 | 4000.00 |
| 3 | shk | NULL | 4500.00 |
| 4 | Jim | NULL | 5000.00 |
| 5 | 张俊杰 | 2022-02-14 | 5500.00 |
*/#同时修改一条数据的多个字段
UPDATE emp1
SET hire_date CURDATE(),salary 6000
WHERE id 2;
/*输出
---------------------------------------
| id | name | hire_date | salary |
---------------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
| 2 | Jerry | 2022-02-14 | 6000.00 |
*/#题目将表中姓名中包含字符a的提薪20%
UPDATE emp1
SET salary salary * 1.2
WHERE NAME LIKE %r%;
/*
---------------------------------------
| id | name | hire_date | salary |
---------------------------------------
| 1 | Tom | 2000-12-21 | 3400.00 |
| 2 | Jerry | 2022-02-14 | 7200.00 |
*/#修改数据时是可能存在不成功的情况的。可能是由于约束的影响造成的
UPDATE employees
SET department_id 10000
WHERE employee_id 102;3 删除数据 使用 DELETE 语句从表中删除数据 DELETE FROM table_name [WHERE condition]; table_name指定要执行删除操作的表“[WHERE ]”为可选参数指定删除条件如果没有WHERE子句DELETE语句将删除表中的所有记录。使用 WHERE 子句删除指定的记录。
DELETE FROM departments
WHERE department_name Finance;如果省略 WHERE 子句则表中的全部数据将被删除 DELETE FROM copy_emp;删除中的数据完整性错误
DELETE FROM departments
WHERE department_id 60;演示代码 #3. 删除数据 DELETE FROM .... WHERE....
DELETE FROM emp1
WHERE id 1;
/*SELECT * FROM emp1;输出
---------------------------------------
| id | name | hire_date | salary |
---------------------------------------
| 2 | Jerry | 2022-02-14 | 7200.00 |
| 3 | shk | NULL | 4500.00 |
| 4 | Jim | NULL | 5000.00 |
*/
#在删除数据时也有可能因为约束的影响导致删除失败
DELETE FROM departments
WHERE department_id 50;
#小结DML操作默认情况下执行完以后都会自动提交数据。
# 如果希望执行完以后不自动提交数据则需要使用 SET autocommit FALSE.4 MySQL8新特性计算列
什么叫计算列呢简单来说就是某一列的值是通过别的列计算得来的。例如a列值为1、b列值为2c列不需要手动插入定义ab的结果为c的值那么c就是计算列是通过别的列计算得来的。
在MySQL 8.0中CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。下面以CREATE TABLE为例进行讲解。
举例定义数据表tb1然后定义字段id、字段a、字段b和字段c其中字段c为计算列用于计算ab的值。 首先创建测试表tb1语句如下
CREATE TABLE tb1(
id INT,
a INT, b INT,
c INT GENERATED ALWAYS AS (a b) VIRTUAL );插入演示数据语句如下 INSERT INTO tb1(a,b) VALUES (100,200);
查询数据表tb1中的数据结果如下
SELECT * FROM tb1;
/*------ ------ ------ ------
| id | a | b | c |------ ------ ------ ------
| NULL | 100 | 200 | 300 |------ ------ ------ ------
1 row in set (0.00 sec)
*/更新数据中的数据语句如下
UPDATE tb1 SET a 500;演示代码
#4. MySQL8的新特性计算列
USE atguigudb;CREATE TABLE test1(
a INT,
b INT,
c INT GENERATED ALWAYS AS (a b) VIRTUAL #字段c即为计算列
);INSERT INTO test1(a,b)
VALUES(10,20);SELECT * FROM test1;
/*输出
------------------
| a | b | c |
------------------
| 10 | 20 | 30 |
------------------
*/
UPDATE test1
SET a 100;
/*SELECT * FROM test1;
------------------
| a | b | c |
------------------
| 100 | 20 | 120 |
------------------
*/5 综合案例
# 1、创建数据库test01_library
# 2、创建表 books表结构如下# 3、向books表中插入记录
# 1不指定字段名称插入第一条记录
# 2指定所有字段名称插入第二记录
# 3同时插入多条记录剩下的所有记录# 4、将小说类型(novel)的书的价格都增加5。
# 5、将名称为EmmaT的书的价格改为40并将说明改为drama。
# 6、删除库存为0的记录。
# 7、统计书名中包含a字母的书
# 8、统计书名中包含a字母的书的数量和库存总量
# 9、找出“novel”类型的书按照价格降序排列
# 10、查询图书信息按照库存量降序排列如果库存量相同的按照note升序排列
# 11、按照note分类统计书的数量
# 12、按照note分类统计书的库存量显示库存量超过30本的
# 13、查询所有图书每页显示5本显示第二页
# 14、按照note分类统计书的库存量显示库存量最多的
# 15、查询书名达到10个字符的书不包括里面的空格
# 16、查询书名和类型其中note值为novel显示小说law显示法律medicine
# 显示医药cartoon显示卡通joke显示笑话
# 17、查询书名、库存其中num值超过30本的显示滞销大于0并低于10的
# 显示畅销为0的显示需要无货
# 18、统计每一种note的库存量并合计总量
# 19、统计每一种note的数量并合计总量
# 20、统计库存量前三名的图书
# 21、找出最早出版的一本书
# 22、找出novel中价格最高的一本书
# 23、找出书名中字数最多的一本书不含空格答案
#5.综合案例
# 1、创建数据库test01_library
CREATE DATABASE IF NOT EXISTS test01_library CHARACTER SET utf8;USE test01_library;# 2、创建表 books表结构如下
CREATE TABLE IF NOT EXISTS books(
id INT,
name VARCHAR(50),
authors VARCHAR(100),
price FLOAT,
pubdate YEAR,
note VARCHAR(100),
num INT
);DESC books;
/*
--------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
| id | int | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| authors | varchar(100) | YES | | NULL | |
| price | float | YES | | NULL | |
| pubdate | year | YES | | NULL | |
| note | varchar(100) | YES | | NULL | |
| num | int | YES | | NULL | |
--------------------------------------------------
*/
SELECT * FROM books;# 3、向books表中插入记录
# 1不指定字段名称插入第一条记录
INSERT INTO books
VALUES(1,Tal of AAA,Dickes,23,1995,novel,11);
# 2指定所有字段名称插入第二记录
INSERT INTO books(id,NAME,AUTHORS,price,pubdate,note,num)
VALUES(2,EmmaT,Jane lura,35,1993,joke,22);
# 3同时插入多条记录剩下的所有记录
INSERT INTO books(id,NAME,AUTHORS,price,pubdate,note,num)
VALUES
(3,Story of Jane,Jane Tim,40,2001,novel,0),
(4,Lovey Day,George Byron,20,2005,novel,30),
(5,Old land,Honore Blade,30,2010,Law,0),
(6,The Battle,Upton Sara,30,1999,medicine,40),
(7,Rose Hood,Richard haggard,28,2008,cartoon,28);/*SELECT * FROM books
----------------------------------------------------------------------
| id | name | authors | price | pubdate | note | num |
----------------------------------------------------------------------
| 1 | Tal of AAA | Dickes | 23 | 1995 | novel | 11 |
| 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 |
| 3 | Story of Jane | Jane Tim | 40 | 2001 | novel | 0 |
| 4 | Lovey Day | George Byron | 20 | 2005 | novel | 30 |
| 5 | Old land | Honore Blade | 30 | 2010 | Law | 0 |
| 6 | The Battle | Upton Sara | 30 | 1999 | medicine | 40 |
| 7 | Rose Hood | Richard haggard | 28 | 2008 | cartoon | 28 |
----------------------------------------------------------------------
*/
# 4、将小说类型(novel)的书的价格都增加5。
UPDATE books
SET price price 5
WHERE note novel;
/*
----------------------------------------------------------------------
| id | name | authors | price | pubdate | note | num |
----------------------------------------------------------------------
| 1 | Tal of AAA | Dickes | 28 | 1995 | novel | 11 |
| 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 |
| 3 | Story of Jane | Jane Tim | 45 | 2001 | novel | 0 |
| 4 | Lovey Day | George Byron | 25 | 2005 | novel | 30 |
| 5 | Old land | Honore Blade | 30 | 2010 | Law | 0 |
| 6 | The Battle | Upton Sara | 30 | 1999 | medicine | 40 |
| 7 | Rose Hood | Richard haggard | 28 | 2008 | cartoon | 28 |
----------------------------------------------------------------------
*/# 5、将名称为EmmaT的书的价格改为40并将说明改为drama。
UPDATE books
SET price 40,note drama
WHERE NAME EmmaT;# 6、删除库存为0的记录。
DELETE FROM books
WHERE num 0;# 7、统计书名中包含a字母的书
SELECT NAME
FROM books
WHERE NAME LIKE %a%;
/*
------------
| NAME |
------------
| Tal of AAA |
| EmmaT |
| Lovey Day |
| The Battle |
------------
*/# 8、统计书名中包含a字母的书的数量和库存总量
SELECT COUNT(*),SUM(num)
FROM books
WHERE NAME LIKE %a%;# 9、找出“novel”类型的书按照价格降序排列SELECT NAME,note,price
FROM books
WHERE note novel
ORDER BY price DESC;# 10、查询图书信息按照库存量降序排列如果库存量相同的按照note升序排列
SELECT *
FROM books
ORDER BY num DESC,note ASC;# 11、按照note分类统计书的数量
SELECT note,COUNT(*)
FROM books
GROUP BY note;# 12、按照note分类统计书的库存量显示库存量超过30本的
SELECT note,SUM(num)
FROM books
GROUP BY note
HAVING SUM(num) 30;# 13、查询所有图书每页显示5本显示第二页
SELECT *
FROM books
LIMIT 5,5;# 14、按照note分类统计书的库存量显示库存量最多的
SELECT note,SUM(num) sum_num
FROM books
GROUP BY note
ORDER BY sum_num DESC
LIMIT 0,1;# 15、查询书名达到10个字符的书不包括里面的空格
SELECT CHAR_LENGTH(REPLACE(NAME, ,))
FROM books;SELECT NAME
FROM books
WHERE CHAR_LENGTH(REPLACE(NAME, ,)) 10;# 16、查询书名和类型其中note值为novel显示小说law显示法律medicine显示医药
#cartoon显示卡通joke显示笑话
SELECT NAME 书名,note,CASE note WHEN novel THEN 小说WHEN law THEN 法律WHEN medicine THEN 医药WHEN cartoon THEN 卡通WHEN joke THEN 笑话ELSE 其他END 类型
FROM books;
/*
------------------------------
| 书名 | note | 类型 |
------------------------------
| Tal of AAA | novel | 小说 |
| EmmaT | drama | 其他 |
| Lovey Day | novel | 小说 |
| The Battle | medicine | 医药 |
| Rose Hood | cartoon | 卡通 |
------------------------------
*/# 17、查询书名、库存其中num值超过30本的显示滞销大于0并低于10的
#显示畅销为0的显示需要无货
SELECT NAME AS 书名,num AS 库存, CASE WHEN num 30 THEN 滞销WHEN num 0 AND num 10 THEN 畅销WHEN num 0 THEN 无货ELSE 正常END 显示状态
FROM books;
/*
----------------------------------
| 书名 | 库存 | 显示状态 |
----------------------------------
| Tal of AAA | 11 | 正常 |
| EmmaT | 22 | 正常 |
| Lovey Day | 30 | 正常 |
| The Battle | 40 | 滞销 |
| Rose Hood | 28 | 正常 |
----------------------------------*/# 18、统计每一种note的库存量并合计总量
SELECT IFNULL(note,合计库存总量) AS note,SUM(num)
FROM books
GROUP BY note WITH ROLLUP;
/*
------------------------------
| note | SUM(num) |
------------------------------
| cartoon | 28 |
| drama | 22 |
| medicine | 40 |
| novel | 41 |
| 合计库存总量 | 131 |
------------------------------
*/# 19、统计每一种note的数量并合计总量
SELECT IFNULL(note,合计总量) AS note,COUNT(*)
FROM books
GROUP BY note WITH ROLLUP;
/*
------------------------
| note | COUNT(*) |
------------------------
| cartoon | 1 |
| drama | 1 |
| medicine | 1 |
| novel | 2 |
| 合计总量 | 5 |
------------------------
*/# 20、统计库存量前三名的图书
SELECT *
FROM books
ORDER BY num DESC
LIMIT 0,3;# 21、找出最早出版的一本书
SELECT *
FROM books
ORDER BY pubdate ASC
LIMIT 0,1;# 22、找出novel中价格最高的一本书
SELECT *
FROM books
WHERE note novel
ORDER BY price DESC
LIMIT 0,1;# 23、找出书名中字数最多的一本书不含空格
SELECT *
FROM books
ORDER BY CHAR_LENGTH(REPLACE(NAME, ,)) DESC
LIMIT 0,1;课后练习
#第11章_数据处理之增删改的课后练习
#练习1
#1. 创建数据库dbtest11
CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET utf8;#2. 运行以下脚本创建表my_employees
USE dbtest11;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
);
#3.显示表my_employees的结构DESC my_employees;
/*
-----------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
-----------------------------------------------------
| id | int | YES | | NULL | |
| first_name | varchar(10) | YES | | NULL | |
| last_name | varchar(10) | YES | | NULL | |
| userid | varchar(10) | YES | | NULL | |
| salary | double(10,2) | YES | | NULL | |
-----------------------------------------------------
*/
DESC users;
/*
-------------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
-------------------------------------------------------
| id | int | YES | | NULL | |
| userid | varchar(10) | YES | | NULL | |
| department_id | int | YES | | NULL | |
-------------------------------------------------------
*/#4.向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 Aropebur 1550INSERT INTO my_employees
VALUES(1,patel,Ralph,Rpatel,895);INSERT INTO my_employees VALUES
(2,Dancs,Betty,Bdancs,860),
(3,Biri,Ben,Bbiri,1100),
(4,Newman,Chad,Cnewman,750),
(5,Ropeburn,Audrey,Aropebur,1550);SELECT * FROM my_employees;
/*
------------------------------------------------
| id | first_name | last_name | userid | salary |
------------------------------------------------
| 1 | patel | Ralph | Rpatel | 895.00 |
| 2 | Dancs | Betty | Bdancs | 860.00 |
| 3 | Biri | Ben | Bbiri | 1100.00 |
| 4 | Newman | Chad | Cnewman | 750.00 |
| 5 | Ropeburn | Audrey | Aropebur | 1550.00 |
------------------------------------------------
*/DELETE FROM my_employees;#方式2
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,Aropebur,1550;#5.向users表中插入数据
1 Rpatel 10
2 Bdancs 10
3 Bbiri 20
4 Cnewman 30
5 Aropebur 40
INSERT INTO users VALUES
(1,Rpatel,10),
(2,Bdancs,10),
(3,Bbiri,20),
(4,Cnewman,30),
(5,Aropebur,40)SELECT * FROM users;#6. 将3号员工的last_name修改为“drelxer”
UPDATE my_employees
SET last_name drelxer
WHERE id 3;#7. 将所有工资少于900的员工的工资修改为1000
UPDATE my_employees
SET salary 1000
WHERE salary 900;#8. 将userid为Bbiri的users表和my_employees表的记录全部删除#方式1
DELETE FROM my_employees
WHERE userid Bbiri;DELETE FROM users
WHERE userid Bbiri;#方式2DELETE m,u
FROM my_employees m
JOIN users u
ON m.userid u.userid
WHERE m.userid Bbiri;SELECT * FROM my_employees;
SELECT * FROM users;#9. 删除my_employees、users表所有数据
DELETE FROM my_employees;
DELETE FROM users;#10. 检查所作的修正
SELECT * FROM my_employees;
SELECT * FROM users;#11. 清空表my_employees
TRUNCATE TABLE my_employees;
##########################################
#练习2
# 1. 使用现有数据库dbtest11
USE dbtest11;# 2. 创建表格pet
CREATE TABLE pet(
NAME VARCHAR(20),
OWNER VARCHAR(20),
species VARCHAR(20),
sex CHAR(1),
birth YEAR,
death YEAR
);DESC pet;# 3. 添加记录
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);SELECT *
FROM pet;# 4. 添加字段:主人的生日owner_birth DATE类型。
ALTER TABLE pet
ADD owner_birth DATE;# 5. 将名称为Claws的猫的主人改为kevin
UPDATE pet
SET OWNER kevin
WHERE NAME Claws AND species Cat;# 6. 将没有死的狗的主人改为duck
UPDATE pet
SET OWNER duck
WHERE death IS NULL AND species Dog;# 7. 查询没有主人的宠物的名字
SELECT NAME
FROM pet
WHERE OWNER IS NULL;# 8. 查询已经死了的cat的姓名主人以及去世时间
SELECT NAME,OWNER,death
FROM pet
WHERE death IS NOT NULL;# 9. 删除已经死亡的狗
DELETE FROM pet
WHERE death IS NOT NULL
AND species Dog;# 10. 查询所有宠物信息
SELECT *
FROM pet;##################################
#练习3
# 1. 使用已有的数据库dbtest11
USE dbtest11;
# 2. 创建表employee并添加记录
CREATE TABLE employee(
id INT,
NAME VARCHAR(15),
sex CHAR(1),
tel VARCHAR(25),
addr VARCHAR(35),
salary DOUBLE(10,2));INSERT INTO employee VALUES
(10001,张一一,男,13456789000,山东青岛,1001.58),
(10002,刘小红,女,13454319000,河北保定,1201.21),
(10003,李四,男,0751-1234567,广东佛山,1004.11),
(10004,刘小强,男,0755-5555555,广东深圳,1501.23),
(10005,王艳,男,020-1232133,广东广州,1405.16);SELECT * FROM employee;# 3. 查询出薪资在1200~1300之间的员工信息。
SELECT *
FROM employee
WHERE salary BETWEEN 1200 AND 1300;# 4. 查询出姓“刘”的员工的工号姓名家庭住址。
SELECT id,NAME,addr
FROM employee
WHERE NAME LIKE 刘%;# 5. 将“李四”的家庭住址改为“广东韶关”
UPDATE employee
SET addr 广东韶关
WHERE NAME 李四;# 6. 查询出名字中带“小”的员工
SELECT *
FROM employee
WHERE NAME LIKE %小%;