美文网首页
MySQL学习笔记

MySQL学习笔记

作者: 又差一点 | 来源:发表于2020-07-08 09:58 被阅读0次

    MySQL学习笔记

    一、SQL语句
    • DDL(数据定义语言):定义数据库,数据表的结构:create(创建)、drop(删除)、alter(修改)
    • DML(数据操纵语言):主要是用来操作数据:insert(插入)、update(修改)、delete(删除 )
    • DCL(数据控制语言):定义访问权限、取消访问权限、安全设置 grant
    • DQL(数据查询语言):select(查询)from子句 where子句
    二、数据库的CRUD操作
    创建数据库
    create database 数据库的名字
    --创建数据库的时候指定字符集
    create database 数据库的名字 character set 字符集
    create database 数据库的名字 character set 字符集 collate 校对规则; 
    
    查看数据库
    --查看数据库定义的语句
    show create database 数据库的名字;
    
    --查看所有数据库
    show databases;
    
    修改数据库的操作
    --修改数据库的字符集
    alter database 数据库的名字 character set 字符集
    
    删除数据库
    drop database 数据库名字
    
    其他数据库操作命令
    --切换数据库(选中数据库)
    use 数据库
    --查看当前正在使用的数据库
    
    三、表的CRUD操作
    创建表
    create table 表名(
        列名 列的类型(长度) 约束,
        列名2 列的类型(长度) 约束,
    );
    
    列的类型
    java            sql
    int             int
    char/String     char/varchar
                    char:固定长度
                    varchar:可变长度
    double          double
    float           float
    boolean         boolean
    date            date:YYYY-MM-DD
                    time:hh:mm:ss
                    datetime:YYYY-MM-DD hh:mm:ss  默认值是null
                    timestamp:YYYY-MM-DD hh:mm:ss 默认使用当前时间
                    text:主要是用来存放文本你
                    blob:存放的是二进制
    
    列的约束:
        主键约束:primary key
        唯一约束:unique
        非空约束:not null
            自动增加:auto_increment
    
    查看表
    --查看所有表
    show tables;
    --查看表的创建过程
    show create table 表名;
    --查看表结构
    desc 表名;
    
    修改表(alter)

    添加列(add)修改列(modify)修改列名(change)删除列(drop)修改表名(rename)修改表的字符集

    --添加列(add)
    alter table 表名 add 列名 列的类型(长度) 列的约束;
    --修改列
    alter table 表名 modify 列名 列的类型(长度) 列的约束;
    --修改列名
    alter table 表名 change column 列名 修改的列名;
    --删除列
    alter table 表名 drop 列名
    --修改表名
    rename table 原表名 to 新表名
    --修改字符集
    alter table 表名 character set 字符集;
    
    删除表
    drop table 表名;
    
    
    SQL完成对表中数据的CRUD操作
    插入数据
    insert into 表名(列名....) values(值.....)
    --如果插入是全列名的数据,表名后面的列名可以省略
    --如果是插入部份列的话,列名不可省略 
    
    
    
    命令行下中文我问题:insert into student values(11,"李四",1,24)
    • 临时解决方案:set names gbk;相当于是告诉mysql服务器软件,我们当前在命令行下输入的内容是gbk编码,当命令窗口关闭之后,它再输入中文就会存在问题
    • 永久解决办法:修改my.ini配置(在mysql软件安装路径里)
      • 暂停mysql的服务
      • 在mysql安装路径中找到my.ini配置文件
      • 将57行编码改成gbk
      • 保存文件退出
      • 启动mysql服务
    删除记录
    delete from 表名 [where 条件];
    --如果没有指定条件,会将表中数据一条一条全部删除
    
    --面试题:请问delete删除数据和truncate删除数据有什么差别
    delete:DML语句 一条一条删除表中的数据
    truncate:DDL语句 先删除表在重建表
    关于哪条执行效率高:具体要看表中的数据量
        如果数据量比较少,delete效率比较高
        如果数据量比较多,truncate效率比较高
    
    
    更新表记录
    update 表名 set 列名=列的值,列名2=列的值2 [where 条件]
    
    
    查询记录
    select [distinct]{ * } [列名...] from 表名 [where 条件]
    distinct:去除重复的数据
    --别名查询 as的关键字,as关键字是可以省略
        --表别名:select p.name,p,price from product as p;(主要是用在多表查询);
        --列别名:select pname as 商品名称,price as 商品加个 from product;
        
    --去掉重复的值
        --查询商品所有的价格
        select price from product;
        select distinct price from product;
    
    --select运算查询:仅仅在查询结果上做了运算+-*/
        select *,price*1.5 from product;
        select *,price*1.5 as discount from product;
    
    --条件查询[where关键字]
        指定条件,确定要操作的记录
        --关系运算符: > >= < <= = != <>
        <>:不等于:标准SQL语法
        !=:不等于:非标准SQL语法
        
        --沙逊商品价格在10到100之间
        select * from product where price>10 and price<100;
        select * from product where between 10 and 100;
        
        --逻辑运算符:and,or,not
        
        --模糊查询 like
            _:代表的是一个字符
            %:代表的是多个字符
            
        --in在某个范围中获得值
        
    --排序查询:order by 关键字
        asc:ascend 升序
        desc:descend 降序
    
    --聚合函数:
        sum():求和
        avg():求平均值
        count():统计数量
        max():最大值
        min():最小值
        --where后面不能使用聚合函数 可以使用子查询实现
    
    --分组:group by
        --having关键字可以接聚合函数,出现在分组之后
        
    --编写顺序
        -- S..F..W..G..H..O
        select .. from .. where .. group by .. having .. order by
    
    --执行顺序
        F..W..G..H..S..O
        from .. where .. group by .. having .. select .. order by
    
    

    相关文章

      网友评论

          本文标题:MySQL学习笔记

          本文链接:https://www.haomeiwen.com/subject/kmeqcktx.html