MySQL学习
目录
- 1、数据库定义基本语句
- (1)数据库操作
- (2)数据表操作
- 2.数据库操作SQL语句
- (1)插入数据
- (2)更新语句
- (3)删除数据
- 3.数据库查询语句
- (1)基本查询
- (2)where条件查询
- (3)查询结果排序order by
- (4)聚合函数使用
- (5)查询结果分组处理,配合聚合函数
- (6)子查询处理多表
- 4.几种删除方式的区别
1、数据库定义基本语句
(1)数据库操作
# 创建数据库db
create database db
# 修改数据库db的属性:数据库名称由db改为db1
alter database db rename to db1
# 修改数据库db的属性:数据库修改所有者为user1
alter database db owner to user1
# 删除数据库db
drop database db
(2)数据表操作
# 创建数据表student
create table student(id char(10) primary key,name varchar(255) not null,birthday date null,major varchar(255) null
);
# 修改数据表:添加新的列age
alter table student add age int null;
# 修改数据表:删除birthday这一列
alter table student drop column birthday;
# 修改数据表:修改表名为student1
alter table student rename to student1;
# 修改数据表:修改列名major为major1
alter table student rename column major to major1
# 修改数据表:修改指定列的类型
alter table student alter column name type varchar(12);# 删除数据表
drop table student;
2.数据库操作SQL语句
(1)插入数据
insert into student values
('2017','zm','1999-04-23','计算机'),
('2017','wb','1997-08-05','计算机');
(2)更新语句
如果不加where 会更新表中所有数据
update student
set birthday='1999-04-09'
where name='zm'
(3)删除数据
如果不加where会删除所有行
delete from student where name='zm';
3.数据库查询语句
(1)基本查询
# 查询全部数据
select * from student
# 查询全部数据,但指定字段展示
select id,name from student
(2)where条件查询
# 按照条件查询数据
select * from student where major='计算机' and name='zm';
# 利用between...and..查询
select * from student where birthday between '1999-01-01' and '1999-12-31';
# 利用like和通配符 -表示一个字符,%表示多个字符
select * from student where name like 'z%';
select * from student where name like 'z_';
# 利用not like 查询不是z开头的name
select * from student where name not like 'z%';
(3)查询结果排序order by
# asc 升序,默认不写
select * from student order by birthday asc;
# desc 降序
select * from student order by birthday desc;
(4)聚合函数使用
# AVG-平均值 MIN-最小值 MAX-最大值 SUM-求和 COUNT-结果集行数计数
select COUNT(*) as '人数' from student;
# 去重:有几个专业
select COUNT(DISTINCT major) as '专业数' from student;
(5)查询结果分组处理,配合聚合函数
# 查询每个专业的人数
select major, count(id) from student
group by major
# 使用having和where指定查询条件,同时使用时,先用where过滤数据集,再使用having限定分组
# 查询女生所在的专业中,女生人数超过3人的专业
select major,count(*) from student
where sex='女'
group by major
having count(*)>3
(6)子查询处理多表
就是再select语句的where中嵌套一层或多次select语句
select teacher_id,name from teacher
where collegeID IN
(select collegeID from college
where college_name='电智学院'
order by teacher_id)
4.几种删除方式的区别
(1)drop:用来删除数据库和数据表,删除结构和数据,不可回滚
(2)delete:用来删除表中的数据记录,一行一行删,插入事物,可以回滚。如果没有where条件,就删除表中全部记录
(3)truncate:删除表(直接删除整张表,然后建个新表),不支持事务。不可回滚,