数据库
数据库管理系统
SQL
关系型数据库
mysql -uroot -p
show databases;
create database 数据库名称;
create database if not exists 数据库名称;
drop database 数据库名称;
drop database if exists 数据库名称;
use 数据库名称
select database();
show tables;
desc 表名称;
create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
...
字段名n 数据类型n
);
注意:最后一行末尾,不能加逗号
create table tb_student(
-> id int,
-> name varchar(10),
-> gender char,
-> birthday date,
-> score double(5,2),
-> email varchar(64),
-> tel varchar(15),
-> status tinyint
-> );
desc tb_student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| gender | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| score | double(5,2) | YES | | NULL | |
| email | varchar(64) | YES | | NULL | |
| tel | varchar(15) | YES | | NULL | |
| status | tinyint(4) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
drop table 表名;
drop table if exists 表名
alter table 表名 rename to 新的表名;
alter table 表名 add 列名 数据类型;
alter table 表名 modify 列名 新数据类型;
alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 drop 列名
insert into 表名(列名1,列名2,...) values(值1, 值2,...);
insert into 表名 values(值1, 值2,...);
insert into 表名(列名1,列名2,...) values(值1, 值2,...),(值1,值2,...),(值1,值2,...)...;
insert into 表名 values(值1, 值2,...),(值1,值2,...),(值1,值2,...)...;
update 表名 set 列名1=值1,列名2=值2,...[where 条件];
注意:修改语句中如果不加条件,则所有数据都修改
delete from 表名 [where 条件];
注意:删除语句如果不加调价,则所有数据都将删除!
select 字段列表 from 表名;
select * from 表名; -- 查询所有数据
select DISTINCT 字段列表 from 表名;
select 字段列表 as 别名 from 表名; -- as也可省略
-- 条件查询 =================
SELECT * FROM stu where age > 20;
SELECT * FROM stu where age >= 20;
SELECT * FROM stu where age >= 20 and age <= 30;
SELECT * FROM stu where age BETWEEN 20 and 30;
SELECT * FROM stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';
SELECT * FROM stu where age = 18;
SELECT * FROM stu where age != 18;
SELECT * FROM stu where age <> 18;
SELECT * FROM stu where age = 18 or age = 20 or age = 22;
SELECT * FROM stu where age in (18, 20, 22);
SELECT * FROM stu where english is null;
SELECT * FROM stu where english is not null;
-- 模糊查询 like ==================
/*
通配符:
(1)_:代表单个任意字符
(2)%:代表任意个数字符
*/
-- 1.查询姓'马'的学员信息
select * from stu where name like '马%';
-- 2.查询第二个字是'花'的学员信息
select * from stu where name like '_花%';
-- 3.查询名字中包含'德'的学员信息
select * from stu where name like '%德%';
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1], 排序字段名2 [排序方式2]...;
排序方式:
select * from stu order by age;
select * from stu order by math desc;
select * from stu order by math desc, english asc;
/**
聚合函数
* count:统计数量
* 取值:
1. 主键
2. *
* max:求最大值
* min:求最小值
* sum:求和
* avg:求平均值
**/
select * from stu;
select count(id) from stu; -- count 统计的列名不能为空
select count(*) from stu;
select max(math) from stu;
select min(math) from stu;
select sum(math) from stu;
select avg(math) from stu;
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where和 having的区别
-- 1. 查询男同学和女同学各自的数学平均分
select sex, avg(math) from stu group by sex;
-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数
select sex, avg(math),count(*) from stu group by sex;
-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
select sex, avg(math),count(*) from stu where math > 70 group by sex;
-- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。
select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询条目数;
起始索引:从0开始
计算公式:起始索引=(当前页码-1) * 每页显示的条数
-- 1. 从0开始查询,查询3条数据
select * from stu limit 0, 3;
-- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0, 3;
-- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3, 3;
-- 4. 每页显示3条数据,查询第3页数据
select * from stu limit 6, 3;