zoukankan      html  css  js  c++  java
  • 新手上路教程2_DDL语言

    MySQL 语言----2

    DDL语言

    1. 库的管理

    1. 创建库

      1. 语法

         create database [if not exists] 库名 [character set 字符集名];
        
    2. 修改库

      1. 语法

        alter database 库名 character set 字符集名;
        
    3. 删除库

      1. 语法

        drop database [if exists] 库名;
        

    2. 表的管理

    1. 创建表

      1. 语法

        create table [if not exists] 表名(
        	字段名 字段类型 [约束],
            字段名 字段类型 [约束],
        );
        一般在后面会跟上表的结构例如innob 
        不同的MySQL的版本,后面是不一样的。
        
    2. 修改表

      1. 添加列

        alter table 表名 add column 列名 类型 [first|after 字段名];
        
      2. 修改列的类型和约束

        alter table 表名 modify column 列名 新类型 [新约束];
        
      3. 修改列名

        alter table 表名 change column 旧列名 新列名 类型;
        
      4. 删除列

        alter table 表名 drop column 列名;
        
      5. 修改表名

        alter table 表名 rename [to] 新表名;
        
    3. 复制表

      1. 复制表的结构

        create table 表名 like 旧表;
        
      2. 复制表的结构 + 数据

        create table 表名
        select 查询列表 
        from 旧表
        [where 筛选];
        
    4. 删除表

      1. 语法

        drop table [if exists] 表名;
        
    5. 创建表时添加约束
      constraint 约束名 foreign key(字段名) references 主表(被引用列)

      create table 表名(
      	字段名 字段类型 not null,#非空
      	字段名 字段类型 primary key,#主键
      	字段名 字段类型 unique,#唯一
      	字段名 字段类型 default 值,#默认
      	constraint 约束名 foreign key(字段名) references 主表(被引用列)
      
      )
      注意:
      			支持类型		可以起约束名			
      列级约束		除了外键		不可以
      表级约束		除了非空和默认	可以,但对主键无效
      
      列级约束可以在一个字段上追加多个,中间用空格隔开,没有顺序要求
      
      

    3. 常见数据类型

    1. 数值型

    1. 整型

      tinyint 、smallint 、mediumint、 int/integer 、bigint
      1			2		3			4				8
      
      • 特点:
        • 都是可以设置无符号和有符号,默认有符号,通过unsigned设置无符号
        • 如果超出范围,会报out or range 异常,插入临界值
        • 长度可以不指定,默认会有一个长度、、、
    2. 浮点型

      1. 定点数:decimal(M,D)

      2. 浮点数:

        1. float(M,D) 4
        2. double (M,D) 8
      3. 特点:

        • M代表整数部位+小数部位的个数,D代表小数部位
        • 如果超出范围,则报out or range异常,并且插入临界值
        • M和D都可以省略,但对于定点数,M默认为10,D默认为0
        • 如果精度要求较高,则优先考虑使用定点数

    2. 字符型

    1. 常用
    char、varchar、binary、varbinary、enum、set、text、blob
    
    char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1
    varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略
    

    3. 日期型

    1. 常用

      year年
      date日期
      time时间
      datetime 日期+时间          8      
      timestamp 日期+时间         4   比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间
      

    4. 常见的约束

    ### 1. 常见的约束
    
    • NOT NULL: 非空,该字段的值必值
    • UNIQUE: 唯一,该字段不可重复
    • DEFAULT : 默认,该字段的值不用手动插入有默认值
    • CHECK : 检查 ,mysql不支持
    • PRIMARY KEY : 主键,该字段的值不可重复,并且非空,,一个表必须有一个主键 unique+ not null
    • FOREIGN KEY : 外键,该字段的值引用了另外的表的字段

    2. 主键和唯一

    1. 区别:
     * 一个表至多有一个主键,但可以有多个唯一
     * 主键不容许空,唯一可以为空
    2. 相同点:
    
    * 都具有唯一性
    * 都支持组合键,但不推荐
    

    3. 外键

    1. 用于限制两个表的关系,从表的字段值引用了主表的某字段值

    2. 外键列和主表的被引用列要求类型一致,意义一样,名称无要求

    3. 主表的被引用列要求是一个key(一般就是主键)

    4. 插入数据,先插入主表

      • 删除数据,先删除从表

      • 可以通过以下两种方式来删除主表的记录

        • 方式一:级联删除

          ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
          
        • 方式二: 级联置空

          ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
          

    4. 修改表时添加或删除约束

    1. 非空

      1. 添加非空

        alter table 表名 modify column 字段名 字段类型 not null;
        
      2. 删除非空

        alter table 表名 modify column 字段名 字段类型;
        
    2. 默认

      1. 添加默认

        alter table 表名 modify column 字段名 字段类型 default 值;
        
      2. 删除默认

        alter table 表名 modify column 字段名 字段类型 ;
        
    3. 主键

      1. 添加主键

        alter table 表名 add【 constraint 约束名】 primary key(字段名);
        
      2. 删除主键

        alter table 表名 drop primary key;
        
    4. 唯一

      1. 添加唯一

        alter table 表名 add【 constraint 约束名】 unique(字段名);
        
      2. 删除唯一

        alter table 表名 drop index 索引名;
        
    5. 外键

      1. 添加外键

        alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);
        
      2. 删除外键

        alter table 表名 drop foreign key 约束名;
        

    5. 自增长列

    1. 特点:

      • 不用手动插入值,可以自动提供序列值,默认从1开始,步长为1
        auto_increment_increment
        • 如果要更改起始值:手动插入值
        • 如果要更改步长:更改系统变量
        • set auto_increment_increment=值;
      • 一个表至多有一个自增长列
      • 自增长列只能支持数值型
      • 自增长列必须为一个key
    2. 创建表时设置自增长列

    create table 表(
    	字段名 字段类型 约束 auto_increment
    )
    
    1. 修改自增长列

      alter table 表 modify column 字段名 字段类型 约束 auto_increment
      
    2. 删除自增长列

      alter table 表 modify column 字段名 字段类型 约束 
      
  • 相关阅读:
    Android 编程下 Eclipse 恢复被删除的文件
    Android 编程下背景图片适配工具类
    Android 编程下 Managing Your App's Memory
    Android 编程下代码之(QQ消息列表滑动删除)
    Android 编程下 Canvas and Drawables
    Android 编程下 AlarmManager
    Android 编程下去除 ListView 上下边界蓝色或黄色阴影
    Java 编程下字符串的 16 位、32位 MD5 加密
    C#枚举类型和int类型相互转换
    MVC和普通三层架构的区别
  • 原文地址:https://www.cnblogs.com/YJBlog/p/10659717.html
Copyright © 2011-2022 走看看