1. Mysql 数据库

1. Mysql 数据库

1. Mysql的基本知识

1.1 什么是数据库:

  • 存储管理数据的仓库,本质是一个文件系统,将数据已文件的形式保存到电脑中。

1.2 数据库的优缺点

  • 优点:速度快(内存)、数据可永久保存(文件)、使用统一的方式操作(SQL)
  • 缺点:数据是临时状态、使用IO流操作不方便、占用资源与付费。

2. SQL(重点)

2.1 SQL的概念

(1)什么是SQL?

  • 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,管理关系数据库系统

(2)SQL的作用

  • 是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL

2.2 SQL的通用语法

  • SQL可以单行、多行书写,以分号结尾
  • Mysql使用SQL不区分大小写,一般的:关键字大写,数据库名、表名列名、小写。
  • 三种注释方式:-- 空格、/**/、#(mysql特有)
-- 查询所有的数据库列表
SHOW DATABASES;/*
我是多行注释*/# 我是Mysql特有的注释

2.3 SQL的分类

分类 说明
数据定义语言 DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。
数据操作语言 DML(Data Manipulation Language),用来对数据库中表的记录进行更新。
数据查询语言 DQL(Data Query Language),用来查询数据库中表的记录。
数据控制语言 DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。(了解)

1. Mysql 数据库

2.4 DDL操作

1. 创建数据库

命令 说明
create database 数据库名; 创建指定名称的数据库。
create database 数据库名 character set 字符集; 创建指定名称的数据库,并且指定字符集(一般都指定utf-8)
/*
	两种创建数据库的方式
*/
CREATE DATABASE da1;-- 默认编码为latin1格式
CREATE DATABASE db1 CHARSET utf8-- 指定字符集

2. 查询数据库

命令 说明
use 数据库 切换数据库
select database(); 查看当前正在使用的数据库
show databases; 查看Mysql中 都有哪些数据库
show create database 数据库名; 查看一个数据库的定义信息
/*
	查看数据库
*/
USE da1;-- 切换数据库
USE db1;
SELECT DATABASE();-- 查询当前使用的数据库
SHOW DATABASES;-- 查看当前mysql中都有哪些数据库
SHOW CREATE DATABASE db1;-- 查看一个数据库的定义信息
  • Mysql四种自带的数据库

1. Mysql 数据库

3. 修改与删除数据库

  • 修改数据库的字符集
命令 说明
alter database 数据库名 character set 字符集; 数据库的字符集修改操作
drop database 数据库名 从MySql中永久的删除某个数据库
ALTER DATABASE da1 CHARACTER SET utf8;
DROP DATABASE da1;-- 慎用!

DDL操作 数据表

Mysql常见的数据类型

类型 描述
int 整型
double 浮点型
varchar 字符串型
date 日期类型,格式为 yyyy-MM-dd ,只有年月日,没有时分秒
  • Mysql中的char类型是固定长度,根据定义的长度分配空间;而varchar类型是可变长度

1. 创建表

  • 语法格式:
CREATE TABLE 表名(
	字段名称 字段类型(长度),
    字段名称 字段类型 --最后一列不用, 
);
-- 代码示例:
CREATE  TABLE table1(
NAME CHAR(10),
age INT,
ALTER TABLE table1 ADD TIME DATE
);
-- 创建一个和table1相同的表(结构,内容并未拷贝)
CREATE TABLE table2 LIKE table1;

2. 查看表

命令 说明
show tables; 查看当前数据库中的所有表名
desc 表名; 查看数据表的结构
SHOW TABLES;
DESC table1;
SHOW CREATE TABLE table2;

3. 删除表(结构 drop)

命令 说明
drop table 表名; 删除表(从数据库中永久删除某一张表)
drop table if exists 表名; 判断表是否存在, 存在的话就删除,不存在就不执行删除
DROP  TABLE IF EXISTS table2;

4. 修改表

/*
	修改表的名称
	修改表的字符集
	修改列(数据类型、长度、名称)
	向表中添加、删除列
*/
-- 改名
 RENAME TABLE table1 TO newtable;
-- 修改字符集
ALTER TABLE newtable CHARACTER SET gbk;
-- 修改表中字段的长度
ALTER TABLE newtable MODIFY NAME VARCHAR(20);
-- 修改列的名称
ALTER TABLE newtable CHANGE NAME newname VARCHAR(20);
-- 添加字段
ALTER TABLE newtable ADD sex CHAR;
-- 删除字段
ALTER TABLE newtable DROP sexx;

2.5 DML操作表中数据(30%)

  • 使用DML对表中进行增、删、改操作

1. 添加操作

  • 语法格式:insert into 表名(字段名1,字段名2)values(字段值1,字段值2);
-- 方式1:
INSERT INTO table1(name1,age)VALUES("张三",11);
-- 方式2:不写字段名,直接写数据:
INSERT INTO table1 VALUES("李四",12);
-- 方式3:插入指定字段:
INSERT INTO table1 (name1)VALUES("李四");

2. 更改数据

  • 语法格式:updata 表名 set 字段名 =字段值 where 字段名=值;
UPDATE table1 SET name1='张张张';
UPDATE table1 SET name1='王' /*可用,修改多个字段*/WHERE age=11;
-- 空字段:
UPDATE table1 SET name1='李李李' WHERE age IS NULL;

3. 删除数据

  • 语法格式:delete from 表名[where];
DELETE FROM table1 WHERE age IS NULL;
  • 删除整张表的所有数据,推荐用:truncate 表名(删除整张表,再创一个一样的表),而不是一个个删除。

2.6 DQL查询(70%)

  • 语法格式:select 列名 from 表名;

1.简单查询

#DQL简单查询
SELECT * FROM table1;
SELECT name1 FROM table1;
-- 别名查询(AS) as可省略
SELECT name1 AS '姓名' FROM table1;
SELECT name1  '姓名' FROM table1;
-- 去重操作(distinct)
SELECT DISTINCT name1  FROM table1;
-- 实现将查询的值再次操作
SELECT name1,age+100 AS age FROM table1;

2. 条件查询

运算符 说明
> < <= >= = <> != 大于、小于、大于(小于)等于、不等于
BETWEEN …AND… 区间之间
IN(集合) 集合表示多个值,使用逗号分隔
LIKE ‘%张%’ 模糊查询
IS NULL 查询某一列为NULL的值, 注: 不能写 = NULL
% 表示匹配任意多个字符串,
_ 表示匹配 一个字符

3. 排序(order by)

  • 语法结构:select 自动名 from 表名 [where] order by 字段名称 [asc/desc]
-- 单列排序
SELECT * FROM table1 ORDER BY age;
SELECT * FROM table1 ORDER BY age DESC;
-- 组合排序,如果第一个字段相同,按第二个字段排
SELECT * FROM table1 ORDER BY name1,age DESC;

4. 聚合函数

  • 聚合函数:将一列数据作为一个整体,进行纵向的计算
  • 语法结构:select 聚合函数(字段名) from 表名;
聚合函数 作用
count(字段) 统计指定列不为NULL的记录行数
sum(字段) 计算指定列的数值和
max(字段) 计算指定列的最大值
min(字段) 计算指定列的最小值
avg(字段) 计算指定列的平均值
/*
	聚合函数:将一列数据作为一个整体,进行纵向的计算
*/
SELECT COUNT(*) FROM table1;-- 忽略Null字段
SELECT SUM(age) FROM table1;
SELECT AVG(age) AS '王的平均年龄' FROM table1 WHERE name1='王';

5. 分组查询(group by)

  • 语法格式:
select 字段名,聚合函数 from 表名 group by 分组字段[having 条件];
  • 分组的目的为了做统计操作,所以分组会和聚合函数一起使用。查询的时候查询分组字段。下面语句没意义:(返回的是每组的第一条数据。)
select * from table1 group by sex;
  • 分组之后再次过滤使用:having关键字
  • where与having的区别:
过滤方式 特点
where where 进行分组前的过滤;where 后面不能写 聚合函数
having having 是分组后的过滤; having 后面可以写 聚合函数
-- 查询所有名称
SELECT name1 AS '名称个数' FROM table1 GROUP BY name1;
-- 查询每个名称的平均年龄
SELECT name1 AS '名称',AVG(age) AS '平均年龄' FROM table1 GROUP BY name1;
-- 查询平均年龄>50的名称
SELECT name1 AS '名称',AVG(age) AS '平均年龄' FROM table1 GROUP BY name1 HAVING AVG(age) >50;

6. Limit关键字

  • 分页查询,限制查询返回的行数。语法格式:
select 字段名 from 表名 limit offset,length;
  • offset:起始行数,默认从0开始;length:返回行数;

  • -- 查看前5条数据
    select * from table1 limit 5;
    -- 分页查询,每页显示5条数据:
    select * from table limit 0,5;
    select * from table limit 5,5;
    select * from table limi 10,5;
    -- 起始行数=(当前页-1)*每页行数
    

查询,限制查询返回的行数。语法格式:

select 字段名 from 表名 limit offset,length;
  • offset:起始行数,默认从0开始;length:返回行数;

  • -- 查看前5条数据
    select * from table1 limit 5;
    -- 分页查询,每页显示5条数据:
    select * from table limit 0,5;
    select * from table limit 5,5;
    select * from table limi 10,5;
    -- 起始行数=(当前页-1)*每页行数
    
上一篇:Git如何有多个remote Url


下一篇:Python—入门Python一路通畅