DDL

Mysql不区分大小写  structured query language

①数据库

       创建数据库:在Mysql中create database和create schema(模式)效果相同

       create database if not exists db default charset utf8 collate utf8_general_ci;// collate校验,用后面的数据库校准规则

       查看所有数据库:show databases;

             mysql自动创建的数据库有:information_schema:数据库对象信息,用户表信息,列信息,权限信息等

                                                         cluster:集群信息

                                                         performance_schema:数据库服务器性能参数

                                                         mysql:显示系统的用户权限

       删除数据库:drop database 数据库名

②表

      显示某个数据库下的所有表:use 数据库名

                                                    show tables;

      1.创建表:

             1.1 create table 表名(

                    列名 数据类型 约束,

                    )

                    数据库约束:

                               主键: primary key,数据不重复且非空。

                              默认值: default,在数据插入时,如果插入的位置没有数据,将被default值填充

                                 唯一  :unique,一列的值不能重复,即这一列每个值都是唯一的。

                                外键 :foreign key:体现数据完整性,一个表可以有多个外键,每个外键必须是另一个表的主键,被外键约束的列,取值必须在它参考列中对应,否则报错

                                非空: not null:插入值不为空

                               查看所有的约束:select * from information_schema.TABLE_CONSTRAINTS where table_name=...

                                alter table stu drop foreign key s_d;//删除外键约束

                                alter table db.stu add constraint foreign key s_d(dept_no) references db.dept(dept_no);//增加外键约束

                               alter table db.lib add primary key(book_no);//添加主键约束

                    主键实例:

                    use db;

                    create table student(

                    stuno int,//等价于stu int primary key,

                    stuname char(10),

                    constraint stu_no primary key(stuno)

                    )

                   外键实例:   

                   use db;

                    create table student(

                    stu int primary key,

                    stuname char(10),

                    depart_no int ,//等价于depart_no int references department(depart_no)

                    constraint stu_dept foreign key(depart_no) references department(depart_no)

                    )

                   在创建索引时可以指定在删除更新父表时,子表(定义了外键的表)进行的操作,restrict, cascade, set null, not action

                    restrict:在子表有记录的情况下,父表不能更新

                    cascade:父表在更新或删除的时候,子表进行相应的操作

                    set null:父表在进行删除的时候,子表对应的列set null

                    not action:不做任何操作

                   例:constraint stu_dept foreign key(depart_no) references department(depart_no) delete restrict updata cascade;

                          主表在删除的时候,如果子表中有对应的记录则不允许删除,主表进行更新时,子表中相应的记录跟着更新

                           如果某个表被其他表定义了外键参照,该表对应的主键或索引应该禁止被删除

                   在导入多个表的数据时,可能因为外键约束报错,因为数据还没有导入完成。这时可以关闭外键约束,关闭外键约束还可以加快数据导入的速度

                   set foreign_key_checks=0;//关闭外键约束

                    set foreign_key_checks=1;//打开外键约束

               1.2 create table 表名 as select * from 被拷贝表名 where 条件(当只需要拷贝表结构的时候:where id=-1)

                     在以此种方式拷贝表的时候没有复制被拷贝表中的默认值 default value

               1.3创建临时表        

create temporary table temp(
t_id int,
t_name varchar(10)
)

           创建的临时表不会出现在数据库的列表中,也不能通过show tables 查看,也不能通过select *from information_schema.TABLES查看,只能通过show create table 表名查看临时表的信息。

           临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。当数据库中存在与临时表同名的非临时表时,临时表会自动屏蔽非临时表

      2 查看表结构

         describe 表名//desc 表名

         更加详细的表信息:show create table 表名\g :\g网格化显示 在mysql workbench中报错

      3 删除表

         drop table 表名

      4 修改表

                                    modify 列名 新数据类型  [(first | after)列名 ] 可选项               重新定义数据类型,不修改列名

                                    add column 列名 数据类型  [(first | after)列名 ] 可选项

        alter table 表名    drop column 列名

                                    change  旧列名  新列名  新数据类型 [(first | after)列名 ] 可选项   可修改数据类型和列名

                                    rename 新表名

                              

 

posted @ 2017-12-11 11:06  吾漫兮  阅读(211)  评论(0编辑  收藏  举报