• 第六天MySQL


    2020 5/9

    二十二、DDL(数据定义语言)->用于库和表的管理

    一、 库的管理

    a)        创建

    b)       修改

    c)        删除

    二、 表的管理

    a)        创建: create

    b)       修改: alter

    c)        删除: drop

    #库的管理

    1.库的创建

    语法:

    create database [if not exists] 库名;(if not exists->是为了提高容错性,没有就创建、有的就不创建)

    如:CREATE  DATABASE if not exists books;

    2.库的修改(基本上不修改,若想修改库名,则需要在服务端的data里修改)

    修改库的字符集:

    ALTER DATABASE 库名 CHARACTER SET 字符集;

    如:

    ALTER DATABASE books CHARACTER SET gbk;

    3.库的删除

    DROP DATABASE IF EXISTS库名;

    如:DROP DATABASE IF EXISTS books;

    #表的管理

    1.表的创建

    语法:

    create table(if not exists) 表名(

            列名 类型[(长度) 约束],

            列名 类型[(长度) 约束],

            列名 类型[(长度) 约束],

            …

            列名 类型[(长度) 约束]

    );

    案例:

    CREATE TABLE emp5(

           id INT(7),

           First_name VARCHAR(25),

           Last_name VARCHAR(25),

           Dept_id INT(7)

    ); (可使用if not exists来提高容错性)

    查看表结构:

     

    2.表的修改

    ①     修改列名

    ②     修改列的类型或约束

    ③     添加新列

    ④     删除列

    ⑤     修改表名

    语法:

    alter table 表名 change|modify|drop|add column 列名 【列类型 约束】;

    #修改列名

    语法:

    ALTER TABLE 表名 CHANGE COLUMN旧列名 新列名 新类型(一定要加上);

    案例:把Last_name字段名称改为last_name;

    ALTER TABLE emp5 CHANGE COLUMN Last_name last_name VARCHAR(30);

    #修改列的类型或约束

    语法:ALTER TABLE 表名 CHANGE COLUMN列名 新类型或约束;

    案例:修改了last_name字段的长度

    ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(49);

    #添加新列

    语法:

    ALTER TABLE 表名 ADD 新列名 新类型【约束】;

    案例:向表中添加新列test_column,类型自定义

    ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);

    #删除列

    语法:

    ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);

    案例:删除表中的test_column字段

    ALTER TABLE emp5 DROP COLUMN test_column;

    语法:

    ALTER TABLE 表名 RENAME [TO] 新表名;

    案例:把表名重命名为emp6;

    ALTER TABLE emp5  RENAME TO emp6;

    3.表的删除

    语法:

    drop table 表名;

    案例:

    DROP TABLE 【if exists】emp6;(可使用if exists来提高容错性)

    1. 表的复制

    #仅仅复制表的结构(使用LIKE关键字)

    CREATE TABLE employees2 Like employees;

     

    #复制表的数据+结构(使用子查询)

    CREATE TABLE employee3

    SELECT * FROM employees;

     

    #只复制部分表的数据(使用带筛选条件的子查询)

    CREATE TABLE employee4

    SELECT * FROM employees

    WHERE employee_id>150;

    #仅仅复制某些字段(不携带数据)

    CREATE TABLE employee5

    SELECT job_id,department_id FROM employees

    WHERE 1=0;(只要where后的筛选条件不成立,那么就不会接待数据)

     

    二十三、常见的数据类型

    分类:

    数值型:

           整形

           小数:

                  浮点型

                  定点型

    字符型:

           较短的文本:char、varchar

           较长的文本:text、bolb(较长的二进制数据)

    #整形

    类型                     tinyint  smallint    mediumint   int/integer    bigint

    所占字节大小         1         2             3                  4                  8

    特点:

    ①     如果不设置有符号还是无符号,则默认为有符号,如果想设置为无符号,则需要添加unsigned关键字

    ②     如果要插入的数据超出了整形的范围,会报出out of range异常,并且插入临界值

    ③     如果不设置长度,则系统会有默认的长度

    ④     类型中的长度字段代表的是显示数据的最大宽度,若数据小于该长度则会用0在左边填充,但必须搭配zerofull关键字使用(此时默认为无符号整形)

    #小数

    1.浮点型

    a)        float(M,D)

    b)       double(M,D)

    2.定点型

    a)        dec(M,D)

    b)       decimal(M,D)

    特点:

    ①     M代表的是整数和小数部分的总长度,D代表的是小数部位的长度,若超过范围则插入临界值

    ②     M和D度可以省略,如果是float和double,则会根据插入的数值来决定精度,如果是decimal,则M默认为10,D默认为0

    ③     定点型的精度较高,如果需要求插入的数值类型精度较高如货币元素那则可以考虑使用

    使用原则:所选择的类型越简单越好,能保存的数值的类型越小越好

    #字符型

    1.较短的文本

    char(M)

    varchar(M)

    binary和varbinary(包含二进制文本字符串)

    enum->枚举类型,要求插入的值必须属于列表中指定的值之一

    set->集合类型,和Enum类型类似,里面可以保存0~64个成,一次可以选取多个成员

    2.较长的文本

    text

    bolb(较长的二进制数据)

    特点:

    ①     关于char 和varchar

                     写法                      M的意思                                                  特点                   空间的耗费

    char        char(M)          最大的字符数(可以省略,默认为1)      固定长度的字符              高

    varchar    varchar(M)    最大的字符数(不可省略)                       可变长度的字符              低

    关于固定与可变长度,那“数字”举例,char会给它分配M个字符大小的空间,而varchar 就给它分配2个空间,长度随输入的值变化

    #日期型

     

    date:只保存日期

    time:只保存时间

    year:只保存年

                                字节         范围             时区等的影响

    datetime                8          1000-9999              受

    timestamp             4           1970-2038            不受

    具体如下:

    CREATE TABLE tab_date(

                         t1 DATETIME,

                         t2 TIMESTAMP

    );#创建表

    INSERT INTO tab_date VALUES(now(),now());

    SELECT * FROM tab_date;

     

    show VARIABLES like 'time_zone';

    set time_zone ='+9:00';#改变时区

     

    可发现改变时区后,t2的值发生变化,受到了时区的影响

  • 相关阅读:
    [leetcode]Valid Number
    [leetcode]Edit Distance
    [leetcode]Decode Ways
    [leetcode]Maximum Depth of Binary Tree
    [topcoder]BadNeighbors
    [topcoder]ZigZag
    [leetcode]Subsets II
    [leetcode]Merge Sorted Array
    [leetcode]Binary Tree Maximum Path Sum
    hdu 2964 Prime Bases(简单数学题)
  • 原文地址:https://www.cnblogs.com/jane315/p/12861095.html
Copyright © 2020-2023  润新知