zoukankan      html  css  js  c++  java
  • 数据库-数据类型-数据库创建表的 约束以及 DDL操作

    -- MySql 的数据类型

    -- 在创建表结构时,数据类型可以对字段约束,类似Java的数据类型
    -- 数据类型分类
    -- 1、数值类型 : 修饰字段数字的类型
    -- tinyint 微整型 1个字节
    -- smallint 短整型 2个字节
    -- mediumint 中等整型 3个字节
    -- int 整型 4个字节
    -- BIGINT 长整型 8个字节
    -- float 小数型 4个字节
    -- double 小数型 8 个字节
    -- decimal(总长度,小数点个数)

    -- 在创建表时,指定数据类型
    -- 创建表语法
    create table 表名(
    字段1 数据类型 [primary key] ,
    字段2 数据类型 [not null]
    ...
    )
    -- 删除表 (一起删除与该表相关的所有记录 数据和约束)
    drop table mytest1;

    create table mytest1 (
    id tinyint primary key ,
    id_2 smallint not null,
    id_3 mediumint ,
    id_4 int ,
    id_5 float ,
    money decimal(5,2) -- 5:数值的整个个数, 2:小数点的个数
    )

    -- 2 文本类型 用于定义表的字段是文本的类型
    -- char 不可变长度字符类型 0-255
    -- varchar 可变长度字符类型 0-255
    -- tinyblob 存储二进制类型(图像,视频等)0-255
    -- tinytext 存储文本类型
    -- blob 存储二进制类型(图像,视频等)
    -- text 存储文本类型
    -- mediumblob 存储二进制类型(图像,视频等)(中等大小)
    -- mediumtext 存储文本类型
    -- longblob 存储二进制类型(图像,视频等)(超大内存)
    -- longtext 存储文本类型

    create table mytest2(
    id int primary key auto_increment, -- 主键自增长 默认从1开始
    username varchar(20) , -- 可变长度
    sex char(1) ,-- 不可变长度
    introduce text, -- 存储文本类型
    image blob

    )

    select * from mytest2

    3、日期 时间类型
    -- date 日期类型 yyyy-mm-dd
    -- time 时间类型 hh:mi:ss
    -- year 年份
    -- datetime 日期时间类
    -- timestamp
    create table mytest3(
    id int primary key auto_increment ,
    birthday date ,
    mytime time ,
    bir_year year ,
    publishDate datetime ,-- 发布时间
    createDate timestamp -- 创建时间 需要打开自动更新时间戳操作 每次修改新增都自动更新为系统时间
    )

    select * from mytest3;

    -- 数据库创建表的 约束以及 DDL操作

    -- 所谓表的约束: 用于在创建表时,为了确保数据的完整性 订制数据表的规则。
    mysql中常用约束
    1、 主键约束 : 用于唯一标志该条记录的约束 (等价于 非空约束+唯一约束 , 一张表中只能有一个主键列 主键可以是多字段组合)

    2、非空约束 : 约束该字段插入时不为空

    3、唯一约束: 该字段的数据在一整列是唯一的

    4、默认值约束: 设置该字段的 默认值

    5、检查约束(check):设置字段值的范围是否符合指定条件

    6、外键约束: 用于主外键关联的约束

    -- 创建用户表 指定相关约束
    create table t_user(
    userid int primary key auto_increment, -- 主键 自增长 从1 开始
    username varchar(20) not null, -- 非空约束
    password varchar(20),
    email varchar(50) unique , -- 唯一约束
    sex char(1) default ('男'), -- 默认约束
    age int check( age >0 and age<120), -- 检查约束年龄在0-120之间
    birthday datetime default(now()) -- 如果没有指定生日,默认值为系统时间
    )
    -- 订单表
    create table t_order(
    orderid int primary key ,
    orderno varchar(30) not null,
    order_amout decimal(8,2), -- 订单金额
    user_id int references t_user(userid) -- 外键约束
    )

    -- 以上约束 既可以在创建表的时候完成 ,也可以在创建表之后通过alter添加约束
    create table my_user(
    user_id int ,
    user_name varchar(20)

    )

    -- 使用alter 添加 主键约束、 唯一约束、 检查约束 ,外键约束 其中非空约束不能单独添加
    -- 1、主键约束语法: alter table 表名 add constraint 约束名 primary key (列名)
    alter table my_user add constraint pk_userid primary key (user_id);

    -- 2 唯一约束语法:
    alter table 表名 add constraint 约束名 unique(列名);
    alter table my_user add constraint uk_username unique(user_name );

    -- 3、检查约束
    alter table 表名 add constraint 约束名 check(列名);
    alter table t_user add constraint ck_age check (age>0 and age<100);

    -- 4、外键约束 (指定关联表的主键 )
    alter table 表名 add constraint 约束名 foreign key(外键列名) references 主表(主键)

    alter table t_order add constraint fk_userid foreign key (user_id) references t_user(userid);

    -- 如果表创建好了 ,需要修改表结构,也可以通过alter 修改
    select * from t_user;
    -- 1 在t_user表中 新增 money 字段
    -- 语法: alter table 表名 add column 字段名 数据类型(长度)
    alter table t_user add column money decimal(8,2);

    -- 2、删除表的字段 birthday
    -- 语法: alter table 表名 drop column 字段名
    alter table t_user drop column birthday ;

    -- 3、修改字段的数据类型或长度
    -- 语法: alter table 表名 modify column 字段名 数据类型(长度)
    desc t_user;
    alter table t_user modify column sex varchar(10);

    -- DML insert update delete

  • 相关阅读:
    [原]OS X 10.9 Mavericks
    [原]iOS Makefile Template
    [原]Escape From the iOS Sanbox on Jailbreak Device
    串->串的表示和实现
    队列->队列的应用(银行业务模拟)
    队列->队列的表示和实现
    栈->栈与递归
    栈->栈的应用
    栈->栈的基本定义
    线性表->应用->一元多项式
  • 原文地址:https://www.cnblogs.com/z5452830/p/13996814.html
Copyright © 2011-2022 走看看