1.简介
- 数据库是一个文件系统,使用标准sql对数据库进行操作(增删改查)
- MYSQL是关系数据库,存储实体之间的关系
- 常见的数据库oracle,db2,SQLServer,MySQL,SQLite
2.存储结构
- 存储结构:数据库、数据库表、表的记录
3.sql语言
- Structured Query Language, 结构化查询语言,对数据库进行操作
分类
- DDL(数据定义语言)创建数据库、数据库表
- DML(数据操纵语言)对表中的记录进行增加、修改、删除操作
- DCL(数据控制语言)数据库的编程的语言
- DQL(数据查询语言)对表中的进行查询的操作
- 常用的语句 create;select;insert;update;delete
4. 数据类型
字符串型:VARCHAR、CHAR
name varchar(20),存值 a ,直接把a存进去
name char(20),存值 b,把b存进去,后面加很多空格
日期型:
DATE:用于表示日期 1945-08-15
TIME:用于表示时间 19:10:40
DATETIME:手动添加时间到数据表里面
TIMESTAMP:自动把时间添加到表里面
5.常用操作
1.连接
mysql -u root -p 密码
2.创建
create database database_name;//创建数据库
//创建数据库表
create table table_name (
id int primary key auto_increment ,//主键约束,自动增长
username varchar(40) not null,//非空约束
sex varchar(20),
hobby varchar(20) unique//唯一性约束
)
insert into table_name values(1,'aaa','123456','nan');//向表里面添加记录
3.查看
show databases;//查看数据库
show tables;//查看当前数据库里的表
use table_name;//切换数据库
desc table_name;//查看表结构
select database();//查看当前的运行的数据库
select * from user;//查询user表里面的所有的数据
select username,chinese from user;//查询user表里面用户名和语文成绩
select distinct * from table_name;//distinct,查看非重复记录
where:条件表达
select * from table_name where chinese > 60;//查询user表里面语文成绩大于60的所有的人员
select * from table_name where id=2;//查询user表里面id=2的数据
in:选择
select * from table_name where english in (80,90);//查询user表里面英语成绩是80、90的人员的信息
and:同时满足条件
select * from table_name where chinese=100 and english=30;//查询user表里面语文成绩是100,并且英语成绩是30的人员的信息
区间范围
select * from table_name where chinese >=70 and chinese <=100;
select * from table_name where chinese between 70 and 100;
like:模糊查询
select * from table_name where username like '%a%';//username包含a
select * from table_name where username like 'a%';//username包含以a开头
select * from table_name where username like '%a';//username包含以a结束
order by:查询的记录排序,写在select语句的最后
//升序asc
select * from table_name order by chinese asc;//asc默认可以省略
//降序 desc
select * from table_name order by english desc;
聚集函数:
count()函数
//表里面语文成绩大于60的人员有多少
select count(*) from table_name where chinese>60;
sum()函数
//表里面语文总成绩,英语的总成绩
select sum(chinese),sum(english) from table_name;
//表里面语文成绩的平均分(总的成绩/总的人数)
select sum(chinese)/count(*) from table_name;
avg()函数
max()函数:
min()函数:
select max(chinese),min(english) from table_name;//表里面语文成绩的最高分数,英语的成绩最低分数
分组操作,使用 group by
在分组的基础之上再进行条件的判断 having,后面可以写聚集函数
//统计orders表里面每类商品的总的价格
select name,sum(price) from table_name group by name;
//对商品进行分类,得到每类商品的总价格大于66的商品
select name,sum(price) from table_name group by price having sum(price)>66;
mysql的专有关键字limit只能在mysql数据库里面使用
//查询user表里面前三条记录
select * from user limit 3;
select * from user limit 0,3;
//查询user表里面第二条到第四条记录
select * from user limit 1,3;//limited start_index,length
4.修改
update table_name set username='QQQ',password='999' where id=1;//修改表里面的记录
5.删除
drop database database_name;//删除数据库
drop table table_name;//删除表
delete from table_name where id=1;//删除表里面的记录,不添加where条件,会删除所有记录