MySQL库表视图索引操作


建库
    CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [DEFAULT] CHARACTER SET [=] charset_name
    | [DEFAULT] COLLATE [=] collation_name
 
    比如:
    create database if not exists test1 default character set=utf8;
    它会有mysql的数据目录下创建一个test1目录,目录下有一个db.opt文件,
    如果你手动在mysql数据目录下创建了一个目录(mkdir test2),那么mysql服务会认为它是一个数据目录,并且会在show databases 命令下显示出来。
    也可以通过mysqladmin来创建数据库,如下:
    shell> mysqladmin create test1 -uroot -p
删除库
    DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
    DROP DATABASE 会删除数据库下的所有表和数据,会返回删除表的数量。
    IF EXISTS 用来防止在删除不存在的数据库时出现错误。
    也可以通过mysqladmin来创建数据库,如下:
    shell> mysqladmin drop test1 -uroot -p
    
修改库
    ALTER {DATABASE | SCHEMA} [db_name] # 这里的数据库名可以省略,指的是默认数据库
        alter_specification ...
    ALTER {DATABASE | SCHEMA} db_name
        UPGRADE DATA DIRECTORY NAME

    alter_specification:
        [DEFAULT] CHARACTER SET [=] charset_name
      | [DEFAULT] COLLATE [=] collation_name
      
查看建库语句
    SHOW CREATE DATABASE db_name
    
建表
    请参考官网 http://dev.mysql.com/doc/refman/5.6/en/create-table.html
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        (create_definition,...)
        [table_options]
        [partition_options]

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

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        { LIKE old_tbl_name | (LIKE old_tbl_name) }
    mysql> create table if not exists test1 (id int,name varchar(20),age tinyint)engine=innodb default character set=utf8;
    mysql> create table if not exists test1 select * from test;
    mysql> create table if not exists test2 like test; #创建一个跟test表结构一样的空表
    
修改表
    请参考官网 http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
    ALTER TABLE t1 ENGINE = InnoDB; # 修改表存储引擎
    ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ] # 添加列
    ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) # 添加索引
    ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name] #修改列名及数据类型
    ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] #修改列数据类型
    ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP {INDEX|KEY} index_name | DROP FOREIGN KEY fk_symbol # 删除列 | 主键 | 索引 | 外键
    
    mysql> alter table test3 add weight decimal(5,2) not null after name;
    mysql> alter table test3 add city varchar(10) default null;
    mysql> alter table test3 change city country varchar(10) default null;
    mysql> alter table test3 modify country varchar(20) default null;
    mysql> alter table test3 add index name_index (name);

    mysql> alter table test3 add index index1 (name1), add index  index2(name2);   
删除表
    DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...  [RESTRICT | CASCADE]
    注意:删除了表,但此表上的用户权限不会自动删除。
    
查看建表语句
    SHOW CREATE TABLE tbl_name
    
创建视图
    请参考官网 http://dev.mysql.com/doc/refman/5.6/en/create-view.html
    CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]
    CREATE VIEW 创建一个新视图,如果加上 OR REPLACE 则表示覆盖已经存在的视图。
    如果要创建的视图不存在,那么CREATE OR REPLACE VIEW 跟 CREATE VIEW是一样的,
    如果要创建的视图已存在,那么CREATE OR REPLACE VIEW 跟 ALTER VIEW 是一样的。
    注:视图是属于数据库的,所以在一个数据库内不能有相同名称的视图和表。

修改视图
    ALTER
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]
    
删除视图
    DROP VIEW [IF EXISTS]
    view_name [, view_name] ...
    [RESTRICT | CASCADE]
查看创建视图语句
    SHOW CREATE VIEW view_name
    
创建索引
    请参考官网 http://dev.mysql.com/doc/refman/5.6/en/create-index.html
    CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
    [index_option]
    [algorithm_option | lock_option] ...
    注:CREATE INDEX 不能创建主键索引,这时用ALTER TABLE 来代替。
删除索引
    DROP INDEX [ONLINE|OFFLINE] index_name ON tbl_name
    也可以用ALTER TABLE tbl_name DROP INDEX index_name
    
查看索引语句
    SHOW INDEX FROM tbl_name
    
创建触发器
    参考官网 http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html
    参考官网 http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html
    CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    trigger_body

    trigger_time: { BEFORE | AFTER }
    trigger_event: { INSERT | UPDATE | DELETE }
    
    一个表不能同时有多个相同触发事件和触发时间的触发器。
    trigger_body 是触发器要执行的SQL语句,如果有多条SQL语句,要用BEGIN .... END 结构。
    如果删除了一个表,那么表上的所有触发器都会被删除。
    在INSERT 触发器里,只有NEW.col_name可用,没有OLD.col_name,
    在DELETE 触发器里,只有OLD.col_name可用,没有NEW.col_name.
删除触发器
    DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
查看触发器
    SHOW CREATE TRIGGER trigger_name;

你可能感兴趣的:(mysql,table,database,index)