mySQL 基础操作
作者:互联网
-
了解SQL的分类:
-
DDL:数据定义语言。定义database、table等等
-
DML:数据操作语言。数据的增、删、改
-
DQL:数据查询语言。查询数据
-
DCL:数据控制语言。DBA使用的,管理MySql的用户、权限等等
-
TCL:事务管理语言。进行事务管理的
-
-
DDL:操作database
-
创建database
create database 数据库名称
-
查看database
show databases;
show create database 数据库名称
-
删除database
drop database 数据库名称
-
使用database
use 数据库名称
select database()
-
-
DDL:操作table
-
创建table
create table 表名(字段名1 类型, 字段名2 类型,...)
-
查看table
show tables
,desc 表名称
,show create table 表名称
-
删除table
drop table 表名
-
修改table
-
添加字段:
alter table 表名 add 字段名 类型
-
修改字段名:
alter table 表名 change 原字段名 新字段名 类型
-
修改字段类型:
alter table 表名 modify 字段名 新类型
-
删除字段:
alter table 表名 drop 字段名
-
重命名表:
rename table 表名 to 新表名
-
-
-
DML:
-
添加数据:
insert into 表名(字段1, 字段2, ...) values (值1, 值2, ...)
-
修改数据:
update 表名 set 字段1=值1, 字段2=值2,... where 条件
-
删除数据:
delete from 表名 where 条件
-
-
DQL:
-
查询所有
select * from 表名
-
查询指定字段
select 字段1, 字段2, .. from 表名
-
查询处理null值
select ifnull(字段,默认值) from 表名
-
查询并运算
select 字段1+100, 字段2-字段1, ... from 表名
-
查询起别名
select 字段1 as 别名1, 字段2 别名2 from 表
-
去重查询
select distinct 字段1, 字段2,.. from 表名
1. 条件查询
-
条件判断:
>, <, >=, <=, =, <>
-
多条件:
and, or, not
-
范围查询:
between .. and ..
,in (值1,值2,..)
-
模糊查询:
like '表达式'
:-
%
:匹配任意个任意字符 -
_
:匹配一个任意字符
-
-- 1. 条件查询
-- 1.1 查询马云的数据
SELECT * FROM student3 WHERE NAME = '马云';
-- 1.2 查询年龄大于25岁的学生信息
SELECT * FROM student3 WHERE age > 25;
-- 1.3 查询不是香港的所有学生信息
SELECT * FROM student3 WHERE address <> '香港';
-- 1.4 查询年龄大于25岁的男生
SELECT * FROM student3 WHERE age > 25 AND sex = '男';
-- 1.5 查询年龄大于25岁的学生信息,或者性别为男生的信息
SELECT * FROM student3 WHERE age > 25 OR sex = '男';
-- 1.6 查询年龄不大于25岁的学生信息
SELECT * FROM student3 WHERE age <= 25;
SELECT * FROM student3 WHERE NOT(age > 25);
-- 1.7 查询年龄是20到45之间的学生信息
SELECT * FROM student3 WHERE age >= 20 AND age <= 45;
SELECT * FROM student3 WHERE age BETWEEN 20 AND 45;
-- 1.8 查询年龄是20、22、55的学生信息
SELECT * FROM student3 WHERE age = 20 OR age = 22 OR age = 55;
SELECT * FROM student3 WHERE age IN (20, 22, 55);
-- 1.9 查询所有姓马的学生
SELECT * FROM student3 WHERE NAME LIKE '马%';
SELECT * FROM student3 WHERE NAME LIKE '马_';
-- 1.10 查询名字里包含“德”字的学生
SELECT * FROM student3 WHERE NAME LIKE '%德%';
-- 1.11 查询英语成绩为空的学生信息
SELECT * FROM student3 WHERE english IS NULL;
SELECT * FROM student3 WHERE english IS NOT NULL;
2. 排序查询
-
语法:
order by 排序字段 排序规则, 排序字段 排序规则,...
-
ASC
:升序排列,默认的 -
DESC
:降序排列
-
-- 2. 排序查询
-- 2.1 查询所有学生的信息,按照年龄从小到大排序
SELECT * FROM student3 ORDER BY age ASC
SELECT * FROM student3 ORDER BY age DESC
-- 2.2 查询所有学生信息,年龄从小到大,如果年龄一样,就按数学成绩从高到低
SELECT * FROM student3 ORDER BY age ASC, math DESC
3. 聚合函数
-
批量数据的统计。常用的聚合函数有:
-
count()
:求数量 -
sum()
:求和 -
avg()
:求平均值 -
max()
:求最大值 -
min()
:求最小值
-
注意:聚合函数会忽略Null值
-- 3. 聚合函数
-- 3.1 查询student3表里的数量
SELECT COUNT(*) FROM student3;
-- 3.2 查询student3表里english的数量
SELECT COUNT(english) FROM student3;
-- 3.3 计算所有学生的年龄之和
SELECT SUM(age) FROM student3;
-- 3.4 计算所有学生的平均年龄 年龄总和/学生数量
SELECT SUM(age)/COUNT(*) FROM student3;
SELECT AVG(age) FROM student3;
-- 3.5 计算所有学生的英语成绩的平均值
SELECT SUM(english)/COUNT(*) FROM student3;
SELECT AVG(english) FROM student3;
-- 3.6 查询所有学生中,最大的年龄
SELECT MAX(age) FROM student3;
4. 分组查询
-
语法:
group by 分组字段 having 分组后过滤条件
注意:
分组查询中,select后边只能查:分组字段,聚合函数
如果有where条件,where条件先执行;分组后having再执行
-
where和having的区别:
-
where先执行(分组前);having后执行(分组后)
-
where对原始表过滤;having对分组后结果过滤
-
where的条件是字段;having的条件可以有聚合函数
-
-- 4. 分组查询
-- 4.1 查询男生和女生的数量
SELECT COUNT(*) FROM student3 WHERE sex = '男';
SELECT COUNT(*) FROM student3 WHERE sex = '女';
SELECT sex, COUNT(*) FROM student3 GROUP BY sex;
-- 4.2 查询男生和女生的平均年龄
SELECT sex, AVG(age) FROM student3 GROUP BY sex;
-- 4.3 25岁以上的人,分别统计男女的数量
SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex;
-- 4.4 查询25岁以上的人,分别统计男女的数量,只要人数大于2的那一组
SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex HAVING COUNT(*) > 2;
5. 分页查询
-
语法:
limit 起始索引, 查询数量
-- 5. 分页查询:
-- 5.1 查询第1页,假如每页3条。 起始索引:0, 查询几条:3
SELECT * FROM student3 LIMIT 0, 3;
-- 5.2 查询第2页,假如每页3条。 起始索引:3, 查询几条:3
SELECT * FROM student3 LIMIT 3, 3;
6. 综合查询
-- 6. 按照年龄从小到大排序,分页查询
SELECT * FROM student3 ORDER BY age ASC LIMIT 3, 3
-- 7. 查询男生数据,按照年龄从小到大排序,分页查询
SELECT * FROM student3 WHERE sex = '男' ORDER BY age ASC LIMIT 0, 3
-- 8. 查询湖南的学生数据,按照年龄从小到大排序,分页查询
SELECT * FROM student3 WHERE address = '湖南' ORDER BY age ASC LIMIT 0, 3
-- 9. 查询香港的学生数据,按性别分组统计年龄总和,按照年龄总和从大到小排序
SELECT sex,SUM(age) FROM student3 WHERE address = '香港' GROUP BY sex ORDER BY SUM(age) DESC
-- 10. 查询香港的学生数据,按性别分组统计年龄总和,按照年龄总和从大到小排序,分页显示每页1条
SELECT sex,SUM(age) FROM student3 WHERE address = '香港' GROUP BY sex ORDER BY SUM(age) DESC LIMIT 1, 1
-
了解备份和恢复:SQLyog
-
备份与恢复
-
1. dos命令备份与恢复
-
备份:执行dos命令
mysqldump -u用户名 -p密码 库名称 > E:\heima.sql
-
恢复:登录MySql后,执行SQL:
-
先创建库(如果库不存在的话),然后使用库
-
执行SQL:
source E:\heima.sql
-
2. SQLyog备份与恢复
-
备份:在库上鼠标右键-备份-转储到SQL
-
恢复:执行SQL脚本
-
-
-
了解约束:
-
主键约束
-
作用:一张表的唯一标识,非空唯一
-
语法:
字段名 类型 primary key auto_increment
-
-
唯一性约束
-
作用:限制字段值唯一不能重复(可以为null)
-
语法:
字段名 类型 unique
-
-
非空约束
-
作用:限制字段值不能为空
-
语法:
字段名 类型 not null
-
-
默认值约束
-
作用:不设置字段值,就取默认值
-
语法:
字段名 类型 default 默认值
-
-
外键约束
-
作用:限制字段值,必须从主表的主键取值
-
语法:
foreign key(外键字段) references 主表(主键)
-
-
标签:student3,age,基础,查询,mySQL,操作,sex,WHERE,SELECT 来源: https://www.cnblogs.com/penghuake/p/10847787.html