MySQL学习(七)

十九、插入数据

在之前的文章中,select一直是我们学习的重点,接下来我们讲学习其他的SQL语句,第一个就是insert

数据插入

insert是用来插入(或添加)行到数据库表中。插入有一下几种方式:

  • 插入完整的行
  • 插入行的一部分
  • 插入多行
  • 插入某些查询的结果

插入完整的行

insert into 表名 values (列表值)
在这里插入图片描述
这样的编写依赖特定列次序的SQL语句是不安全的,编写安全的insert语句
insert into customers(列名) value (列名值)
在这里插入图片描述
省略列: 如果表的定义允许,则可以在insert操作中省略某些列。省略的列必须满足一下某个条件:

  • 该列定义为允许null值(无值或空值)。
  • 在表定义中给出默认值。这表示如果不给出值,将使用默认值

提高整体性能: 数据库经常被多个客户访问,对处理什么请求以及什么次序处理管理是MySQL的任务。insert操作可能很耗时,而且可能降低等待处理的select语句的性能。
通过在insert 和into之间添加关键字low_priority,指示降低insert语句的优先级。

插入多个行

insert可以插入一行到一个表中,可以使用多条insert语句,甚至一次提交它们,每个语句用一个分号结束:
在这里插入图片描述
提高insert的性能: 此技术可提高数据库处理的性能,因为MySQL用单条insert语句处理多个插入比使用多条insert语句块。

插入检索出的数据

insert一般用来给表插入一个指定列值的 行,还可以利用它将一条select语句的结果插入表中。将另一个表中列表合并到另一个表的,不需要读取一行,再将它用Insert插入。
insert select中的列名: 不一定要求两个表的列名匹配。

二十、更新和删除数据

更新数据

更新表中数据,使用update,采用两种方式使用update:

  • 更新表中特定行(不要省略where子句)
  • 更新表中的所有行

update 表名 set 列名='新值' where 条件
update的使用条件:

  • 要更新的表
  • 列名和他们的新值
  • 确定要更新行的过滤条件

ingore关键字: 在使用update语句更新多行,当出现一行或多行出现一个错误,可使用ingore关键字,忽略继续进行更新。

删除数据

从一个表中删除数据,。使用delete语句,有两种使用delete:

  • 从表中删除特定的行(不要省略where子句)
  • 从表中删除所有的行

delete from 表名 where 条件
delete删除表的内容而不是表,可以删除表中的所有行,但是不删除表本身。truncate语句完成相同的工作但是速度更快。truncate实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据。

更新和删除的指导原则

使用update或delete所遵循的习惯:

  • 除非确实要删除一行或者更新一行,否则绝对不要使用不带where子句的update或delete语句
  • 保证每个表都有主键,尽可能像where子句那样使用它(可以指定各主键、多个值或值的范围)
  • 在对update或delete语句使用where子句前,应该先用select进行测试,保证它过滤的是正确的记录,以防编写的where子句不正确。
  • 使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据数据的行。

MySQL没有撤销按钮。应该非常小心使用update或delete,否则会发现自己更新或删除了错误的数据。

二十一、创建或操纵表

创建表

创建表的方法有两种:

  1. 使用具有交互式创建和管理表的工具
  2. 表也可以直接使用MySQL语句操纵

表创建基础

利用MySQL的create table语句创建表

  • 新表的名字,在关键字create table之后给出
  • 表列的名字和定义, 用逗号分隔

使用null值

null值就是没有值或者缺值。允许null值的列也允许在插入行时不给出该列的值;不允许null值的列不接受该列没有值的行。

主键再介绍(primary key)

主键值必须唯一,即表中的每个行必须具有唯一的主键值,如主键使用单个列,则它的值必须唯一。

使用auto_increment

自动增量

指定默认值

使用default关键字指定
与DBMS不一样,MySQL不允许使用函数作为默认值,只支持常量。我们平时开发习惯使用默认值而不是null值,特别是对用于计算或数据分组的列更是如此。

引擎类型

MySQL与其他DBMS不一样,具有多种引擎,打包多个引擎,都隐藏在MySQL服务器内。了解几个引擎:

  1. InnoDB是一个可靠的事务处理引擎,不支持全文本搜索
  2. MEMORY在功能上等同于MyISAM,但由于数据存储在内存中,速度很快;
  3. MyISAM是一个性能极高的引擎,支持全文本搜索,但不支持事务处理

外键不能跨引擎,混用引擎类型有一个大缺陷,外键不能跨引擎,即使用一个引擎的表不能引用具有不同引擎的表的外键

更新表

使用alter table更新表

  • 在alter table之后给出要更改的表名
  • 所做更改的列表

复杂的表结构更改一般需要手动删除过程:

  • 用新的列布局创建一个新表
  • 使用insert select语句从旧表复制数据到新表,如有必要,可使用转换函数和计算字段
  • 检验包含所需数据数据的新表
  • 重命名旧表
  • 用旧表原来的名字重命名新表
  • 根据需要,重新创建触发器、存储过程、索引和外键

删除表

drop table完成删除表

重命名表

rename table重命名表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值