• 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 新表名

                                  

  • 相关阅读:
    Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
    和菜鸟一起学linux总线驱动之初识i2c驱动主要结构
    和菜鸟一起学linux之container_of实例
    和菜鸟一起学linux总线驱动之初识spi驱动主要结构
    和菜鸟一起学android4.0.3源码之按键驱动短长按功能
    和菜鸟一起学linux总线驱动之初识i2c总线协议
    程序溢出的基础和原理
    Network Information Detection程序作品+源代码
    Network Information Detection程序作品+源代码
    渗透asp后门源代码
  • 原文地址:https://www.cnblogs.com/-cqq/p/8022067.html
Copyright © 2020-2023  润新知