- 创建数据库test01_library
CREATE DATABASE IF NOT EXISTS test01_library;
- 创建表 books,表结构如下:
CREATE TABLE IF NOT EXISTS books(
id INT,
`name` VARCHAR(50),
`authors` varchar(100),
price FLOAT,
pubdate DATE,
note VARCHAR(100),
num INT
);
- 向books表中插入记录
INSERT INTO books(id,`name`,`authors`,price,pubdate,note,num)
VALUES
(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);
- 将小说类型(novel)的书的价格都增加5
UPDATE books
SET price = price + 5
WHERE note = 'novel';
- 将名称为EmmaT的书的价格改为40,并将说明改为drama
UPDATE books
SET price = 40,note = 'drama'
WHERE `name` = 'EmmaT';
- 删除库存为0的记录
DELETE FROM books
WHERE num = 0;
- 统计书名中包含a字母的书
SELECT COUNT(*)
FROM books
WHERE `name` LIKE '%a%';
- 统计书名中包含a字母的书的数量和库存总量
SELECT COUNT(*),SUM(num)
FROM books
WHERE `name` LIKE '%a%';
- 找出“novel”类型的书,按照价格降序排列
SELECT *
FROM books
WHERE note = 'novel'
ORDER BY price DESC;
- 查询图书信息,按照库存量降序排列,如果库存量相同的按照note升序排列
SELECT *
FROM books
ORDER BY num DESC,note ASC;
- 按照note分类统计书的数量
SELECT note,sum(num)
FROM books
GROUP BY note;
- 按照note分类统计书的库存量,显示库存量超过30本的
SELECT note,sum(num)
FROM books
GROUP BY note
HAVING sum(num) > 30;
- 查询所有图书,每页显示5本,显示第二页
SELECT *
FROM books
LIMIT 5,5;
- 按照note分类统计书的库存量,显示库存量最多的
SELECT note,sum(num)
FROM books
GROUP BY note
limit 0,1;
- 查询书名达到10个字符的书,不包括里面的空格
SELECT *
FROM books
WHERE CHAR_LENGTH(REPLACE(`name`,' ','')) >= 10;
- 查询书名和类型,其中note值为novel显示小说, law显示法律, medicine显示医药, cartoon显示卡通, joke显示笑话
SELECT `name`,case note WHEN 'novel' THEN '小说'WHEN 'law' THEN '法律'WHEN 'medicine' THEN '医药'WHEN 'cartoon' THEN '卡通'WHEN 'joke' THEN '笑话'ELSE '其它' END
FROM books;
- 查询书名、库存,其中num值超过30本的,显示滞销,大于0并低于10的,显示畅销,为0的显示需要无货
SELECT `name`,CASE WHEN num > 30 THEN '滞销'WHEN num > 0 && num < 10 THEN '畅销'WHEN num = 0 THEN '无货'ELSE '正常' END "销售状态"
FROM books;
- 统计每一种note的库存量,并合计总量
SELECT IFNULL(note,'合计总量') "库存量",SUM(num)
FROM books
GROUP BY note
WITH ROLLUP;
- 统计每一种note的数量,并合计总量
SELECT IFNULL(note,'合计总量') "库存量",COUNT(*)
FROM books
GROUP BY note
WITH ROLLUP;
- 统计库存量前三名的图书
SELECT *
FROM books
ORDER BY num DESC
LIMIT 0,3;
- 找出最早出版的一本书
SELECT *
FROM books
ORDER BY pubdate ASC
LIMIT 0,1;
- 找出novel中价格最高的一本书
SELECT *
FROM books
WHERE note = 'novel'
ORDER BY price DESC
LIMIT 0,1;
- 找出书名中字数最多的一本书,不含空格
SELECT *
FROM books
ORDER BY CHAR_LENGTH(REPLACE(`name`,' ','')) DESC
LIMIT 0,1;
- 创建数据库dbtest11
CREATE DATABASE IF NOT EXISTS dbtest11;
- 运行以下脚本创建表my_employees和users
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表中插入下列数据
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', 'Aropebur', 1550);
- 向users表中插入数据
INSERT INTO users
VALUES
(1, 'Rpate', 10),
(2, 'Bdancs', 10),
(3, 'Bbiri', 20),
(4, 'Cnewman', 30),
(5, 'Aropebur', 40);
- 将3号员工的last_name修改为“drelxer”
UPDATE my_employees
SET last_name = 'drelxer'
WHERE id = 3;
- 将所有工资少于900的员工的工资修改为1000
UPDATE my_employees
SET salary = 100
WHERE salary < 900;
- 将userid为Bbiri的user表和my_employees表的记录全部删除
DELETE FROM my_employees
WHERE userid = 'Bbiri';
DELETE FROM users
WHERE userid = 'Bbiri';
- 删除my_employees、users表所有数据
DELETE FROM users;
DELETE FROM my_employees;
- 检查所作的修正
SELECT *
FROM users;SELECT *
FROM my_employees;
- 清空表my_employees
TRUNCATE TABLE my_employees;
- 使用现有数据库dbtest11
USE dbtest11;
- 创建表格pet
CREATE TABLE pet(
name VARCHAR(20),
owner VARCHAR(20),
species VARCHAR(20),
sex CHAR(1),
birth YEAR,
death YEAR
);
- 添加记录
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);
- 添加字段:主人的生日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;
- 使用已有的数据库dbtest11
USE dbtest11;
- 创建表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);
- 查询出薪资在1200~1300之间的员工信息
SELECT *
FROM employee
WHERE salary >= 1200 AND salary <= 1300;
- 查询出姓“刘”的员工的工号,姓名,家庭住址
SELECT id,`NAME`,addr
FROM employee
WHERE `NAME` LIKE '刘%';
- 将“李四”的家庭住址改为“广东韶关”
UPDATE employee
SET addr = '广东韶关'
WHERE `NAME` = '李四';
- 查询出名字中带“小”的员工
SELECT *
FROM employee
WHERE `NAME` LIKE '%小%';