mysql项目使用---针对表结构,字段约束的操作(大全)

实习近半年了,关于建表,修改表字段,添加修改表约束,相对熟悉了,特此将所有操作方式总结一遍,话不多说-----> Start

1. 建表语句
create table tb_emp(
 id int primary key auto_increment, --auto_increment只是MySQL特有的
 Name varchar(18) not null,
 sex varchar(2) null default '男', --添加默认值
 age int,
 address varchar(200),
 email varchar(100),

primary key(id) --添加主键也可以这样写  注意此处只是提醒所用,此方式和上面方式只能存在一个
);
 drop table tb_dept; --删除表

2.修改列类型(重要

tips:修改前要保证该字段的数据都为空

 #只有当字段只包含空值时才可以修改。
 alter table tb_emp modify sex  varchar(4);
 #增加列
  alter table tb_emp add tel varchar(12);
 #删除列
  alter table tb_emp drop tel;
  alter table tb_emp drop column tel;
 #列改名
  alter table tb_emp change Name emp_Name varchar(18);
 #更改表名1
  alter table tb_emp rename emp;
 #更改表名2
  rename table emp to tb_emp;
 #插入数据
  insert into dept_emp (Name,sex,age,address,email)values('','','','','');

3.表约束相关操作(重要,项目中用的少但还是会用,导致每次用都要去找,建议记熟

就我而言接触的所有约束(比较全面)

1.非空约束(not null)

添加非空约束

1)建表时直接添加

CREATE TABLE t_user(user_id INT(10) NOT NULL);

2)通过ALTER 语句

ALTER TABLE t_user MODIFY user_id INT(10) NOT NULL;

ALTER TABLE t_user CHANGE user_id user_id INT(10) NOT NULL;

删除非空约束  --删除倒是需要多注意下

1)ALTER TABLE t_user MODIFY user_id INT(10);

2)ALTER TABLE t_user CHANGE user_id user_id INT(10);

2.主键约束(primary key------2种方法添加

添加主键约束

1)建表时直接添加

CREATE TABLE t_user(user_id INT(10) PRIMARY KEY);

CREATE TABLE t_user(

user_id INT(10),

user_name VARCHAR(30),

CONSTRAINT PK_ID_NAME PRIMARY KEY(user_id,user_name)#复合约束

);

CREATE TABLE t_user(

user_id INT(10),

PRIMARY KEY(user_id)

);

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) PRIMARY KEY;

ALTER TABLE t_user CHANGE user_id user_id INT(10) PRIMARY KEY;

ALTER TABLE t_user ADD PRIMARY KEY(user_id);

ALTER TABLE t_user ADD CONSTRAINT PK_ID PRIMARY KEY(user_id);

tips:删除主键约束前,如果有自增长需要先删除自增长,如果不删除自增长就无法删除主键约束

删除主键约束

1)ALTER TABLE t_user DROP PRIMARY KEY;

注:主键约束相当于(唯一约束+非空约束)

3.外键约束(foreign key)
tips:外键约束将从表的某个字段和另一张主表的字段(外键的字段在另一个表中不能重复且字段类型和长度必须相同)关联,保证数据的完整性和一致性

  • 添加外键约束
首先创建两张表:class,students

主表:

CREATE TABLE class(

cla_id INT(6) AUTO_INCREMENT PRIMARY KEY,

cla_name VARCHAR(30) NOT NULL UNIQUE

);

从表:

CREATE TABLE students(

stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,

stu_name VARCHAR(30) NOT NULL,

stu_score FLOAT(5,2) DEFAULT 0.0,

cla_id INT(10),

CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id)#添加外键约束

);

第二种方式:

ALTER TABLE students ADD CONSTRAINT FK_CLA_ID FROEIGN KEY(cla_id) REFERENCES class(cla_id);

  • 删除外键约束
删除外键约束

ALTER TABLE students DROP FOREIGN KEY FK_CLA_ID;
  • 外键约束的级联关系
    ON DELETE CASCADE 删除主表中的数据时,从表中的数据随之删除
    ON UPDATE CASCADE 更新主表中的数据时,从表中的数据随之更新
    ON DELETE SET NULL 删除主表中的数据时,从表中的数据置为空
    默认 删除主表中的数据前需先删除从表中的数据,否则主表数据不会被删除
--更改级联关系如下
CREATE TABLE students(

stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,

stu_name VARCHAR(30) NOT NULL,

stu_score FLOAT(5,2) DEFAULT 0.0,

cla_id INT(10),

CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON DELETE SET NULL

);

原文链接:https://blog.csdn.net/a909301740/article/details/62887992
4检查约束.约束(check())
tips:mysql中可没有check哟,但是用了不会报错,只是没有效果

CREATE TABLE class(

cla_id INT(6) AUTO_INCREMENT PRIMARY KEY,

cla_name VARCHAR(30) NOT NULL UNIQUE,

CHECK(cla_id>0)

);

5.唯一约束(unique)唯一键和主键的一个区别是:唯一键允许为空,但是主键不能为空!

其他

一、AUTO_INCREMENT(自增长)
tips:一张表只能有一个自增长列,并且该列必须定义了约束(可以是主键约束,也可以是唯一约束,也可以是外键约束,但是不可以是非空和检查约束)
不过自增长一般配合主键使用,并且只能在数字类型中使用

  • 添加自增长
1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) AUTO_INCREMENT PRIMARY KEY);

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) AUTO_INCREMENT;

ALTER TABLE t_user CHANGE user_id user_id INT(10) AUTO_INCREMENT;

  • 删除自增长
ALTER TABLE t_user MODIFY user_id INT(10);

ALTER TABLE t_user CHANGE user_id user_id INT(10);

二.ZEROFILL(零填充)
tips:零填充是当数据未达到数据类型定义的长度时,会将通过填充零达到所定义长度,比如某字段数据类型为INT(5),而插入的值为2,那么零填充会显示00002
但是,这个效果在Navicat for MySQL中显示不出来,只有在DOS窗口下才能显示

  • 添加零填充
1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) ZEROFILL);

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) ZEROFILL;

ALTER TABLE t_user CHANGE user_id user_id INT(10) ZEROFILL;

删除零填充

ALTER TABLE t_user MODIFY user_id INT(10);

ALTER TABLE t_user CHANGE user_id user_id INT(10);

三.DEFAULT(默认)

添加默认约束

1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) DEFAULT  3);

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) DEFAULT  2;

ALTER TABLE t_user CHANGE user_id user_id INT(10) DEFAULT  2;

删除默认约束

ALTER TABLE t_user MODIFY user_id INT(10);

ALTER TABLE t_user CHANGE user_id user_id INT(10);

四.UNSIGNED(无符号位)
tips:无符号作用于数值类型,就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。

添加无符号

1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) UNSIGNED);

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) UNSIGNED;

ALTER TABLE t_user CHANGE user_id user_id INT(10) UNSIGNED;

删除无符号

ALTER TABLE t_user MODIFY user_id INT(10);

ALTER TABLE t_user CHANGE user_id user_id INT(10);



 

index(表索引)

  • 普通索引
CREATE  TABLE  index1 (id    INT , 
name   VARCHAR(20) , 
sex    BOOLEAN , 
INDEX ( id)  --此处建普通索引 自动生成名称 表名_字段名
);
第二种方式
ALTER TABLE `sj_projects` ADD UNIQUE `unique_id` (`unique_id`);  -- 唯一索引

ALTER TABLE `sj_projects` ADD INDEX `unique_id` (`unique_id`);    -- 普通索引

ALTER TABLE `sj_projects` ADD INDEX `uniqueId` (`unique_id`);    -- 普通索引可以修改名字

第三种方式
CREATE  INDEX indexName ON mytable(username(length))

删除索引
ALTER TABLE testalter_tbl DROP INDEX (c);
  • 唯一索引
建表时创建
CREATE TABLE `sj_projects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '项目名称',
`platform_id` int(11) NOT NULL DEFAULT '0' COMMENT '平台id',
`term` varchar(50) NOT NULL DEFAULT '' COMMENT '期限',
`type` int(11) NOT NULL DEFAULT '0',
`PageUrl` text COMMENT '注意大小写PageUrl',
`insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`orderby_id` int(11) NOT NULL DEFAULT '1' COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 0为关闭,1为开启',
PRIMARY KEY (`id`),
KEY `unique_id` (`unique_id`) USING BTREE --此处为唯一索引
) ENGINE=InnoDB AUTO_INCREMENT=2383 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='项目表';

第二种方式
ALTER TABLE `sj_projects` ADD UNIQUE `unique_id` (`unique_id`);  -- 唯一索引

ALTER TABLE `sj_projects` ADD INDEX `unique_id` (`unique_id`);    -- 普通索引

ALTER TABLE `sj_projects` ADD INDEX `uniqueId` (`unique_id`);    -- 普通索引可以修改名字
第三种方式
CREATE UNIQUE INDEX indexName ON mytable(username(length))

删除索引
ALTER TABLE testalter_tbl DROP INDEX (c);
  • 全文索引
CREATE  TABLE  index3 (
id    INT  , 
info   VARCHAR(20) , 
FULLTEXT  INDEX  index3_info ( info ) 
)ENGINE=MyISAM;

删除索引
ALTER TABLE testalter_tbl DROP INDEX (c);

从查询information_schema中查询指定表中的约束

USE INFORMATION_SCHEMA;

SELECT CONSTRAINT_NAME FROM TABLE_CONSTRAINTS WHERE TABLE_NAME='student';

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值