本文mysql中,数据库CURD,表CURD以及单表操作相关内容。多表操作,之后再补

1. 数据库基本概念
    数据库:DataBase 简称:DB, 是用于存储数据的仓库
    特点:
        1. 持久化存储数据, 其实数据库就是一个文件系统
        2. 方便存储和管理数据
        3. 使用了统一的方式来操作数据

    常见的数据库软件:
        Oracle
        MySQL
        SQL_Server
        DB2
        ...

2. MySQL数据库软件
    1. 安装
    2. 卸载
    3. 配置
        MySQL服务:开启 net start/stop mysql

3. SQL学习

4. mysql 登录和退出
    1. mysql -uroot -ppassword
       a mysql -h[ip] -uroot -ppassword
    2. 退出 exit

5. SQL:结构化查询语言
        定义了操作关系型数据库的语句可以单行或者多行书写,一规则
    通用语法
    1. SQL可以单行或多行书写,以分号结尾
    2. mys查询语言ql SQL语句不区分大小写, 但是关键字建议大写
    3. 注释: -- 注释内容,# 注释内容
       多行注释:/**/

5.1 SQL分类
    DDL:数据库定义语言 CRUD
        操作数据库,表
        DDL:操作数据库
        Create:创建
            创建数据库:
                create database [数据库名字];
                create database if not exists [数据库名字]; 如果数据库不存在则创建
                create database db3 character set gbk; 创建数据库并且设置编码格式
                create database if not exists db3 character set gbk; 上面两条连一起
        Retrieve:查询
            查询所有数据库名称
                    show databases;
                show create database 数据库名称:查询某个数据库的创建语句
        Update:修改
            修改数据库的字符集
                alter database [数据库名称] character set 字符集名称;

        Delete:删除
            删除数据库
                drop database [数据库名称];
                create database if exists [数据库名字]; 如果存在才删除

        使用数据库
            查询正在使用的数据库
            select database();
            使用数据库
            use database();
        
                
                
            操作表:
                Create:创建
                    创建表:
                    1. 语法:
                        create table 表名(
                            列名1 数据类型1,
                            列名2 数据类型2,
                            列名3 数据类型3,
                            ...
                            列名n 数据类型n
                        );
                        最后一列,一定不要逗号;
                        数据库的数据类型
                        1. int: 整数类型
                        2. double: 小数类型
                            * score double(5, 2), -- 一共五位,小数点后两位
                        3. date:只包含年月日,yyyy-mm-dd
                        4. datetime:日期包含年月日时分秒
                            yyyy-mm-dd HH:mm:SS
                        5. timestamp:时间戳类型,不给它赋值或者赋一个空值,
                            则默认使用当前的系统时间
                        6. varchar:字符串
                            * name varchar(20); 最大二十个字符
                    2. 复制表:
                        create table [目标表] like [母表];
                Retrievve:查询
                    show tables;
                    查询表结构
                    desc 表名;
                Update:修改
                    1. 修改表名
                        alter table [表名] rename to 新的表名;
                    2. 修改表的字符集
                        查看字符集:
                            show create table [表名];
                        修改字符集:
                            alter table [表名] character set [目标字符集]
                    3. 添加一列
                        alter table [表名] add [列名] [数据类型];
                    4. 修改列名称 类型
                        alter table [表名] change [被修改列] [修改后列名][数据类型];
                        alter table [表名] modify [被修改列] 类型; -- 这个只改类型
                    5. 删除列
                        alter table [表名] drop [列名];
                Delete:删除
                    删除表:drop table [表名];
                            drop table if exists [表名];

    DML:数据库操作语言
        增删改表数据
        添加数据:
            语法:insert into [表名](列名1, 列名2, ,,, 列名n) values(值1, 值2, ,,, 值n);
            注意:1. 列名和值得一一对应
                  2. 列名不写,就是给所有项添加
                  3. 除了数字,其他的都需要引起来
        删除数据:
            delete from [表名] [where 条件];
            不写条件 删除表中的所有数据
            TRUNCATE TABLE [表名];
            将表删除,重新创建新的表--》推荐
        修改数据
            update 表名 set 列名1 = 值1, 列名2 = 值2 ,,, 列名n = 值n [where 条件];
            注意:不加条件那就全改了
    DQL:数据库查询语言
        查询表中数据
        1. 全 select * from [表名];
        2. select
                字段列表
            from
                表名
            where
                条件列表
            group by
                分组字段
            having
                分组之后的条件
            order by
                排序
            limit
                分页限定
        基础查询:
            1. 多字段查询
                select [列名1, 列名2, ,,, 列名n] from [表名];
            2. 去除重复
                select distinct [列名1, 列名2, ,,, 列名n] from [表名];
            3. 计算列
                select [列名1, 列名2, ,,, 列名n] [列名1 + 列名2 + , ,,, 列名n] from [表名]; -- 求和为例子
                注意:null 参与的计算结果都为 null
                select [列名1, 列名2, ,,, 列名n] [列名1 + IFNULL(列名2, 0) + , ,,, 列名n] from [表名]; -- 求和为例子
                这里使用了IFNULL 如果为NULL则使用0参与运算
                select [列名1, 列名2, ,,, 列名n] [列名1 + IFNULL(列名2, 0) + , ,,, 列名n] AS [别名] from [表名]; -- 求和为例子
            4. 起别名
        条件查询
            1. where 子句后跟条件
            2. 运算符
                * >, <, <=, >=, =(不是 ==), <>(不等于 != 也可以)
                * BETWEEN ... AND
                    SELECT * FROM stu WHERE age BETWEEN 20 and 30;
                * IN(集合)
                    SELECT * FROM stu WHERE age = 20 or age = 30;
                    这两句是一样的
                    SELECT * FROM stu WHERE age IN (20, 30);
                * LIKE'张%' 模糊查询
                    占位符:
                        _:单个任意字符
                        %:任意多个字符
                        SELECT * FROM stu WHERE name LIKE '马%';
                * IS NULL  查询某一列为空不可以用=NULL
                    SELECT * FROM stu WHERE name IS NULL;
                    SELECT * FROM stu WHERE name IS NOT NULL;
                * and/&&, or 或 ||, not 或 !
            3. 查询语句
                1. 排序查询
                    语法: order by 子句
                    order by 排序字段1 排序方式1, 排序字段2 排序方式2 ...
                    注意:排序方式 ASC:升序, 默认。
                                DESC降序
                          地儿排序条件只有第一个条件一样的时候才会去使用
                2. 聚合函数
                    将一列数据作为一个整体,进行纵向的计算
                    1. count:计算个数
                        SELECT COUNT(列名) FROM [表名];
                        SELECT COUNT(*) FROM [表名]; -- 只要有非空的项就算一列
                    2. max:计算最大值
                    3. min:计算最小值
                    4. sum:计算和
                    5. avg:计算平均值
                    注意:聚合函数的运算,会排除NULL
                        解决:选择不包含非空的列
                              使用IFNULL()
                3. 分组查询
                    语法: group by 分组字段;
                    注意:分组之后查询的字段:分组字段/聚合函数
                    例如:
                    SELECT sex, AVG(math) FROM student3 GROUP BY sex;
                    SELECT sex, AVG(math), COUNT(id), MAX(math) FROM  student3 WHERE math > 70 GROUP BY sex;
                    加了个条件 --》 大于70分的参与分组
                    SELECT sex, AVG(math), COUNT(id), MAX(math) FROM  student3 WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
                    HAVING COUNT(id) > 2:只看数量大于2的分组的数据
                    总结 where: 在分组之前进行限定,如果不满足条件,则不参与分组,
                    where 后不可以跟聚合函数
                    Having在分组之后限定,不满足条件,则不显示查询结果。

                4. 分页查询
                    语法:limit 开始的索引, 每页查询的条数;
                    SELECT * FROM student3 LIMIT 0, 3;
                    SELECT * FROM student3 LIMIT 3, 3;
                    开始的索引 = (当前的页码 - 1) * 每页的条数
                    注意:limit操作是一个mysql"方言"

posted on 2020-03-15 17:04  百晓灵狐  阅读(182)  评论(0)    收藏  举报