zoukankan      html  css  js  c++  java
  • MySQL基本sql语句,存储引擎,创建表的语法,严格模式

    基本sql语句

    '''
        ps:大部分程序的业务逻辑其实都是增删改查
        针对库的增删改查(文件夹)
            增:
                create database db1;
                create database db2 charset='gbk';
            查:
                show databases; # 查所有库
                show create database db1; # 查单个库(可以看到库的编码)
            改:
                alter database db2 charset='utf8'; #修改db2库的编码格式
            删:
                drop database db2;
        针对表的增删改查(文件)
            注意:在操作表(文件)的时候,需要指定所在的库(文件夹)
                # 查看当前所在的库的名字(NULL表示不在任何一个库下)
                    select database();
                # 切换库
                    use db1;
            增:
                create table t1(id int,name char(10)); # 也可以用绝对路径的形式操作不同的库 create table db1.t2(id int,name char(10));
            查:
                show tables; # 查看当前库下面所有的表名
                show create table t1; # 查单个表(可以看到表中每个字段的类型)
                describe t1;  # 支持简写(查单个表的信息比上面的展示信息可直观) desc t1;
            改:
                alter table t1 modify name char(16);
            删:
                drop table t1;
        针对数据的增删改查(一行行数据)
            一定要先有库,有表,最后才能操作数据
            增:
                insert into t1 values(1,'jason'); # 单条数据
                insert into t1 values(1,'jason'),(2,'mike'),(3,'jack'); # 多条数据
            查:
                select * from t1; # 该命令当数据量特别大的时候不建议使用
                select name from t1;
            改:
                update t1 set name='DSB' where id>1;
            删:
                delete from t1 where id>1;
            将表所有的数据清空:
                delete from t1;
    '''

    存储引擎

    '''
        日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(txt,pdf,word,mp4...)
        针对不同的数据应该有对应的不同的处理机制来存储
        存储引擎就是不同的处理机制
        MySQL主要存储引擎
            innodb
                是mysql5.5版本及之后默认的存储引擎
                支持事务 行锁 外键 存储数据更加的安全
                创建表会生成两个文件
                    表结构文件
                    表数据文件
            myisam
                是mysql5.5版本之前默认的存储引擎
                速度要比innodb更快,但是我们更加注重的是数据的安全
                创建表会生成三个文件
                    表结构文件
                    表数据文件
                    表索引文件
            memory
                内存引擎(数据全部存放在内存中),断电数据丢失
                创建表会生成一个文件
                    表结构文件
            blackhole
                无论存什么,都立刻消失(黑洞)
                创建表会生成一个文件
                    表结构文件
        # 查看所有的存储引擎
            show engines;
        # 不同的存储引擎在存储表的时候有什么异同点
            create table t1(id int) engine=innodb;
            create table t2(id int) engine=myisam;
            create table t3(id int) engine=blackhole;
            create table t4(id int) engine=memory;
          # 存数据
              insert into t1 values(1);
              insert into t2 values(1);
              insert into t3 values(1);
              insert into t4 values(1); # 存储与mysql服务端内存里,重新启动mysql服务,数据就没有了
    '''

    创建表的语法

    '''
        # 语法
            create table 表名(
                字段名1 类型(宽度) 约束条件,
                字段名2 类型(宽度) 约束条件,
                字段名3 类型(宽度) 约束条件
            );
        # 注意:
            1 在同一张表中字段名不能重复
            2 宽度和约束条件是可选的(可写可不写),而字段名和字段类型是必须的
                约束条件写的话,支持写多个
                字段名1 类型(宽度) 约束条件1 约束条件2...,
                create table t5(id); 报错,缺少类型
            3 最后一行不能有逗号
                create table t6(
                    in int,
                    name char,
                ); 报错
        补充:
            # 宽度
                一般情况下指的是对存储数据的限制
                create table t7(name char); 默认宽度是1
                insert into t7 values('mike');
                insert into t7 values(null); 关键字null
                    针对不同的版本会出现不同的效果
                        5.6版本默认没有开启严格模式,规定只能存一个字符,你给了多个字符,那么会自动帮你截取
                        5.7版本及以上或者开启了严格模式,那么规定只能存几个就不能超,一旦超过范围立刻报错
        严格模式到底开不开呢?
            mysql5.7之后的版本默认都是开启严格模式的
            使用数据库的准则:
                能尽量少的让数据库干活就尽量少,不要给数据库增加额外的压力
        约束条件之not null(不能插入null)
            create table t8(id int,name char not null);
            insert into t8 values(1,null); 报错
        宽度和约束条件到底是什么关系?
            宽度是用来限制数据的存储
            约束条件是在宽度的基础之上增加的额外的约束
    '''

    严格模式

    '''
        如何查看严格模式?
            show variables like '%mode';
            variable_name:sql_mode;value:no_engine_substitution
                模糊匹配/查询
                    关键字:like
                            %:匹配任意多个字符
                            _:匹配任意单个字符
        修改严格模式
            set session 只在当前窗口有效,相当于临时修改,一旦退出就不行了
            set global  全局有效
            
            set global sql_mode='strict_trans_tables'; 设置完后重新进mysql就可以了
        create table t14(name char);
        desc t14;
        insert into t14('jason'); 报错
        insert into t14('j');
        select * from t14;
    '''
    while True: print('studying...')
  • 相关阅读:
    javascript内存泄漏
    闭包
    JavaScript 数组(Array)对象
    什么是跨域?跨域请求资源的方法有哪些?
    理解闭包
    比较typeof与instanceof
    js 字符串操作函数
    js去除字符串空格
    Thematic002.字符串专题
    Thematic001.数论专题
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15113217.html
Copyright © 2011-2022 走看看