MySQL数据库基础

来源:互联网 发布:长沙蓝狐网络官网 编辑:程序博客网 时间:2024/05/16 08:49

表结构的管理

  1. 数据类型

    • 整数类型
    • 小数类型
    • 字符串类型
    • 日期类型
    • 复合类型
    • 二进制类型

  1. 创建表

    使用表语句:use table(表名)

约束可分为:

  • 主键约束 (primary key)
  • 非空约束(not null)
  • 检查约束(check)
  • 默认约束(defualt)
  • 唯一性约束(unique)
  • 外键约束(foreign key)

  • 主键约束:
    1)单个主键: 以student表为例 ->>student_no char(11) primary key
    2)复合主键:primary key (字段名1,字段名2)

  • 外键约束: 用于定义表语表之间的某种关系
    - eg:
    表A外键字段的取值,要么是null,要么是表B主键字段的取值(A为B的子表,反之亦然)
    语法规范:
    constrain 约束名 foreign key (A字段名或字段列表)references B( 字段名或字段列表)[on delete 级联选项] [on update 级联选项]
    - 级联选项为四种:
    - cascade:父表作删除与更新时,子表与之对应的记录作同样操作
    - set null:父表作删除与更新时,子表与之对应的外键值自动设为null
    - no action :父表作删除与更新时,子表存在记录则操作失败
    - restrict :与 no action 一致,默认选项

ps:事实上MySQL并不支持检查约束,其他的约束基本跟主键约束的设置方式一样,可以百度解决下。。。。

设置自增字段:

    字段名 数据类型 auto_increment    eg:        class_no auto_increment primary key 

其他设置:

        1>engine=存储引擎        2>default charset=字符集类型        3>pack_keys=压缩类型 (1,0,default)->>可以百度下

3.清空表
truncate 表名


4.复制一个表结构

  • 方法一 : create table 新表名 like 源表名

    如: create table student1 like student 
  • 方法二: create table 新表名 select * from 源表

    如: create table student1 select * from student

    ps:这条语句可以将源表中的表结构和所有记录都复制到新表
    如果仅仅需要复制表结构:

     create table student1 select * from student where 1=2

以上的复制方法都无法复制表的约束条件,如需要可以借助mysqldump工具


5.修改表结构

对字段的操作:    删: alter table 表名 drop 字段名    添: alter table 表名 add 字段名-数据类型[约束条件][first|after旧字段名]     alter table person_name char(10) not null after person_no    修改:    > 修改字段名和数据类型        alter table 表名 旧字段名 新字段名 数据类型    > 仅修改字段数据类型        alter table 表名 modify 字段名 数据类型

约束条件的操作    添: alter table 表名 add constraint  约束名 约束类型(字段名)        alter table person add  constraint name unque (name)     删: alter table 表名 foreign key 约束名

修改表的其他操作

alter table 表名 engine = 新的存储引擎类型alter table 表名 default charset = 新的字符集alter table 表名 auto_increment = 新的初始值alter table 表名 pack_keys = 新的压缩类型 (pack_keys仅对MyISAM存储引擎有效)修改表名:rename table 旧表名 to 新表名

对于表的删除这里不再罗列,如果存在约束时,注意删除表的顺序即可。


索引

  • 在已有表创建索引
    语法一:

    create [unique|fulltext] index 索引名 on 表名(字段名[长度] [asc|desc])

    语法二:

    alter table 表名 add [unique|fulltext] index 索引名(字段名[长度] [asc|desc])

    alter table course add fulltext index description_fulltext (description)  等同于 create fulltext index description fulltext on course (description)

删除索引:

drop index 索引名 on 表名
0 0