MySQL的建表和约束

一、数据类型

MySQL中定义数据字段的类型对数据库的优化是非常重要的。
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

1.字符类型:Char(10)定长  Varchar(10)  text  blob   'abc'
2.数值类型:int  bigint  float  decimal

decimal(p,a)  p为精度    a为小数位数   decimal(5,2)  例如 999.99

 注意:建表时 整数部分超出会报错,小数部分超出,会四舍五入

3.日期类型:Date                  yyyy-MM-dd HH:mm:ss.SSS 例如:1970-1-1 0:0:0.000 
                     time                   HH:mm:ss.SSS
                     datetime            yyyy-MM-dd
                     timestamp         长整数   545445454523  

二、建表和约束

1.约束

1.1 主键约束(PRIMARY KEY)
  
主键约束:唯一、不重复、不为空;每个表都应该有一个主键,并且每一个表只能有一个主键。

语法:CREATE TABLE 表名称(
   列名称 数据类型 Primary Key,

......
    );

自动增长直接在设计表勾选即可

也可以使用字段 auto_increment

1.2 外键约束

 外键约束:外键创建在从表(副表)中,从表中的FOREIGN KEY指向主表中的PRIMARY KEY。

外键:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表的关联列必须是一个key(一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表
删除数据时,先删除从表,再删除主表

主表:CREATE TABLE 表名称(
      列名称 数据类型 Primary Key,
        ...
    );    

从表:CREATE TABLE 表名称(
        ...
        外键名称 数据类型,
        FOREIGN KEY(外键名称) REFERENCES 主表名称(主键名称),
        ...
    );

如果是已经存在的两个表

 ALTER TABLE 表名 ADD FOREIGN KEY(外键名称) REFERENCES 主表名称(主键名称);

例如:

ALTER TABLE t_student ADD FOREIGN KEY(tid) REFERENCES t_teacher(tid);

主表为t_teacher表

删除表外键:
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

约束名可在表的设计 ---->外键 的第一列

1.3 非空值约束

非空值约束:用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

语法:CREATE TABLE 表名称(
        列名称 数据类型 NOT NULL,
        ...
    );    

1.4 唯一约束(UNIQUE)

新增唯一约束:
  ALTER TABLE 表名 ADD UNIQUE INDEX(列名称1[,列名称2,..]);


删除唯一约束:其实就是删除指定的唯一约束的索引名称
  ALTER TABLE 表名 DROP INDEX 唯一约束缩影名称;

1.5 默认约束(DEFAULT)

    默认值约束:指定列的默认值。
    语法:CREATE TABLE 表名称(
        列名称1 数据类型 DEFAULT '默认值',
        列名称2 数据类型,
        列名称3 数据类型,
        ...
    );   

三、修改表结构

1)新增语法:alter table 表名称 add column 列名 数据类型(约束);
2)删除语法:alter table 表名称 drop column 列名;
3)修改语法:alter table 表名称 modify column 列名 数据类型;     

注:ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

①修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
​例如:将sname列改为bname

 ALTER TABLE t_student CHANGE COLUMN sname bname varchar(20);
②修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;

③添加新列
ALTER TABLE author ADD COLUMN annual (字段类型);

④删除列
ALTER TABLE book_author DROP COLUMN annual;

⑤修改表名
ALTER TABLE author RENAME TO book_author;

查询表结构
DESC book;

查看t_student中的所有索引,包括主键、外键、唯一
SHOW INDEX FROM t_student;

四、数据库四大语言


ddl  数据库结构定义语言  alert  creat
dml 数据库数据操作语言  insert update delete
dql 数据库数据查询语言   select
dcl  数据库事务语言  rollback commit 

五、表的复制

1.仅仅复制表的结构
CREATE TABLE copy LIKE author;

2.复制表的结构+数据
CREATE TABLE copy2
SELECT * FROM author;

3.只复制部分数据
CREATE TABLE copy3
SELECT id,au_name
FROM author
WHERE nation='中国';


4.仅仅复制某些字段
CREATE TABLE copy4
SELECT id,au_name
FROM author
WHERE 0=1;

                             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值