目录
一、设计表
1、表信息
2、插入
-- 插入
-- 第一种写法 (单条插入)
-- 如果列名与mysql关键字冲突用反引号括起来 避免冲突`name·
INSERT INTO goods (`name`, price)
VALUES
('连衣裙', 99.9)
-- 第二种写法 (去掉列名插入)
-- 给表中所有的列添加值 去掉列名的括号 按照顺序依次写入值
-- default为id默认自增长(默认就写default)
INSERT INTO goods
VALUES
(DEFAULT,'果冻',100,'2021-09-07',99.9)
-- 一次插入多条语句
INSERT INTO goods
VALUES
(DEFAULT,'酸奶',100,'2021-09-07',99.9),
(DEFAULT,'薯片',100,'2021-09-07',99.9),
(DEFAULT,'牛奶',100,'2021-09-07',99.9)
3、修改
-- 修改
UPDATE goods SET `name`='酸奶',cnt=200,price=199.8 WHERE id=5
4、删除
-- 删除
DELETE FROM goods WHERE id=1
-- 删除多条
DELETE FROM goods WHERE id in(5,6,7,8)
5、查询
-- 查询全部信息 SELECT 列名 FROM 表名
SELECT `name`,best_date FROM goods
-- 查询指定的行
SELECT `name`,best_date FROM goods WHERE id=5
-- 查询整个表的信息 (*表示所有的字段)
SELECT * FROM goods
-- 查询指定行的全部信息
SELECT * FROM goods WHERE id=5
-- AS关键字给某一个列(字段)起别名
SELECT `name` AS 商品名称 ,best_date AS 保质期 FROM goods WHERE id=5
-- 多个条件查询 WHERE AND
INSERT INTO goods VALUES(DEFAULT,'酸奶',100,'2021-09-08',99.9)
SELECT * FROM goods WHERE `name`='酸奶' AND best_date='2021-09-08'
-- 查询多行的信息
SELECT * FROM goods WHERE id in(10,11)
-- 查询相邻两个区间之间的所有数据
SELECT * FROM goods WHERE best_date BETWEEN '2021-09-01' AND '2021-09-07'
-- 查询不重复的数据 DISTINCT只能针对某一个字段去重
SELECT DISTINCT(`name`)FROM goods
-- 检索表中是否有空null的数据
SELECT * FROM goods WHERE cnt IS NUll
-- 查询所有不含空的数据
SELECT * FROM goods WHERE cnt IS NOT NUll
6、通配符
-- 通配符% 查询以酸开头的所有数据
SELECT * FROM goods WHERE `name` LIKE '酸%'
7、排序查询
-- 排序
-- 正序 ASC
-- 按保质期排序(数值都可以)
SELECT * FROM goods ORDER BY best_date ASC
-- 倒序 DESC
SELECT * FROM goods ORDER BY best_date DESC
-- 由某个条件来进行倒叙 WHERE ORDER BY
SELECT * FROM goods WHERE `name` LIKE '酸%' ORDER BY best_date DESC
-- 倒叙数据 LIMIT查询查询几条 限制结果集 0,3从0开始查查3条记录
SELECT * FROM goods ORDER BY best_date DESC LIMIT 0,3
-- 正序 LIMIT查询范围 查询几条
SELECT * FROM goods ORDER BY id DESC LIMIT 0,3
8、聚合函数
-- 聚合函数
-- 查询COMMIT某列中有多少个数据
SELECT COUNT(`name`) FROM goods
-- 查询某列所有数的总和
SELECT SUM(cnt) AS 总库存 FROM goods
二、例题
1、例题1
- 按照以下题目要求实现操作,并将sql语句记录在记事本中。
- 要求1:创建一个数据库libry在数据库中。
- 要求2:创建数据表books。
- 要求3:向books表中插入记录
- 创建表books
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
b_id | 书编号 | int(11) | 是 | 否 | 是 | 是 | 否 |
b_name | 书名 | varchar(50) | 否 | 否 | 是 | 否 | 否 |
authers | 作者 | varchar(100) | 否 | 否 | 是 | 否 | 否 |
Price | 价格 | Float | 否 | 否 | 是 | 否 | 否 |
pubdate | 出版日期 | Year | 否 | 否 | 是 | 否 | 否 |
Note | 说明 | varchar(100) | 否 | 否 | 否 | 否 | 否 |
Num | 库存 | int(11) | 否 | 否 | 是 | 否 | 否 |
- books表中的记录
b_id | b_name | authers | 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:查询价格低于30并且库存大于10的书名;
- 要求5:查询作者名字的首字母为J的书的书名和作者;
- 要求6:查询note为novel 出版时间在2000年以后的书的名字,出版日期,以及库存;
- 要求7: 查询价格比Old land低的所有书的名称。
-- 查询价格低于30并且库存大于10的书名;
SELECT * FROM books WHERE price<30 AND num>10
-- 查询作者名字的首字母为J的书的书名和作者;
SELECT * FROM books WHERE authors LIKE 'j%'
-- 查询note为novel 出版时间在2000年以后的书的名字,出版日期,以及库存;
SELECT * FROM books WHERE Note='novel' AND pubdate>'2000-01-01'
-- 查询价格比Old land低的所有书的名称。
-- 得到old land这本书的价格
SELECT price FROM books WHERE b_name='Old land'
-- 子查询
SELECT * FROM books WHERE price<(SELECT price FROM books WHERE b_name='Old land')