MySQL笔记


MySQL注释:(1)#开头 (2)--空格 开头  (3)/* 多行注释 */

操作数据库:

    显示数据库:show databases
    创建数据库:create database [ if not exists ] <数据库名>;
    删除数据库:drop database [ if not exists ] <数据库名>;
    查看当前使用的数据库:select database();
    退出:quit 或 exit
    查看服务器中的数据库,并把数据库的字符集修改为utf8:alter database <数据库名> character set utf8;

操作表:
    创建表:create table [ if not exists ] 表名(字段1 字段类型(长度)约束,.....)[ charset=utf8 ];

    常用约束:
        主键约束:primary key(保证数据唯一性),不能重复,不能为null
        唯一约束:unique [key] ,不能重复,可以为null
        非空约束:not null
        默认约束:default
        外键约束:foreign key     添加方式:constraint 外键名 foreign key(列名) references 表名2(列名2);
        自动增长:auto_increment
    
    删除表:drop table [ if not exists ] <表名>;
    查看表的字段信息:desc 表名;
    查看所有表:show tables;
    添加字段:alter table 表名 add 字段名 字段类型(长度)约束;
    修改字段:alter table 表名 modify 字段名 字段类型(长度)约束;
    修改字段名称:alter table 表名 change 字段名 字段类型(长度)约束;
    删除字段:alter table 表名 drop 字段名;
    修改表名:rename table 表名 to 新表名;
    查看表的创建细节:show create table 表名;
    修改表的字符集:alter table 表名 character set gbk;
    
    在MySQL中,字符串类型和日期类型都要用单引号括起来,空值:null

    1)插入操作:insert
        语法:insert into 表名(列名1,列名2 ...)values (列值1,列值2...);
        注意:列名和列值的类型、个数、顺序要一一对应
                  可以把列名当做java中的形参,把列值当做实参,参数不要超出列定义的长度

    如果不能添加中文数据:
            查看数据库编码的具体信息:show variables like ‘character%’;
            临时更改客户端和服务器结果集的编码:set character_set_client=gbk;
                                  set character_set_results=gbk;
                                  set NAMES ‘gbk’;

    2)修改操作:update
        语法:update 表名 set 列名1=列值1,列名2=列值2 ..... where 列名=值;

    3)删除操作:delete
        语法:delete from 表名 [ where 列名=值 ];
        
        删除表中所有记录:delete from 表名;

        使用 truncate 删除表中记录,(先把表删除,然后再创建空表)
            语法:truncate table 表名;

        delete 删除表中的数据,表结构还在,删除后的数据使用日志可以找回
        truncate 删除是把表直接 drop 掉,然后再创建一个同样的新表
        truncate 删除的数据不能找回,执行速度比 delete 快
    
    4)数据查询:select

        语句不会对数据进行改变,而是让数据库发送结果集给客户端,查询返回的结果集是一张虚拟表

        语法:select 列名 from 表名 [ where -- group by -- having -- order by -- limit ];
        
            group by 对结果进行分组  
            having 分组后的筛选条件 
            order by 对结果排序    asc 升序  desc  降序
            limit 结果限定    限定查询结果的起始行,以及总行数

            having与where 的区别:
                1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
                2.having后面可以使用分组函数(统计函数),where后边不可以
        
            查询语句执行顺序:from 表 where - group by - having - select - order by - limit
        
    5)模糊查询:关键字 like
    
          通配符:_  任意一个字符    % :任意0~n个字符    

        去除重复记录:distinct
            
        NULL转换成数值0的函数IFNULL:ifnull(列名,0);

    6)聚合函数

        count():统计指定列不为null的记录行数
        max():计算指定列最大值,如果列为字符串类型,那么使用字符串排序运算
        min():计算指定列最小值,如果列为字符串类型,那么使用字符串排序运算    
        sum():计算指定列数值和,如果列不是数值类型,结果为 0
        avg():计算指定列平均值,如果列不是数值类型,结果为 0        

多表查询:
    1,合并结果集
        union:去除重复记录  select * from t1 union select * from t2;
        union all:不去除重复记录  select * from t1 union all select * from t2;
    
        注意:被合并的两个结果:列数必须相同,列类型可以不同

    2,内连接

        select * from 表1,表2 where 表1.字段1 = 表2.字段2;
    
        标准的内连接:
            select * from 表1 inner join 表2 on 表1.字段=表2.字段;    on后面是主外键关系

    3、外连接
        包括左连接和右连接,外连接的特点:查询出的结果存在不满足条件的可能
    
        左连接:以左表为主表,右表为从表
            select * from 表1 left outer join 表2 on 表1.字段=表2.字段;

        左连接是先查询出左表,然后查询右表,左表中满足和不满足条件都显示出来,右表不满足条件的显示null

        右连接:
            先把右表中所有记录查询出来,然后左表满足条件的显示,不满足显示null

    连接查询总结:
        连接不限于两张表,连接查询也可以是三张、四张,甚至N张表的连接查询,通常连接查询不可能需要整个笛卡尔    积,而只是需要其中一部分,那么这时就需要使用条件来去除不需要的记录,这个条件大多数情况下都是使用主外键关系去除

子查询:
    一个select语句中包含另一个完整的select语句

    子查询出现的位置:
        where后,作为被查询的条件的一部分
        from后,作临时表

    子查询出现在where后作为条件时,还可以使用 any  all  关键字
    
    查询条件:工资高于30部门所有人工资,其中30部门所有人工资是子查询。高于所有需要使用all关键字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值