- 什么是数据库
- 数据库(Database,简称DB)概念:
- 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据"仓库"
- 作用:存放和管理数据
- 分类:关系型数据库和NoSQL数据库
- 关系型数据库
- MySQL、ORACLE、PostgreSQL
- NoSQL
- redis、mongoDB
- ------------------------------------------------------------------------------------------------
- MySQL数据库的特点
- 1.开源免费,小巧但功能齐全
- 2.可在Windows和Linux系统上运行
- 3.操作方便,适用于中小型甚至大型网站应用
- 数据库结构
- 1.数据库(Database):以文件的形式存放到磁盘上
- 2.数据表(Table)
- 由一组数据记录组成数据库中的数据是以表为单位进行组织的
- 3.字段(Field):也称域,表中的每一列成为一个字段
- 4.记录(Record):表中的每一行成为一个记录,由若干字段组成
- 5.索引(Index):一种特殊类型的表,其中含有关键字段的值和指向实际记录位置的指针,提高访问效率
- 6.SQL语句:结构化查询语句命令,对某个表执行指定的操作
- DDL:(数据定义语言)
- 1:定义和管理数据对象,如数据库、数据表等
- 2:命令有:1.CREATE(创建数据库) 2 .DROP(删除数据库) 3.ALTER(修改数据库)
- 库的操作,SQL语句不分大小写:
- 1.显示所有的库:show databases;
- 2.创建一个库:create database 库名;
- 3.删除一个库: drop database 库名;
- 4.使用库:use 库名
- 表的操作 :
- 1.查看库中所有的表:show tables
- 2.建表:create table 表名(字段名 类型 属性, |tea_name varchar(10),字段名 类型 属性,|tea_sex char(1),......字段名 类型 属性 |tea_money decimal(20,1));
- 3.查看表结构:desc 表名:
- show create table 表名:
- 4.修改和删除表:
DML(数据操作语言):1.INSERT(增加数据)(insert语句):1.语法:insert into 表名 (字段1,字段2,字段n) values(值1,值2,值n)
2. UPDATE(修改数据):update 表名 set `字段名1` = '值1' [ , `字段名2` = '值2', …. ] where 条件 条件:为筛选条件,如不指定则修改该表的所有列数据。
3.DELETE(删除数据):1.语法:DELETE FROM 表名 [ WHERE 条件];
2.“WHERE”可以通过where子句增加删除的条件。
- 4.删除数据(TRUNCATE语句):truncate [table] 表名
DQL(数据查询语言):DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句,中最核心、最重要的语句,也是使用频率最高的语句。
单表查询:针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化。
1.select * from 表名; 查询数据库表的全部字段。
2.select sname "姓名",birthday 生日,ssex 男,classid 班级 from student; 给一个字段取別名
3.select distinct ssex,classid from student; 去除重复
4.select * from student where ssex="男" and classid=1; 带条件的查询 where 子句。select * from student where sid between 3 and 7;
5.like 模糊查询 模糊符号 % 任意多的字符 _一个任意字符
6.in 在特定的范围内查找:select * from student where sid in (3,6,8,9);
7.null值查询 :select * from student where birthday is null;或者 is not null
8.where:将过滤条件放在where后面 (可以跟、数字、日期、字符串)、(逻辑运算符 > < ,between,and,or,in,like,null),可以过滤出我们想要的条件
9.have对聚合后的数据进行筛选,不能单独出现:select sid,avg(score) from sc group by sid having avg(score)<60;
10.排序:order by 1.升序 asc(默认的)2.降序 desc
11.分页查看:limit 1.只查看前3行数据:select * from student limit 3;
2.查询 第二页 3行数据:select * from student limit 3,3;
多表联查:多表联查可以通过连接运算实现,即将多张表通过主外键关系关联在一起进行查询
1.非等值查询 二者共有的数据:select * from student , class where student.classid=class.classid; 查询学生和班级共有的数据
2.等值查询:select * from student,class
3.left jion on 左外联:select * from student left join class on student.classid=class.classid;
4.right join on 右外联:select * from class right join student on student.classid=class.classid;
5.innner join on on后面跟判断条件:select * from student inner join class on student.classid=class.classid;查询学生和班级共有的数据
6.select * from student where exists (select * from student where ssex='男')从学生表中取出学生的信息,(如果该性别下没有男学生则不显示)
子查询 from:查询每个班级的人数
select classname ,a from class left join (
select classid , count(*) a from student group by classid )t
on class.classid =t.classid;
每个班下Id最大的学生 子查询:
select * from student where sid in (select max(sid) from student group by classid);