• mysql基础-数据库表的管理-记录(四)


    0x01

    MySQL中字符大小写
    1.SQL关键字及函数不区分大小写
    2.数据库、表及视图名称的大小写区分与否取决于底层OS及FS
    3.存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分大小写
    4.表别名区分大小写
    5.对字段中的数据,如果字段类型为binary类型,则区分大小写,非binary不区分大小写

    创建数据库

    create database
    CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [[DEFAULT] CHARACTER SET [=] charset_name 字符集 | [DEFAULT] COLLATE [=] collation_name 排序方式]
    如果要修改数据库名 ---- 需要先备份数据库,之后删除数据库,再创建数据库,导入备份的数据

    DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
    修改数据库的字符集和排序字符以及数据字典
    ALTER {DATABASE | SCHEMA} [db_name]
    [[DEFAULT] CHARACTER SET [=] charset_name 字符集 | [DEFAULT] COLLATE [=] collation_name 排序方式]

    ALTER {DATABASE | SCHEMA} db_name  UPGRADE DATA DIRECTORY NAME

    select database();  查看当前所在库

    create table tb1 (Name varchar(50) not null, Age tinyint unsigned not null, primary key(Name,Age));  --创建表并制定Name Age 都为主键

    查看存储引擎,默认存储引擎innodb

    show engines;

    创建表的时候制定存储引擎 

    create table tb1 (Name varchar(50) not null, Age tinyint unsigned not null, primary key(Name,Age)) engine='myisam';

    查看表的存储引擎

    show table status like 'tb5'G; 

    0x02

    创建表

    第一种方式
    CREATE [TEMPORARY(临时表,保存在内存中)] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]

    (create_definition,...)
    字段的定义:字段名、类型和类型修饰符
    键、索引和约束
    primary key 主键,unique key 唯一建,foreign key 外键,check 校验
    {index|key} [table_options]  engine [=] engine_name   引擎  AUTO_INCREMENT [=] value 指定AUTO_INCREMENT的起始值
    [DEFAULT] CHARACTER SET [=] charset_name 指定默认字符集
    CHECKSUM [=] {0 | 1} 是否使用校验值
    [DEFAULT] COLLATE [=] collation_name 排序规则
    COMMENT [=] 'string' 注释
    DELAY_KEY_WRITE [=] {0 | 1} 是否启用键延迟写入 ---可以在性能上有一定的调优作用


    ROW_FORMAT [=] {DEFAULT(默认)|DYNAMIC(动态)|FIXED(静态)|COMPRESSED(压缩)|REDUNDANT(冗余)|COMPACT(紧致)} 表格式
    TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] 表空间

    MyISAM表,每个表有三个文件,都位于数据库目录中
    tb_name.frm:表结构定义
    tb_name.MYD:数据文件
    tb_name.MYI:索引文件


    InnoDB表,有两种存储方式
    1.默认:每表有一个独立文件和一个多表共享的文件
    tb_name.frm:表结构的定义,位于数据库目录中
    ibdata1  ...... :共享的表空间文件,默认位于数据目录(datadir指向的目录)中  有个弊端,在数据庞大,数据库多,表多的情况下,会造成此文件很大,给备份带来麻烦


    2.独立的表空间文件:()
    每表有一个表结构文件tb_name.frm
    一个独立的表空间文件 tb_name.ibd

    show global variables like 'innodb%';

    应该修改innodb_file_per_table为ON

    set global innodb_file_per_table=ON

    不会立即生效,退出mysql重新登录即可,让其永久生效 就要编辑配置文件 vim /etc/my.cnf 找到[mysqld] 添加即可


    第二种方式:创建表(复制表数据)

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    select_statement

    create table tb6 select * from tb1;   ----- 创建一张表tb6 并复制tb1表的所有数据及字段,但是不能复制主键 等其他的修饰符

    第三种方式:创建表(复制表结构)
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    { LIKE old_tbl_name | (LIKE old_tbl_name)

    create table tb7 like tb1;     ---- 创建一张表,复制tb1的结构,但是不复制tb1的数据

    删除表
    DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...  [RESTRICT | CASCADE]

    修改表:
    ALTER TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    修改字段定义:
    插入新字段:
    ADD [COLUMN] col_name column_definition  [FIRST | AFTER col_name ]

    实例:

    alter table tb6 add Age tinyint unsigned not null;   ----添加一个Age字段

    alter table tb6 add Gender enum('m','f') not null default 'm' after Name;    ---添加一个Gender字段,指定插入在Name字段后面

    alter table tb6 add Sex enum('n','v') not null default 'n' first;    --- 添加一个Sex字段,指定插入到第一个位置


    删除字段
    DROP [COLUMN] col_name
    修改字段
    修改字段名称
    CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

    实例:alter table tb6 change Name Hname char(30) not null;     ----将原来字段名称Name修改为Hname 
    修改字段类型及属性等
    MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

    实例: alter table tb6 modify Gender enum('m','n') not null after ID;     ----修改了字段Gender的属性--即去掉了之前的default值,并制定插入到字段ID之后

    创建索引:

    实例:alter table tb6 add index (Hname);  -- 创建的时候可以不指定索引的名字

    查看索引 : show indexes from tb6;

    表改名:
    rename to|as new tb_name

    实例:rename table tb6 to tb8;   or    alter table tb8 rename to tb6;


    修改存储引擎:
    engine =

    实例: alter table tb6 engine=myisam;  查看: show table status like 'tb6'G;
    指定排序标准的字段
    ORDER BY col_name [, col_name] ...

  • 相关阅读:
    poj1966 Cable TV Network
    contesthunter#17-c 舞动的夜晚
    joyoi1957 「Poetize5」Vani和Cl2捉迷藏
    joyoi1935 「Poetize3」导弹防御塔
    luogu3629 [APIO2010]巡逻
    poj2728 Desert King
    poj1734 Sightseeing trip
    loj2003 「SDOI2017」新生舞会
    hdu2255 奔小康赚大钱 KM 算法
    POJ 1681 Painter's Problem(高斯消元+枚举自由变元)
  • 原文地址:https://www.cnblogs.com/autopwn/p/5080532.html
Copyright © 2020-2023  润新知