要点

  • 登录,查询数据库,创建数据库,删除数据库,查询创建删除表。
  • 增删改查:insert into , delete ,update ,select
  • 条件查询:大于>,小于<,在…之间between and,排序order by,模糊like
  • 分组分页查询:group by
  • 聚合函数:最大max(),最小min(),求和sum(),平均average(),累计count()
  • 多表:内连接inner join … on,左连接left join … on,右链接right join … on,自关联,子查询

数据库基础

登录

1
2
mysql -uroot -p
输入密码

退出

1
exit;

查看版本

1
select version();

当前时间

1
select now();

显示数据库

1
show databases;

创建数据库

1
create database 库名;

删除数据库

1
drop database 库名

使用数据库

1
use 库名;

创建表

1
2
3
4
5
CREATE TABLE user2 (
id INT PRIMARY KEY auto_increment,
name VARCHAR(45),
pwd VARCHAR(45)
);

删除表

1
drop table tab1;

增删改查

查询所有

1
select * from singer

插入数据

1
insert into user values(null,'李白',34);

删除数据

1
delete from singer where id=4;

修改数据

1
update singer set sex='男' where id=5;

查询单条

1
select * from singer where id =5;

范围查询

条件查询

准备数据表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
drop table if exists students;
create table students (
studentNo varchar(10) primary key,
name varchar(10),
sex varchar(1),
hometown varchar(20),
age tinyint(4),
class varchar(10),
card varchar(20)
);
insert into students values
('001','王昭君','女','北京','20','1班','340322199001247654'),
('002','诸葛亮','男','上海','18','2班','340322199002242354'),
('003','张飞','男','南京','24','3班','340322199003247654'),
('004','白起','男','安徽','22','4班','340322199005247654'),
('005','大乔','女','天津','19','3班','340322199004247654'),
('006','孙尚香','女','河北','18','1班','340322199006247654'),
('007','百里玄策','男','山西','20','2班','340322199007247654'),
('008','小乔','女','河南','15','3班',null),
('009','百里守约','男','湖南','21','1班',''),
('010','妲己','女','广东','26','2班','340322199607247654'),
('011','李白','男','北京','30','4班','340322199005267754'),
('012','孙膑','男','新疆','26','3班','340322199000297655');

大于

查询年龄大于等于24岁的男同学

小于

查询年龄小于20岁的女同学

等于

查询年龄等于18岁的同学

特定字段

查询年龄大于等于20岁的同学的编号,姓名,地址

模糊

查询所有学生地址最后一个字母带有京的信息

范围

查询年龄在25岁到30岁的学生的信息

空判断

查询card为null的学员的信息

排序

按年龄从大到小对学员进行排序

聚合查询

聚合函数

count(*)

统计表中有多少条数据

max()

查询年龄最大的值

min()

查询年龄最小的值

sum()

所有年龄的和相加

avg()

所有年龄的平均数

多表联查

分组查询

对班上男生和女生进行分组查询,查询各占多少人

分页查询

多表查询

课程表

1
2
3
4
5
6
7
drop table if exists courses;
create table courses (
courseNo int(10) unsigned primary key auto_increment,
name varchar(10)
);
insert into courses values ('1', '数据库'), ('2', 'qtp'), ('3', 'linux'),
('4', '系统测试'), ('5', '单元测试'), ('6', '测试过程');

成绩 表

1
2
3
4
5
6
7
8
9
10
drop table if exists scores;
create table scores (
id int(10) unsigned primary key auto_increment,
courseNo int(10),
studentno varchar(10),
score tinyint(4)
);
insert into scores values ('1', '1', '001', '90'), ('2', '1', '002', '75'),
('3', '2', '002', '98'),('4', '3', '001', '86'),('5', '3', '003', '80'),
('6', '4', '004', '79'),('7', '5', '005', '96'),('8', '6', '006', '80');

内连接

inner join on

左连接

left join ……on

右链接

right join …..on

自关联

准备数据

1
2
3
4
5
6
7
8
9
10
drop table if exists areas;
create table areas(aid int primary key, atitle varchar(20),pid int);


insert into areas values ('130000', '河北省', NULL), ('130100', '石家庄市', '130000'),
('130400', '邯郸市', '130000'), ('130600', '保定市', '130000'),('130700', '张家口市', '130000'),
('130800', '承德市', '130000'),('410000', '河南省', NULL), ('410100', '郑州市', '410000'),
('410300', '洛阳市', '410000'),('410500', '安阳市', '410000'),('410700', '新乡市', '410000'),
('410800', '焦作市', '410000'),('410101', '中原区', '410100'),('410102', '二七区', '410100'),
('410301', '洛龙区', '410300');

查询河南省下面所有的市

子查询

查询王昭君成绩