02_MySQL表相关操作

1.表的数据库对象

  • 列(Columns):

             创建表时指定列名与数据类型

  • 索引(index):

            根据特定表中的指定列建立起来的序列,可以通过该序列快速定位到目标记录

  • 触发器(Triggers):

            用户定义的事物命令的集合,当对一个表中的记录进行插入、更新、删除时,这组命令会自动执行

2.表结构

  • desc [yourTable];         (【yourTable】:用户指定的已存在的表)

            查看表结构

  • show create table [yourTable];     (【yourTable】:用户指定的已存在的表)

            获取该表的详细创建语句,即该表的详细定义

3.表约束

  •   not null       (约束字段不能为空:如果插入记录时该字段传入的值为null,则报错)
  •   default [defaultValue]          (设置字段的默认值:如果插入记录时该字段传入的值为空,则该字段的值默认为【defaultValue】)
  •   unique        (设置该字段值的唯一性:如果插入记录时,该字段的值已经存在于该表的其他记录中,则报错)

create table unique_temp01(
    userId int unique,
    username varchar(100)
);

create table unique_temp02(
    userId int,
    userName varchar(100),
    constraint ukId unique(userId)
);

show create table unique_temp01;

CREATE TABLE `unique_temp01` (
   `userId` int(11) DEFAULT NULL,
   `username` varchar(100) DEFAULT NULL,
   UNIQUE KEY `userId` (`userId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
show create table unique_temp02;

CREATE TABLE `unique_temp02` (
   `userId` int(11) DEFAULT NULL,
   `userName` varchar(100) DEFAULT NULL,
   UNIQUE KEY `ukId` (`userId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 

  •  primary key       (主键约束:使得该字段成为表的主键,用以唯一标识一条记录)

<单字段主键>

create table primary_key_temp01(
    userId int primary key,
    userName varchar(100)
);
create table primary_key_temp02(
    userId int,
    userName varchar(100),
    constraint pkId primary key(userId)
);

show create table primary_key_temp01;

CREATE TABLE `primary_key_temp01` (
   `userId` int(11) NOT NULL,
   `userName` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`userId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

show create table primary_key_temp02;

CREATE TABLE `primary_key_temp02` (
   `userId` int(11) NOT NULL,
   `userName` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`userId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--------------------------------------------------------------------------------------------------------

<多字段主键:此处为userId和userName共同组成一个唯一性主键用来表示每条记录>

create table primary_key_temp001(
    userId int,
    userName varchar(100),
    constraint pkId primary key(userId,userName)
);

show create table primary_key_temp001;

CREATE TABLE `primary_key_temp001` (
   `userId` int(11) NOT NULL,
   `userName` varchar(100) NOT NULL,
   PRIMARY KEY (`userId`,`userName`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  •  auto_increment  (自增:该字段的值为自动增长)

create table auto_increment_temp01(
    userId int primary key auto_increment,
    userName varchar(100)
);

create table auto_increment_temp02(
    userId int unique auto_increment,
    userName varchar(100)
);

show create table auto_increment_temp01;

CREATE TABLE `auto_increment_temp01` (
   `userId` int(11) NOT NULL AUTO_INCREMENT,
   `userName` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`userId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

show create table auto_increment_temp02;

CREATE TABLE `auto_increment_temp02` (
   `userId` int(11) NOT NULL AUTO_INCREMENT,
   `userName` varchar(100) DEFAULT NULL,
   UNIQUE KEY `userId` (`userId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  • foreign key        (外键约束:构建A表的a字段与B表的b字段之间的参照关系,可以为null)

      <设置外键约束的两张表间具有父子关系,即子表中某个字段的取值由父表中的某字段的值的集合决定>

      <举例:万恶的社会,女孩能找哪些男的当男友,只能从现存的男的中挑,女孩的boyFriend为null就是单身哦>  

create table boy(
    boyId int primary key auto_increment,
    boyName varchar(100)
);
create table girl_US(
    girlId int primary key auto_increment,
    girlNma varchar(100),
    boyFriendId int,
    constraint fkId foreign key(boyFriendId) references boy(boyId)
);

 

insert into girl_US values(null,"ZYQ",null);

 

show create table boy;

CREATE TABLE `boy` (
   `boyId` int(11) NOT NULL AUTO_INCREMENT,
   `boyName` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`boyId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 show create table girl_US;
 
 CREATE TABLE `girl_us` (
   `girlId` int(11) NOT NULL AUTO_INCREMENT,
   `girlNma` varchar(100) DEFAULT NULL,
   `boyFriendId` int(11) DEFAULT NULL,
   PRIMARY KEY (`girlId`),
   KEY `fkId` (`boyFriendId`),
   CONSTRAINT `fkId` FOREIGN KEY (`boyFriendId`) REFERENCES `boy` (`boyId`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.修改表

  •     alter table [your_old_table_name] rename [your_new_table_name];    

               (将表名从【your_old_table】修改为【your_new_table】)       

  •    alter table [your_table_name] add [your_table_new_property] [property _type]

       (新增字段:向名为【your_table_name】的表中添加类型为【property_type】且名称为【your_table_new_property】的字段)

             1. alter table  [your_table_name] add [your_table_new_property] [property_type] first;

                        (新增字段,并指定将其添加在开头的位置)

    2.alter table [your_table_name] add [your_table_new_property] [property_type] after [existed_property]

                        (新增字段,并指定将其添加在已存在字段【existed_property】之后)

  •   alter table [your_table_name] drop [existed_property]    

                 (删除字段:从【your_table_name】表中删除【existed_property】字段)

  •   alter table [your_table_name] change [your_old_property] [your_new_property] [property_type]

         (修改字段:将【your_table_name】表中的【your_old_property】字段重命名为【your_new_property】且字段类型为【property_type】)

  •     alter atble [your_table_name] modify [your_old_property_01] [your_old_property_01_type] after [your_old_property_02]

               (修改字段的排列顺序:将【your_table_name】表中的【your_old_property】字段移动到【your_old_property_02】前面,且移动后的【your_old_property01】的类型为【your_old_property_01_type】)

  •  

转载于:https://my.oschina.net/u/3526387/blog/1540855

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值