MySQL数据库
数据库(DataBase):数据库是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(Database Management SystemDBMS):是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。
数据库操作
数据库初始数据:
增
insect into 表名 set 列名1=数据1,列名2=数据2…
INSERT INTO novel SET bookname='吞噬星空',auther='我吃西红柿',price='34'
INSERT INTO novel SET bookname='星辰变',auther='我吃西红柿',price='49'
INSERT INTO novel SET bookname='武动乾坤',auther='天蚕土豆',price='21'
注意 :可以随意加数据,并不是有几列就要加几个的数据,如果该列数据没有加,会显示NULL
INSERT INTO novel SET bookname='武动乾坤',auther='天蚕土豆'
删
delete from 表名 where 条件(比如将id为5的行删除)
DELETE FROM novel WHERE id=5
DELETE FROM novel WHERE price='66'
可以看到id=5和price=66的行被删除
改
update 表名 set 列名1=数据1,列名2=数据2… where 条件(比如id=1)
UPDATE novel SET bookname='绝世唐门',price='111' WHERE auther='唐家三少'
UPDATE novel SET bookname='我不知道' WHERE auther='天蚕土豆'
可以看到如果有多行符合条件的数据,会全部更改.因此如果只改一行的数据,条件要写唯一
查
查询操作是我们在项目中最常用到的操作
一、普通查询:
初始数据:
1、 查询所有的数据:
select * from 表名;
SELECT * FROM fruit
2、 查询时合并列:
查询每个水果的price和weight的总价
SELECT id,fruit,(price*weight) AS 'total' FROM fruit
注意:合并列只能合并数值类型的字段,as是给它起的别名
3、 查询时去除重复数据:
DISTINCT
SELECT DISTINCT fruit FROM fruit
– 示例: 查询学生所在的地区
SELECT DISTINCT address FROM student;
– 另一种语法
SELECT DISTINCT(address) FROM student;
二、条件查询: select 列名 from 表名 where 条件
where后面的条件可以用>、<、>=、<=、!=等多种比较运算符,多个条件之间可 以用or、and等逻辑运算符
比如查询price大于等于7的所有水果
SELECT * FROM fruit WHERE price>=7
比如查询weight小于5的水果
SELECT * FROM fruit WHERE weight<5
三、排序:
select * from 表名 [where 条件] [ order by field1 [desc/asc],field2 [desc/asc]…];
- 1.desc 降序排列,asc 升序排列
- 2.order by 后面可以跟多个不同的排序字段,每个排序字段都可以有不同的排序顺序。
- 3.如果排序字段的值一样,则相同的字段按照第二个排序字段进行排序。
- 4.如果只有一个排序字段,则字段相同的记录将会无序排列。
比如按照price降序查询所有水果
SELECT * FROM fruit ORDER BY price DESC
四、限制:
select … from 表名 [limit 起始偏移量,行数];
例如:取出价格前四名的水果(可以省略起始偏移量,此时默认为0)
SELECT * FROM fruit ORDER BY price DESC LIMIT 0, 4
五、聚合:
select 字段 fun_name from 表名 [ where 条件 ] [ groupbyfield1,field2… ] [with rollup] [having 条件];
- 1.fun_name 表示要做的聚合操作,也就是说聚合函数,常用的有 : sum(求和)、count(*)
(记录数)、max(最大值)、min(最小值)。 - 2.group by关键字 表示要进行分类聚合的字段。比如要按照部门分类统计员工数量,部门就应
该写在group by 后面。 - 3.with rollup 是可选语法,表明是否对分类聚合后的结果进行再汇总
- 4.having 关键字表示对分类后的结果再进行条件过滤。
例如: 公司员工表A如下 (编号,姓,名,薪水)
(1) 统计水果种类
SELECT COUNT(1) FROM fruit
(2) 统计各种水果的个数
SELECT fruit,COUNT(1) FROM fruit GROUP BY fruit
(3) 统计各种水果的个数及水果种类数
SELECT fruit,COUNT(1) FROM fruit GROUP BY fruit WITH ROLLUP
(4)统计种类数大于等于2的水果
SELECT fruit,COUNT(1) FROM fruit GROUP BY fruit HAVING COUNT(1)>=2
(5)统计最低价格,最高价格
SELECT MIN(price),MAX(price) FROM fruit
六、多表连接查询:
表连接分为内连接和外连接。 他们之间最主要的区别:内连接仅选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。
比如这是两张表book和novel
1、内连接
SELECT book.name,novel.bookname FROM book,novel WHERE book.name=novel.bookname
2、外连接 分为左连接和右连接
- 左连接:包含左边表中所有的记录,右边表中没有匹配的记录显示为NULL。
- 右连接:包含右边表中所有的记录,左边表中没有匹配的记录显示为NULL。
(1)外连接(左连接):
SELECT book.name,novel.bookname FROM book LEFT JOIN novel ON book.name=novel.bookname
(2)外连接(右连接):
SELECT book.name,novel.bookname FROM book RIGHT JOIN novel ON book.name=novel.bookname