SQL的概述
sql语言的分类:
-
数据定义:DDL(Data Definition Language):库的创建删除、表的创建删除等
-
数据操纵:DML(Data Manipulation Language):新增数据、删除数据、修改数据等
-
数据控制:DCL(Data Control Language):新增用户、删除用户、密码修改、权限管理等
-
数据查询:DQL(Data Query Language):基于需求查询和计算数据
DDL-库管理
1. 查看数据库
SHOW DATABASES;
2. 使用数据库
USE 数据库表名;
3. 创建数据库
CREATE DATABASE 数据库名 [CHARSET UTF-8];
4. 删除数据库
DROP DATABASE 数据库名;
5. 查看当前使用的数据库
SELECT DATABASE()
DDL-表管理
1. 查看有哪些表
SHOW TABLES;
2. 创建表
CREATE TABLE 表名称(
列名称 列类型,
列名称 列类型,
......
);
-- 列类型有
int -- 整数
float -- 浮点数
varchar(长度) -- 文本,长度为数字,做最大长度限制
date -- 日期类型
timestamp -- 时间戳类型
3. 删除表
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;
DML-表操作
DML是指数据操作语言,Date Manipulation Language,用来对数据库中表的数据记录进行更新
1. 插入INSERT
基础语法:
INSERT INTO 表[(列1,列2,...,列n)] VALUES(值1,值2,... ,值n)[(值1,值2,... ,值n),(值1,值2,... ,值n)]
-- 演示
create table student(
id int,
name varchar(20),
age int
)
show tables;
-- 仅插入id列数据
insert into student(id) values(1),(2),(3);
-- 插入全部列数据
insert into student(id,name,age) values(4,'周杰',31),(5,'林杰',33),(6,'张杰',32);
-- 插入全部列数据快捷写法
insert into student values(7,'admin',22),(8,'管理员',18);
2. 删除DELETE
基础语法:
DELETE FROM 表名称[WHERE 条件判断]
-- 演示
create table student(
id int,
name varchar(20),
age int
)
insert into student values(1,'周杰',31),(2,'林杰',33),(3,'张杰',32);
-- 删除name为周杰的数据
delete from student where name = '周杰';
-- 删除age>32的数据
delete from student where age > 32;
-- 删除全部数据
3. 更新UPDATE
基础语法:
UPDATE 表名 SET 列=值 [WHERE 条件判断];
-- 演示
create table student(
id int,
name varchar(20),
age int
)
insert into student values(1,'周杰',31),(2,'林杰',33),(3,'张杰',32);
-- 修改id为2的name为张三
update student set name='张三' where id = 2;
-- 修改全部数据的age为20
update student set age=20;
DQL-基础数据查询
在SQL中,通过SELECT关键字开头的SQL语句,来进行数据的查询
基础语法:
SELECT 字段列表|* FROM 表
# 演示
create table student(
id int,
name varchar(20),
age int
)
insert into student values(10001, '周杰伦', 31), (10002, '王力宏', 33), (10003, '林俊杰', 35), (10004, '张学友', 36), (10005, '刘德华', 30);
-- 查询id和name两个列
select id,name from student;
-- 查询全部列
select id,name,age from student;
-- 查询全部列,快捷写法
select * from student;
DQL-基础数据查询-过滤
查询也可以带有指定条件
select 字段列表|* from 表 where 条件判断;
# 演示
-- 查询id和name两个列,年龄小于33
select id,name from student where age < 33;
-- 查询全部列,id等于10003
select id,name,age from student where id = 10003;
DQL-分组聚合
基础语法:
SELECT 字段|聚合函数 FROM 表 [WHERE 条件] GROUP BY 列
聚合函数有:
SUM(列) 求和
AVG(列) 求平均值
MIN(列) 求最小值
MAX(列) 求最大值
COUNT(列|*) 求数量
-- 演示
create table student(
id int,
name varchar(20),
age int,
gender varchar(4)
)
insert into student values(10001,'周杰',31,'男'),(10002,'张杰',33,'男'),(10003,'刘杰',35,'女'),(10004,'何杰',36,'女'),(10005,'王杰',33,'男'),(10006,'林杰',10,'男');
select gender,avg(age),sum(age),min(age),max(age),count(*) from student group by gender;
DQL-分页聚合
结果排序
可以对查询的结果,使用ORDER BY关键字,指定某个列进行排序,语法:
SELECT 列|聚合函数|* FROM 表
WHERE ...
GROUP BY ...
ORDER BY ... [ASC | DESC]
-- 演示
create table student(
id int,
name varchar(20),
age int,
gender varchar(4)
)
insert into student values(10001,'周杰',31,'男'),(10002,'张杰',33,'男'),(10003,'刘杰',35,'女'),(10004,'何杰',36,'女'),(10005,'王杰',33,'男'),(10006,'林杰',10,'男');
-- 年龄大于20的按年龄降序排序结果
select * from student where age > 20 order by age desc;
-- 年龄大于20的按年龄升序排序结果
select * from student where age > 20 order by age asc;
结果分页限制
可以使用LIMIT关键字,对查询结果进行数量限制或分页显示,语法:
SELECT 列|聚合函数|* FROM 表
WHERE ...
GROUP BY ...
ORDER BY ... [ASC | DESC]
LIMIT n[, m]
-- 演示
create table student(
id int,
name varchar(20),
age int,
gender varchar(4)
)
insert into student values(10001,'周杰',31,'男'),(10002,'张杰',33,'男'),(10003,'刘杰',35,'女'),(10004,'何杰',36,'女'),(10005,'王杰',33,'男'),(10006,'林杰',10,'男');
-- 显示前三条数据
select * from student limit 3;
-- 从第十条开始,取五条
select * from student limit 10,5;
-- 将年龄超过20的和人数进行升序排序,显示前三行
select age,count(*) from student where age >20 group by age order by age limit 3;