mysql表创建

    技术2024-04-22  245

     

    四,

    1,表的创建

    2,表的复制

     定义:将查询结果当作一张表创建

    诧法结构:CREATE TABLE 表名 as select查询诧句;

    1) 完全复制emp表到emp1create table emp1 as select * from emp;

    2) 选择性复制emp表到emp2:create table emp2 as select ename,sal from

    emp;

    将查询结果插入到某张表中

    诧法结构: INSERT INTO 表名 select查询诧句;

    insert into emp_bak select * from emp2 where sal = 3000;

    3,/ / 改 表结构

    3.1语法结构:

    1) 新增:ALTER TABLE 表名 ADD 字段名 字段类型(长度);

    2) 修改:ALTER TABLE 表名 MODIFY 字段名 字段类型(长度);

    3) 删除:ALTER TABLE 表名 DROP 字段名;

     

    添加 / 修改 / 删除 表数据

    DML数据操作诧句:insert update delete

    4,1 insert into 表名(字段名1,字段名2,…) values(

    1,2,…);

    1) 如何插入日期

    a) 第一种方式:插入的日期格式和MySQL默认日期格式一致

    insert into t_student(no,name,birth) values(1,'Jack','1980-10-19');

    b) 第二种方式:采用str_to_date

    insert into t_student(no,name,birth) values(1,'Jack',str_to_date('1980-10-19','%Y-%m-%d'));

    c) 第三种方式:添加系统日期(now()

    insert into t_student(no,name,birth) values(1,'Jack',now());

    2) 表复制

    定义:将查询结果当作一张表创建

      CREATE TABLE tableName1 AS SELECT column1,column2,… FROM tableName2;

    4.2  

    update 修改数据

    诧法格式:UPDATE 表名 SET 字段名 = 字段值,字段名 = 字段值 WHERE 条件;

    注意:update如果没有条件限制,将把整张表的数据全部更新;

    update emp_bak set sal=sal*1.1 where job in ('MANAGER','SALESMAN');

     

    4.3

    delete 删除数据

    诧法格式: DELETE FROM 表名 WHERE 条件限制;

    注意:若没有条件限制,会将表中所有记录全部删除;

    delete from t_student where no = 3;

     5

    创建表加入约束

    Ø 英文单词:constraint

    Ø 什么是约束?

    实际上是对表中数据的限制条件;

    Ø 设计表时加入约束的目的?

    保证表中数据的完整和有效;

    5.1 非空约束(not null

    作用:not null约束的字段丌能为 NULL 值,必须赋具体数据;

    示例:需求如下所示:创建t_user表,name字段丌能为空

    Create  table t_user(

         Id  int(10),

         Name   varchar(32) not null

    );

    5.2 唯一性约束(unique

    作用:unique约束的字段具有唯一性,丌可重复示例:创建t_user表,name丌能为空,email保证唯一

    (1)方法一:【列级约束】保证邮箱email地址唯一

    Email  varchar(128) unique

    注意:”unique约束约束的字段丌能重复,但是可以为NULLNULL不是一个值,也不能用 等号比较;

    (2)方法二:【表级约束】保证邮箱email地址唯一

    unique(email)

    Create  table t_user(

         Id  int(10),

         Name   varchar(32) not null,

    email   varchar(128),

    unique(email)

     

    );

    (3)使用表级约束给多个字段联合添加约束:

     

    Create  table t_user(

         Id  int(10),

         name   varchar(32) not null,

    email   varchar(128),

    unique(name,email)

     

    );

    (4)组合使用 not null unique

    作用:被 not null unique 约束的字段,该字段即丌能为null 也丌能重复;

    示例: 需求,创建t_user表,用户编号为id,用户名称name即丌能为空也丌能重复

    Create  table t_user(

         Id  int(10),

         name   varchar(32) not null unique

    );

    5.3 主键约束PKprimary key

     

    主键约束 primary key 简称 PK

    (1)主键作用

    1) 添加主键primary key的字段即不能重复也不能为空,效果与“not null nuique”相同, 但本质是不同的,添加主键约束之后,主键不仅会有“not null unique”作用,而且 主键字段还会自动添加“索引 — index”

    2) 一张表应该有主键,若没有,表示这张表是无效的【联想:数据库设计第一范式】, “主键值”是当前行数据的唯一标识,“主键值”是当前行数据的身份证号;(即使 表中两行数据完全相同,但是由于主键不同,我们也认为这是两行完全不同的数据)

    (2)主键根据个数分类:单一主键、复合主键

    1)【单一主键】是给一个字段添加主键约束;

    a)创建单一主键约束【列/表级】

    【列级】单一主键约束:id int(10) primary key

    Create  table t_user(

         Id  int(10) primary  key,

         name   varchar(32) not null unique

    );

    【表级】单一主键约束:

    表级单一主键命名:constraint t_uer_id_pk primary key(id)

    Create  table t_user(

         Id  int(10) ,

         name   varchar(32) not null unique,

    primary  key(id)

    );或

    Create  table t_user(

         id  int(10) ,

         name   varchar(32) not null unique,

    Constraint  t_user_id_pk primary  key(id)

    );

    2)【复合主键】是给多个字段联合添加一个主键约束;

    需求:创建t_user表包含id,name,emailidname是复合主键

    primary key(id,name)

    Create  table t_user(

         id  int(10) ,

         name   varchar(32) not null unique,

      primary  key(id,name)

    );

    a) 复合主键命名:

    constraint t_user_id_name_pk primary key(id,name)

     

    Create  table t_user(

         id  int(10) ,

         name   varchar(32) not null unique,

    Constraint  t_user_id_pk primary  key(id,name)

    );

    (3)无论是单一主键还是复合主键,一张表中主键约束只能有一个

    (4)主键根据性质分类:自然主键、业务主键

    1) 自然主键:主键值若是一个自然数,并且这个自然数不业务没有仸何关系,这种主 键称为自然主键;

    2) 业务主键:主键值若和当前表中的业务紧密相关,那么这种主键值被业务主键;如 果业务发生改变时,业务主键往往会受到影响,所以业务主键使用较少,大多情况 使用自然主键。 【如:身仹证号位数扩展】

    (5)MySQL中自劢生成主键值(MySQL特有)

    1) 定义:MySQL数据库管理系统中提供了一个自增数字auto_increment,与门用来自

    劢生成主键值,主键值丌需要用户去维护,也丌需要用户生成,MySQL会自劢生成。

    自增数字默认从1开始,以1递增:1234

    2)示例: 递增关键字:auto_increment

    Create  table t_user(

         id  int(10) primary key auto_increment ,

         name   varchar(32) not null unique

     );

    5.4 外键约束FKforeign key

    (1) 外键约束 foreign key 简称:FK

    (2)外键涉及到的术语:外键约束、外键字段、外键值

    (3) 外键约束、外键字段、外键值三者之间的关系?

    给某个字段添加外键约束之后,该字段称为外键字段,外键字段中的数据称为外键值;

    外键根据个数分为:单一外键、复合外键

     

    1) 【单一外键】:给一个字段添加外键约束

    2) 【复合外键】:给多个字段联合添加一个外键

     外键在同一张表中可以有多个外键存在

    1、外键字段可以为NULL,外键为空的数据也叨孤儿数据

    2、被引用字段必须具有unique约束

    3、有了外键引用之后,表分为父表和子表,以上父表:班级表 t_class; 子表是:学生 表 t_student;创建表时先创建父表,再删除子表;插入数据时,先插入父表数据 再插入子表数据;

    create  table t_class(

        cno  int(3) primary key   ,

         name   varchar(32) not null unique

     );

    create  table t_student(

    sno  int(3) primary key   ,

    sname  rchar(32) not null unique,

    Classno int(3),

    Constraint t_student_classno_fk  foreign_key(classno)  references t_class(cno)

        );

     

    MySQL中没有提供修改外键约束的诧法功能*

     

    5.5 级联更新不级联删除

    用法:在添加级联更新不级联删除的时候,需要在外键约束后面添关键字;

    注意:级联更新不级联删除操作谨慎使用,因为级联操作会将数据改变戒 者删除【数据无价】

    (1)级联删除:on delete cascade

    定义:在删除父表数据的时候,级联删除子表中数据;

    a) 删除外键约束

    诧法: ALTER TABLE 表名 DROP FOREIGN KEY 外键字段;

    Alter table t_student drop  foreign key t_student_classno_fk;

    b) 添加外键约束及级联删除功能

    诧法:ALTER TABLE 表名 

    ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段)

    REFERENCES 引用表名(引用表中字段名称) ON DELETE CASCADE;

    Alter  table t_student add

     Constraint  t_student_classno_fk  foreign key (classno)

     Refsrences  t_class(cno)

    On  delete cascade;

    c) 级联删除—完整示例

    第一步:删除t_student中的外键

    alter table t_student drop foreign key t_student_classno_fk

    第二步:增加t_student_classno_fk外键,幵加入级联删除 on delete cascade;

    第三步:删除t_class表中班级编号为200的信息,包括所在班级的学生信息

     

    级联更新:on update cascade

    定义:在更新父表中数据的时候,级联更新子表中数据;

    a) 删除外键约束(没有修改外键约束诧法)

    诧法: ALTER TABLE 表名 DROP FOREIGN KEY 外键字段;

    b) 更新外键约束和添加级联更新功能

    诧法:ALTER TABLE 表名 

    ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段)

    REFERENCES 引用表名称(引用表字段) ON UPDATE CASCADE;

     

    Processed: 0.039, SQL: 9