zoukankan      html  css  js  c++  java
  • MySQL_基础_DDL数据定义语言

    库的管理

    库的切换
    USE 库名;
    
    库的查看
    SHOW DATABASES;
    
    库的表查看
    SHOW TABLES;
    
    库的创建
    CREATE DATABASE [IF NOT EXISTS] 库名 [CHARACTER SET 字符集];
    
    库的修改
    修改库名
    关闭Mysql服务器 -> 到data目录下手动修改库名 -> 重启Mysql服务器即可
    
    修改库的字符集
    ALTER DATABASE 库名 CHARACTER SET 字符集;
    
    库的删除
    DROP DATABASE [IF EXISTS] 库名;

    表的管理

    表的结构查看
    DESC 表名;
    
    表的创建
    CREATE TABLE 表名(
        列名 列的类型 [(长度)] [约束],
        列名 列的类型 [(长度)] [约束],
        ...
        列名 列的类型 [(长度)] [约束]
    );
    
    表的修改
    修改表名
    ALTER TABLE 旧表名 RENAME TO 新表名;
    
    添加列
    ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [FIRST | AFTER 字段名]; 
    
    修改列名
    ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 数据类型;
    
    修改列类型或约束
    ALTER TABLE 表名 MODIFY COLUMN 列名 新类型 [新约束];
    
    删除列
    ALTER TABLE 表名 DROP COLUMN 列名;
    
    表的删除
    DROP TABLE [IF EXISTS] 表名;
    
    表的复制
    复制表结构
    CREATE TABLE 复制表名 LIKE 表名;
    
    复制表结构+数据
    CREATE TABLE 复制表名 SELECT * FROM 表名;
    
    复制表部分结构
    CREATE TABLE 复制表名 SELECT 列1[,列2..] FROM 表名 WHERE 0;

    数据类型

    分类
        数值型:
            整型:TINYINT、SMALLINT、MEDIUMINT、INT/Integer、BIGINT
            小数:
                定点数:DECIMAL(M, D)
                浮点数:FLOAT(M, D)、DOUBLE(M, D)
        字符型:
            字符串:CHAR、VARCHAR
            文本:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
            二进制:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
        日期型:
            YEAR、TIME、Date、DATETIME、TIMESTAMP
    
    
    数值型
        整型
            类型            字节      范围(有符号)           范围(无符号)      用途
            TINYINT         1        -2^7 ~ 2^7-1         0 ~ 2^8-1         微小整数
            SMALLINT        2        -2^15 ~ 2^15-1       0 ~ 2^16-1        小整数
            MEDIUMINT       3        -2^23 ~ 2^23-1       0 ~ 2^24-1        中整数    
            INT(Integer)    4        -2^31 ~ 2^31-1       0 ~ 2^32-1        大整数
            BIGINT          8        -2^63 ~ 2^63-1       0 ~ 2^64-1        极大整数
        
            1、默认有符号,通过UNSIGNED关键字设置无符号
            2、数值超出范围,会报out of range异常警告,并且插入临界值
            3、如果不设置长度,会有默认的长度 
            4、长度代表显示的最大宽度,如果不够则左边用0填充,但必须搭配ZEROFILL才会显示,并默认变为无符号整型
    
        小数型
            类型            字节                范围                                                 用途
            FLOAT(M, D)     4                  ±1.75494351E-38~ ±3.402823466E+38                   单精度浮点数(8位精度)            
            DOUBLE(M, D)    8                  ±2.2250738585072014E-308~ ±1.7976931348623157E+308  双精度浮点数(16位精度)
            DECIMAL(M, D)   M>D为M+2,否则D+2   依赖于M和D的值                                       定点数
    
            1、M:整数部位+小数部位,D:小数部位
            2、如果超过范围,会报out of range异常警告,并且插入临界值
            3、M和D都可以省略,如果是定点数,M默认为10,D默认为0
            4、如果精确度要求较高,则优先考虑使用定点数
    
    字符型
        类型            字节                用途
        CHAR            0 ~ 2^8-1          固定长度字符串
        VARCHAR         0 ~ 2^16-1         可变长度字符串
        TINYBLOB        0 ~ 2^8-1          微小的二进制形式文本数据
        TINYTEXT        0 ~ 2^8-1          微小的文本数据
        BLOB            0 ~ 2^16-1         小的二进制形式文本数据
        TEXT            0 ~ 2^16-1         小的文本数据
        MEDIUMBLOB      0 ~ 2^24-1         中等的二进制形式文本数据
        MEDIUMTEXT      0 ~ 2^24-1         中等的文本数据
        LONGBLOB        0 ~ 2^32-1         极大的二进制形式文本数据
        LONGTEXT        0 ~ 2^32-1         极大的文本数据
    
    日期型
        类型        字节    范围                                       格式                   用途
        DATE        3      1000-01-01/9999-12-31                     YYYY-MM-DD              日期值
        TIME        3      '-838:59:59'/'838:59:59'                  hh:mm:ss                时间值
        YEAR        1      1901/2155                                 YYYY                    年份值
        DATETIME    8      1000-01-01 00:00:00/9999-12-31 23:59:59   YYYY-MM-DD hh:mm:ss     日期和时间值
        TIMESTAMP   4      1970-01-01 00:00:00/2038-1-19 11:14:07    YYYYMMDD hh:mm:ss       时间戳值(结束时间是第 2147483647 秒)
    
        1、TIMESTAMP是UTC时间戳,与时区相关。
        2、DATETIME的存储格式是一个YYYYMMDDHHmmSS的整数,与时区无关。
        3、DATETIME的存储范围大于TIMESTAMP。
        4、TIMESTAMP的列可以自动更新。
        5、除非有特殊需求,否则建议使用TIMESTAMP。
    
    ENUM、SET、BIT
        1、ENUM列允许在列中存储一组定义值中的单个值。
        2、SET列允许在列中存储一组定义值中的一个或多个值。
        3、BIT在InnoDB中其实是一个最小的整数类型。而MySQL在检索BIT的时候会将其当做字符串,而不是整数,这可能会导致一些奇怪的行为。
        4、不建议使用这三个类型:用整数代替。

    约束

    语法:
        1、创建表时添加约束
        CREATE TABLE 表名(
            字段名 字段类型 列级约束,
            字段名 字段类型,
            
            [CONSTRAINT 约束名] 约束类型(字段名) [外键的引用]
        );
    
        2、修改表时添加约束
        ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束;                       # 列级约束
        ALTER TABLE 表名 ADD [CONSTRAINT 约束名] 约束类型(字段名) [外键的引用];        # 表级约束
    
        3、查看约束
        DESC 表名;
        SHOW INDEX FROM 表名;
    
    含义:
        一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
    
    分类:
        主键约束(PRIMARY KEY):唯一性,非空性。
        唯一约束(UNIQUE):唯一性,可以空,但只能有一个。
        检查约束(CHECK):对该列数据的范围、格式的限制。[MySQL中不支持]
        非空约束(NOT NULL):所约束的列不能为NULL值。
        外键约束(FOREIGN KEY):需要建立两表间的关系并引用主表的列。
        默认约束(DEFAULT):该数据的默认值。
        
    约束支持:
        列级约束:主键、唯一、检查、非空、默认
        表级约束:主键、唯一、检查、外键
    
    案例:
        1、创建表时添加约束
        CREATE TABLE IF NOT EXISTS stuinfo(
            id INT PRIMARY KEY,                                                      # 主键
            stuname VARCHAR(20) NOT NULL,                                            # 非空
            gender CHAR(1) CHECK(gender='' OR gender =''),                     # 检查
            age INT DEFAULT 18,                                                      # 默认
            seat INT UNIQUE,                                                         # 唯一
            majorid INT,    
            CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)    # 外键
        );
    
        2、修改表时添加约束
        案例1:添加主键
        ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;       # 列级约束
        ALTER TABLE stuinfo ADD PRIMARY KEY(id);                    # 表级约束
    
        案例2:添加外键
        ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id); 
    
        3、修改表时删除约束
        案例1:删除默认约束
        ALTER TABLE stuinfo MODIFY COLUMN age INT ;
    
        案例2:删除主键
        ALTER TABLE stuinfo DROP PRIMARY KEY;
    
        案例3:删除唯一
        ALTER TABLE stuinfo DROP INDEX seat;
    
        案例4:删除外键
        ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

    标识列

    含义:
    可以不用手动的插入值,系统提供默认的序列值 特点:
    1、标识列必须和key搭配 2、一个表只能有一个标识列 3、标识列的类型只能是数值型 4、标识列可以通过 SET auto_increment_increment=3;设置步长 案例: 1、创建表时添加标识列,并设置起始值 CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL ) AUTO_INCREMENT = 1000; 2、修改表时添加标识列 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT; 3、修改表时删除标识列 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY; 4、修改标识列起始值 ALTER TABLE stuinfo AUTO_INCREMENT = 2000;
  • 相关阅读:
    phontomjs debug with webkit inspector
    《Node Web开发》((美)David Herron)【摘要 书评 试读】 京东图书
    PhantomJS in nonheadless mode Google Groups
    Backbone.js
    Underscore.js
    Free HTTP Sniffer: a free HTTP packet sniffer to find the URLs.
    phantomjs node.js parse child process output line by line (spawn) Stack Overflow
    Getting Started · jashkenas/rubyprocessing Wiki
    使用 JSONP 实现跨域通信,第 2 部分: 使用 JSONP、jQuery 和 Yahoo! 查询语言构建 mashup
    JavaScript中的正则表达式
  • 原文地址:https://www.cnblogs.com/Small-music/p/9274196.html
Copyright © 2011-2022 走看看