mySQL 基础操作

  1. 了解SQL的分类:

    • DDL:数据定义语言。定义database、table等等

    • DML:数据操作语言。数据的增、删、改

    • DQL:数据查询语言。查询数据

    • DCL:数据控制语言。DBA使用的,管理MySql的用户、权限等等

    • TCL:事务管理语言。进行事务管理的

  2. DDL:操作database

    • 创建database create database 数据库名称

    • 查看database show databases; show create database 数据库名称

    • 删除database drop database 数据库名称

    • 使用database use 数据库名称 select database()

  3. DDL:操作table

    1. 创建table create table 表名(字段名1 类型, 字段名2 类型,...)

    2. 查看table show tablesdesc 表名称show create table 表名称

    3. 删除table drop table 表名

    4. 修改table

      1. 添加字段:alter table 表名 add 字段名 类型

      2. 修改字段名:alter table 表名 change 原字段名 新字段名 类型

      3. 修改字段类型:alter table 表名 modify 字段名 新类型

      4. 删除字段:alter table 表名 drop 字段名

      5. 重命名表:rename table 表名 to 新表名

  4. DML:

    1. 添加数据:insert into 表名(字段1, 字段2, ...) values (值1, 值2, ...)

    2. 修改数据:update 表名 set 字段1=值1, 字段2=值2,... where 条件

    3. 删除数据:delete from 表名 where 条件

  5. DQL:

    1. 查询所有 select * from 表名

    2. 查询指定字段 select 字段1, 字段2, .. from 表名

    3. 查询处理null值 select ifnull(字段,默认值) from 表名

    4. 查询并运算 select 字段1+100, 字段2-字段1, ... from 表名

    5. 查询起别名 select 字段1 as 别名1, 字段2 别名2 from 表

    6. 去重查询 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 分组后过滤条件

注意:

  1. 分组查询中,select后边只能查:分组字段,聚合函数

  2. 如果有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
  1. 了解备份和恢复:SQLyog

    1.   备份与恢复

    2. 1. dos命令备份与恢复

      • 备份:执行dos命令mysqldump -u用户名 -p密码 库名称 > E:\heima.sql

      • 恢复:登录MySql后,执行SQL:

        • 先创建库(如果库不存在的话),然后使用库

        • 执行SQL:source E:\heima.sql

      2. SQLyog备份与恢复

      • 备份:在库上鼠标右键-备份-转储到SQL

      • 恢复:执行SQL脚本

  2. 了解约束:

    1. 主键约束

      1. 作用:一张表的唯一标识,非空唯一

      2. 语法:字段名 类型 primary key auto_increment

    2. 唯一性约束

      1. 作用:限制字段值唯一不能重复(可以为null)

      2. 语法:字段名 类型 unique

    3. 非空约束

      1. 作用:限制字段值不能为空

      2. 语法:字段名 类型 not null

    4. 默认值约束

      1. 作用:不设置字段值,就取默认值

      2. 语法:字段名 类型 default 默认值

    5. 外键约束

      1. 作用:限制字段值,必须从主表的主键取值

      2. 语法:foreign key(外键字段) references 主表(主键)

posted @ 2019-05-11 09:52  HankPeng  阅读(143)  评论(0编辑  收藏  举报