zoukankan      html  css  js  c++  java
  • 数据引擎 创建表完整语法,字段类型,约束条件

    数据引擎 创建表完整语法,字段类型,约束条件

    回顾:
        1、设置密码与修改密码
        mysqladmin -uroot -p password设置的密码
        mysqladmin -uroot -p原密码 password新密码
    
    
        2、破解密码
            - 1、先关掉服务,杀死进程
            - 2、跳过权限认证启动服务端
            - 3、以游客的身份登录即可
    
        3、制作服务
            - 1、mysql --install
            - 2、net start mysql
    
        4、语法:
            库的操作:
                增:
                    create database 库名;
                    create database 库名 charset='utf8';
    
                查:
                    show databases;
                    show create database 库名
    
                改:
                    alter database 库名 charset='gbk';
    
                删:
                    drop database 库名;
    
            表的操作:
                - 注意:操作表之前,需要先切换到指定的库中
                语法:use 库名
    
                增:
                    create table 表名(字段名 字段类型);
    
                查:
                    show tables;
                    desc 表名;
    
                改:
                    alter table 表名 modify 字段名 字段类型(16);
    
                删:
                    drop table 表名;
    
            记录的操作:
                create table user_info(id int, name char(16), age int);
    
    
                增:
                    insert into 表名 values(id字段值int, name字段值的字符串, age字段的值int);
                    insert into user_info values(1, 'yafeng', 18);
    
                查:
                    select * from 表名;
                    select * from user_info;
    
                    select name from user_info;
    
                    select * from 表名 where 条件;(条件成立,则返回条件成立的记录)
    
                    select * from user_info where id=3;
    
                改:
                    update 表名 set 修改的字段=字段值 where 条件判断;
                    update user_info set name='dsb' where id>1;
    
                删:
                    # delete 可回滚
                    delete from 表名; #清除表中所有记录
    
                    delete from user_info;
    
                    delete from 表名 条件判断; #删除条件成立的记录
    
                    delete from user_info where id>1;
    
                    #truncate : 不可回滚
    
    
    
    新知识:
        1、存储引擎
            - 存储引擎是根据不同的机制处理不同的数据
            - 查看mysql中所有的引擎
                - show engines;
    
            - myisam:5.5以前老版本使用的存储引擎
            - blackhole:数据进入就会消失
            - innodb: 默认使用存储引擎
                - 支持事务
                - 行锁
                - 外键
    
            - memory:通过数据存在,断电丢失
                create table t1(id int)engine=innodb;
                cerete table t2(id int)engine=myisam;
                cerete table t3(id int)engine=blackhole;
                cerete table t4(id int)engine=memory;
    
    
            =====*****可提前学习 Redis面试问的比较多*****=====
    
            - 插入数据验证引擎的作用:
                insert into t1 values(1);
                insert into t2 values(2);
                insert into t3 values(3);
                insert into t4 values(4);
    
    
        2、创建表完整的语法
            # 约束条件:可有可无
            # 宽度;限制某些数据类型的存储大小
            create table 表名(
                字段名1 字段类型(宽度) 约束条件,
                字段名2 字段类型(宽度) 约束条件
            );
    
            # 初始约束条件:not null
            create table teacher (
                id int not null,  #约束插入记录时ID不能为空
                name varchar(16),
                age int
            );
    
    
            insert into teacher values(1, 'yafeng', 18);
    
    
            注意:
                1、创建表的字段名不能重复
                create table test(
                    id int,
                    id int
                );
    
                2、最后一个字段不能在末尾加 , 号
                create table test(
                    id int,
                    age int,
                );
    
                3、字段名必须要有字段类型与宽度
                create table test(
                    id int,
                    name char
                );
    
    
    
        3、字段类型
            1)确定表结构
            2)字段与字段类型
    
            - 整型:
                - tinyint: 默认范围 -128, 127
                    create table t5(
                        id tinyint,
                        name varchar(16)
                    );
                    insert into t5 values(-128, 'yafeng'), (127, 'reba');
                    insert into t5 values(-129, 'tank');
                    insert into t5 values(128, 'jason');
                    insert into t5 values(12, 'sean');
    
                - int 默认范围是(-2147483648, 2147483647)
    
                    应用场景:id 号,年龄...
    
                    create table t6(
                        id int
                    );
    
                    # int 默认宽度11---->默认展示宽度
                    insert into t6 values(-2147483649);
                    insert into t6 values(2147483648);
                    insert into t6 values(100);
    
    
    
                    create table t7(
                        id int(3)
                    );
    
                    # 若插入超过设定宽度,则正常显示
                    insert into t7 values(123456);
    
                    # 若插入不足够4位,则以空格补全
                    insert into t7 values(1);
    
                - bigint
    
    
    
            - 浮点型
                应用场景:工资、身高、体重...
    
    
                - float
                - double
                - decimal
    
    
                # 范围255是最大长度(包括.小数), 30代表是小数的位数
                create table t8(x float(255, 30));
                create table t9(x double(255, 30));
                create table t10(x decimal(65, 30));
    
    
                # 插入数据
                # 三种浮点型:区别在于精度不一样
                insert into t8 values(1.23456789666666666);
                insert into t9 values(1.23456789666666666);
                insert into t10 values(1.23456789666666666);
    
    
            - 字符类型
                - char(16):定长字符
    
                    char :手机号、身份证号、银行卡号等...
                    - 插入16个字符:
    
                    create table t11(
                        id int,
                        name char(4)  #这里的4指的是四个字符
                    );
    
                    insert into t11 values(1, 'reba');
    
                    # utf8 中文3个bytes  gbk 中文2个bytes
                    insert into t11 values(2, '亚峰牛皮');
                    insert into t11 values(3, '亚峰真牛皮');
    
    
                    优点:
                        存取速度快
    
                    缺点:
                        浪费空间(字符长度不够的情况下,会以空格作为字符填入,会浪费内存占用资源)
    
                        比如:insert into t11 values(1, 't')   # 其实是t + 三个空格
    
    
    
                - varchar(16): 不定长字符
                    - 存几个字符:就是几个字符的大小,每个字符前都要+ 1个bytes(用来去记录后面存放的到底是几个字符)
    
                    优点:
                        节省空间
    
    
                    create table t12(id int, name varchar(4));
                    insert into t12 values(1, '亚峰牛皮');  # 1bytes + 亚峰牛皮
                    insert into t12 values(2, 'reba');   # 1bytes + reba
                    insert into t12 values(3, 'sean');   # 1bytes + sean
    
                    insert into t12 values(4, 't');   # 1bytes + t
    
    
    
            日期类型
                - data:2019-12-11
                - datatime:2019-12-11 16:16:16
                - time: 16:16:16
                - year: 2019
                - timestamp: 时间戳
    
    
                create table student(
                    id int,
                    name varchar(4),
                    birth date,
                    register datetime,
                    work_time year,
                    t_time time,
                    update_time timestamp
                );
    
    
    
                insert into student values(1, '张全蛋', '2019-11-11', '2019-11-11 11:11:11','2019', '11:11:11', null);
    
    
                注意:python插入时间数据时,的转成str类型
    
    
            - 枚举与集合
                - enum(enumerate): 可以 多选一
                    create table t13(
                        id int,
                        name varchar(6),
                        gender enum('male', 'female', 'others')
                    );
    
                    #insert into 表名(字段名) values(字段名对应的值);
                    insert into t13(id, name, gender) values(1, 'yafeng', 'male');
    
                    # 严格模式下,选择枚举以外的值会报错
                    insert into t13(id, name, gender) values(2, 'gd', '人yao');
    
                - set: 可 多选一 或 多选多
                    create table t14(
                        id int,
                        name varchar(6),
                        gender enum('male', 'female', 'others'),
                        hobbies set('read', 'sing', 'jump', 'rap', '会所嫩模')
                    );
    
                    # 多选一
                    insert into t14 values(1, 'tank', 'male', '会所嫩模');
    
                    # 多选多
                    insert into t14 values(2, 'yafeng', 'male', 'read,sing,jump,rap');  #注意:多选多中都在一个''下用,且逗号后不可有空格
    
                    # 注意:多选多的顺序可不一,因为它最后都会以一种排序方式排列
    
    
        4、约束条件
    
            - not null + unique:
                create table user1(
                    id int not null,
                    password varchar(6) default '000000',#varchar default 设置密码必须加引号, 如果是int 设置密码 则不需要加引号
                    name varchar(6)
                );
    
                insert into user1(id, name) values(null, 'tank');
                insert into user1(id, name) values(1, 'tank');
    
    
            - unique 将某个字段设置为唯一的值
                # not null + unique 相当于主键
                create table user2(
                    id int not null unique,
                    name varchar(4)
                );
    
                insert into user2(id, name) values(1, 'tank'), (2, 'sean');
    
    
            - primary key + auto_increment: 主键 + 自增
    
                - primary  key ---->  not null + unique
                    - pk就是标中的索引:可以通过索引快速查找某些数据
                        - 提高效率
    
                    # 将ID设为主键,非空且唯一
                    create table user3(
                        id int primary key,
                        name varchar(4)
                    );
    
                    insert into user3(id, name) values(1, 'tank');
                    insert into user3(id, name) values(2, 'tank');
    
    
                - auto_increment:
                    #将ID设置为自增
                    create table user4(
                        id int primary key auto_increment,
                        name varchar(4)
                    );
    
                    #自增默认从0开始
                    insert into user4(name) values('tank');
                    insert into user4(name) values('sean');
                    insert into user4(name) values('egon');
                    insert into user4(name) values('dada');
    
                    #若想自增从指定值开始,可插入第一条数据时先指定ID值;
                    insert into user4(id, name) values(10, 'tank');
                    insert into user4(name) values('sean');   #11
                    insert into user4(name) values('egon');   #12
                    insert into user4(name) values('dada');   #13
    
    
    
                - unsigned
                    - 无符号(值不可为负,只能大于等于0)
                        create table user5(
                            id int unsigned
                        );
    
                        insert into user5 values(-100);   #报错的写法
                        insert into user5 values(0);
                        insert into user5 values(100);
    
                    - 有符号
                        create table user6(
                            id int
                        );
    
                        insert into user6 values(-100);
    
    
                - zerofill
                    使用0填充空格
                    create table user7(
                        id int zerofill
                    );
    
    
                    insert into user7 values(100);
    
    
                - 删除记录
                    create table user8(
                        id int primary key auto_increment,
                        name varchar(4)
                    );
    
                    insert into user8(name) values('tank');
                    insert into user8(name) values('dada'), ('egon');
    
                    - delete
                        # 清空user8表中的所有记录
                        delete from user8;
    
                    - truncate:
                        # 清空user8表中的所有记录,并且ID重置为0
                        truncate table user8;
    
    
    
  • 相关阅读:
    Convert Sorted Array to Binary Search Tree数组变成高度平衡的二叉树
    695. Max Area of Island最大岛屿面积
    257. Binary Tree Paths返回所有深度优先的遍历
    112. Path Sum二叉树路径和
    对称二叉树 · symmetric binary tree
    100. Same Tree同样的树
    计数排序 (Counting Sort)
    基数排序 (Radix Sort)
    Linux 文件基本属性
    gensuitemodule (Mac OS) – Python 中文开发手册
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12024306.html
Copyright © 2011-2022 走看看