zoukankan      html  css  js  c++  java
  • mysql3

    一数据类型
    二约束条件
    一数据类型:
    1 数字(默认都是有符号,宽度指的是显示宽度,与存储无关(只是int))
    tinyint int bigint:个数,年龄,id,qq号,手机号
    float:价格,身高,体重,余额
      tinyint[(m)] [unsigned] [zerofill]#括号内的是可以选择的
    
                小整数,数据类型用于保存一些范围的整数数值范围:
                有符号:
                    -128 ~ 127
                无符号:
                    0 ~ 255
    
                PS: MySQL中无布尔值,使用tinyint(1)构造。
    
         int[(m)][unsigned][zerofill]
    
                整数,数据类型用于保存一些范围的整数数值范围:
                有符号:
                        -2147483648 ~ 2147483647
                无符号:
                        0 ~ 4294967295
    
        bigint[(m)][unsigned][zerofill]
                大整数,数据类型用于保存一些范围的整数数值范围:
                有符号:
                        -9223372036854775808 ~ 9223372036854775807
                无符号:
                        0  ~  18446744073709551615
    验证:如果超过范围就会插入不了

    float类型:
    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
                单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
                    有符号:
                        -3.402823466E+38 to -1.175494351E-38,
                        0
                        1.175494351E-38 to 3.402823466E+38
                    无符号:
                        0
                        1.175494351E-38 to 3.402823466E+38
    
                **** 数值越大,越不准确 ****
    
     DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
                双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
    
                    有符号:
                        -1.7976931348623157E+308 to -2.2250738585072014E-308
                        0
                        2.2250738585072014E-308 to 1.7976931348623157E+308
                    无符号:
                        0
                        2.2250738585072014E-308 to 1.7976931348623157E+308
                **** 数值越大,越不准确 ****
    验证:注:小数位可以多给但我只保留规定的位数,整数位不能超过不然就不能导入
    #   create database db50 charset utf8;
    # use db50
    # create table t6 (price float(6,2));
    # insert into t5 values(78.3);78.30
    # insert into t5 values(78.3456);显示78.35

    2 字符(宽度指的是字符个数):姓名,性别,职业,地址,职称,介绍
    char:简单粗暴,不够则凑够固定长度存放起来,浪费空间,存取速度快
    varchar:精准,计算出待存放的数据的长度,节省空间,存取速度慢
    验证:注:中文1一个汉字三个字节;一个字节8位2进制
    create table t6(name char(4));
    insert into t6 values('alexsb');#插入不进去
    insert into t6 values('欧德');#可以插入到表里
    insert into t6 values('艾利克斯a');#不可以插入表里
    create table t7(x char(5),y varchar(5));
    #insert into t7 values('abcdef','abc');#不能插入到表里
    #insert into t7 values('abc','abc');#可以插入表里
    #select char_length(x),char_length(y) from t7;#查看字符长度
    #insert into t7 values('abc','abcdef');不可以插入到表里
    
    insert into t7 values('abc','abc'); #char_length :查看字符的长度
    insert into t7 values('你好啊','好你妹'); #char_length :查看字符的长度
    select length(x),length(y) from t7;查看字节的长度
     
    3日期类型
    create table table(
    id int,
    name char(5),
    born_date date,
    born_year year,
    reg_time datetime,
    class_time time
    );
    insert into student values(1,'alex','2017-09-06','2017','2017-09-06 10:39:00','08:30:00');
    #数据格式比较随意,你喜欢就好
    insert into student values(1,'alex','2017/09/06',2017,'2017-09-06 10:39:00','08:30:00');
    insert into student values(1,'alex','20170906',2017,'20170906103900','083000');

    4 枚举与集合

    枚举:是用在情况可以举出的情况下,但是为该字段传值,只能取出一个;集合:是用在一定的范围内,但是为该字段传值可以取出多个;

    create table teacher1(
    id int primary key auto_increment,
    name char(5),
    sex enum('male','female'),#枚举
    hobbies set('music','read','study','coding')#集合
    );
    
    insert into teacher1(name,sex,hobbies) values('egon','None','asdfasdfasdf');#错误的不能插入
    insert into teacher1(name,sex,hobbies) values('egon','male','music,read');这个可以
    二约束条件
    1 not full(不为空)
    与default(默认值)
    create table student2(
    id int primary key auto_increment,#主键 递增
    name char(5),
    sex enum('male','female') not null default 'female'#集合,不为空,默认为female
    );
    
    insert into student2(name) values('frank');
    
    
    create table student3(
    id int primary key auto_increment,#主键且递增
    name char(5),
    age int not null default 30#不为空默认值为30
    );
    
    insert into student3(name) values('frank');
    2 unique
    #单列唯一
    create table teacher(
    id int not null unique,#相当于主键
    name char(10)
    );
    insert into teacher values(1,'frank');
    insert into teacher values(1,'bruse');#插入不进去,因为id是唯一的且不为空
    #多列唯一
    create table services(
    id int primary key auto_increment,
    name char(10),
    host char(15),
    port int,
    constraint host_port unique(host,port)#两个组成一个组合且唯一
    );
    
    insert into services values('ftp','192.168.20.17',8080);#这个正常插入表格
    insert into services values('httpd','192.168.20.17',8080);#这个不可以因为两个都和前面的一样
    insert into services values('httpd','192.168.20.17',8180);#这个就可以

    3关于主键的递增步长和开始的位置(偏移量和步长)

    开始的位置:

    create table seep(
    id int primary key auto_increment,
    name char(10)
    );
    insert into seep(name) values('IT'),('HR'),('SALE'),('Boss');#从1开始
    
    create table seep1(
    id int primary key auto_increment,
    name char(10)
    )auto_increment=10;
    insert into seep1(name) values('IT'),('HR'),('SALE'),('Boss');#从10开始

    自增的步长:

    #auto_increment_increment:步长
    create table seep2(
    id int primary key auto_increment,
    name char(10)
    );
    set session auto_increment_increment=2; #会话级,只对当前会话有效
    set global auto_increment_increment=2; #全局,对所有的会话都有效
    insert into seep2(name) values('IT'),('HR'),('SALE'),('Boss');

     偏移量和步长一起使用:注意:如果偏移量大于步长则这次的偏移量设置不生效。

    #auto_increment_offset:偏移量+auto_increment_increment:步长
    注意:如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值会被忽略
    set session auto_increment_offset=2;#偏移量设置一定要小于步长
    set session auto_increment_increment=3;#这是步长设置

    关联表

    #foreign key#外键
    #!!!先建被关联的表,并且被关联的字段必须唯一
    create table dep(
    id int primary key auto_increment,
    name varchar(50),
    comment varchar(100)
    );
    
    create table emp_info(
    id int primary key auto_increment,
    name varchar(20),
    dep_id int,
    constraint fk_depid_id foreign key(dep_id) references dep(id)#两个关联的表字段
    on delete cascade#加上这个关联表和被关联表是一起联动的(比如删除数据)
    on update cascade#加上这个关联表和被关联表是一起联动的(比如更新数据)
    );

    往表里导入数据:

    #先给被关联的表初始化记录
    insert into dep values
    (1,'欧莱雅','好公司...'),
    (2,'时尚不','招不到人'),
    (3,'销售部','卖不出东西');
    
    
    insert into emp_info values
    (1,'egon',1),
    (2,'alex1',2),
    (3,'alex2',2),
    (4,'alex3',2),
    (5,'李坦克',3),
    (6,'林子弹',3),
    (7,'加特林',3)
    ;
     
  • 相关阅读:
    Mybatis的缓存
    Mybatis使用assocation和Collection实现延迟加载
    Mybatis:一对多的查询
    Mysql:事务
    Mysql:多表查询
    Mysql:数据库的设计
    Mysql:约束
    MYSQL:DQL-查询表中的记录
    panic: cannot create context from nil parent
    $request input 获取参数null
  • 原文地址:https://www.cnblogs.com/1a2a/p/7486037.html
Copyright © 2011-2022 走看看