《mysql视频7》表操作 虚拟表 创建过程 事务管理 字段约束

表操作创建表CREATE TABLE 表名 (字段名 数据类型 属性 , 字段名 数据类型 属性);表名和字段名不能重复默认允许空值,并且可以通过DEFAULT设置默认值,默认值必须是常数例如:CREATE TABLE pet2(name VARCHAR(225) NOT NULL,owner VARCHAR(225) DEFAULT 'police',species VARCHAR(225),sex CHAR(1),birth DATE,death DATE);设
摘要由CSDN通过智能技术生成

表操作

创建表
CREATE TABLE 表名 
(
字段名 数据类型 属性 , 
字段名 数据类型 属性
);

表名和字段名不能重复
默认允许空值,并且可以通过DEFAULT设置默认值,默认值必须是常数

例如:

CREATE TABLE pet2
(
name VARCHAR(225) NOT NULL,
owner VARCHAR(225) DEFAULT 'police',
species VARCHAR(225),
sex CHAR(1),
birth DATE,
death DATE
);

设置了默认值,如果在后续插入表内容的时候没有给owner赋值,那么该单元格将会是默认值police


字段约束:

  • 主键 PRIMARY KEY

      字段名 数据类型 NOT NULL PRIMARY KEY 
    
  • 外键 FOREIGN KEY

  •   字段名 数据类型 NOT NULL REFERENCES KEY 关联表 (关联列)
    

    该表与其他表关联,一定是其他表的主键

除了在创建表的时候可以用上述方法进行约束,还可以在修改表的时候约束:

  • ALTER TABLE 表名
    ADD CONSTRAINT PRIMARY KEY (列名)

  • ALTER TABLE 表名
    ADD CONSTRAINT FOREIGN KEY (列名)
    REFERENCES 关联表 (关联列)


  • UNIQUE 唯一约束:确保行数据的唯一性

      字段名 数据类型 UNIQUE 
    
      ALTER TABLE 表名
      ADD CONSTRAINT UNIQUE (列名)
    
  • CHECK 检查约束:确保行内数据满足指定条件

      字段名 数据类型 NOT NULL 
      CHECK (字段(限定条件))
    

    例如 CHECK (sale_price > 0)

      ALTER TABLE 表名
      ADD CONSTRAINT CHECK (字段(限定条件))
    

    例如CHECK (sex enum(‘M’,‘F’))

  • DEFAULT 默认值

      字段名 数据类型 DEFAULT 默认值
    

索引:

创建索引:

CREATE INDEX 索引名 ON 表名 (列名)

复制表

标准SQL语句:
SELECT 字段 INTO 新表 FROM 目标表;

mysql语句:
CREATE TABLE 表名
AS 任何select语句;

赋值的select后面是选择的列,where后面过滤的是行内容,如果想要赋值一个空表,则可以在where后面添加过滤条件 1 = 2

修改表

增删改表格的列:

ALTER TABLE 表名 ADD 字段名 数据类型 属性;
ALTER TABLE 表名 DROP 字段名1, 字段名2;
ALTER TABLE 表名 DROP COLUMN 字段名;
ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型 属性;
删除表
DROP TABLE 表名;
重命名
RENAME TABLE 表名1 TO 新表名1 , 表名2 TO ...;

虚拟表

视图VIEW,本身不包含数据,源数据发生改变,镜像也发生改变。

创建视图:

CREATE VIEW 视图名 AS 目标二维表 ;

删除视图:

DROP VIEW 视图名 ;

视图名唯一,视图可以嵌套,视图的源数据可以视图。
可以对视图进行所有SELCET 操作
尽量不要对视图进行ORDER BY 操作,有些DBMS不支持。

通过视图可以方便语句重用,实现数据过滤,隐藏复杂语句。


固化SQL语句-存储过程

在DBMS中和直接在语句提示符中语法不一样。
在这里插入图片描述

在DBMS中,写法如下:
在这里插入图片描述

执行过程(调用函数): CALL PROCEDURE 过程名();
删除过程(删除函数): DROP PROCEDURE 过程名;

输入输出类型: IN / OUT / INOUT


在mysql中直接定义过程语句如下:

在这里插入图片描述


事务管理

在进行INSERT UPDATE DELETE操作时,为了避免操作没有完全执行成功,所以需要批量执行SQL操作,使之完全执行或者完全不执行。

  • COMMIT 提交: 将SQL语句的执行结果写入数据库表中
  • ROLLBACK 回退 :撤销SQL 语句的执行结果
  • SAVEPOINT 保留点: 时间点备份,可以对其发布退回
  • RALLBACK TO 回退点

在mysql中,回车之后会自动执行COMMIT,进行存盘,此时使用ROLLBACK 并没有用。

如果要取消自动执行COMMIT,可以使用SET AUTOCOMMIT

  • 0 表示取消自动执行commit
  • 1 表示执行自动执行commit
SET AUTOCOMMIT = 0;
SET AUTOCOMMIT = 1;

取消自动执行COMMIT 之后便可以使用ROLLBACK。


开始事务管理,首先使用BEGIN 关键字

BEGIN;
在这之中执行的操作都可以被ROLLBACK回上一步
ROLLBACK;
在其中可以某一步操作之后可以保存一个或多个时间点:
SAVEPOINT save_point1;
之后又可以进行各种操作,如果想要回退到某一个时间点:
ROLLBACK TO save_point1;
确定完成之后,需要使用commit将结果存盘
COMMIT;


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值