MySQL数据库笔记5——表的创建及数据的增删改

1.创建表
建表语句的语法格式:
   create table 表名(
      字段名1 数据类型,
      字段名2 数据类型,
      字段名3 数据类型,
      …
   );

(1)关于MySQL中字段的(常见)数据类型?
在这里插入图片描述
      此外还有BLOB(二进制大对象,存储图片、视频等流媒体信息)、CLOB(字符大对象,存储较大文本,如可存储4G字符串)。Varchar最多存储255个字符。

(2)char和varchar怎么选择?
      某一字段数据类型为char(6)时,不论其输入几个字符,都无条件的分配6个存储空间,输入字符超过6个,报错;若其数据类型为varchar(6)时,输入的是几个字符,就分配几个存储空间,若输入字符超过6个,报错。
      在实际开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如性别可以采用char;当一个字段的数据长度不确定,例如简介、姓名等都是采用varchar。

(3)BLOB和CLOB类型的使用?
在这里插入图片描述
      一般来说,较大的视频、图片、文本不会直接存储在数据库中。字段数据类型为BLOB和CLOB类型的数据不能通过insert插入数据库中,只能通过java的IO流插入。
(4)表名在数据库中一般建议以:t_或者tbl_开始。

案例:创建学生表:
学生信息包括:学号(bigint)、姓名(varchar)、性别(char)、班级编号(int)、生日(char)
create table t_student(
      no bigint,
      name varchar(255),
      sex char(1),
      classno varchar(255),
      birth char(10)
);

2.insert语句插入数据
语法格式:insert into 表名(字段名1,字段名2,字段名3…) values (值1,值2,值3…)
要求:字段的数量和值的数量一致,并且数据类型要对应相同。

案例1:插入一行数据:
insert into t_student(no,name,sex,classno,birth) values(1,‘zhangsan’,‘1’,‘gaosan1ban’,‘1950-10-12’);
或者
insert into t_student(name,sex,classno,birth,no) values(‘lisi’,‘1’,‘gaosan1ban’,‘1950-10-12’,2); //字段顺序可以调换,只要能与后面的值对应上
或者
insert into t_student(name) values(‘wangwu’); //除name之外,剩下的所有字段自动插入NULL
或者
insert into t_student values(1,‘Jack’,‘1’,‘gaosan1ban’,‘1950-10-12’); //字段可以不写,但后面的值的数量和顺序要对应好

drop table if exists t_student; //当这个表存在的话删除
create table t_student(
      no bigint,
      name varchar(255),
      sex char(1) default 1,
      classno varchar(255),
      birth char(10)
);//当插入一条数据,不给sex插入值时,sex字段的默认值是1

案例2:一次插入多行数据:
insert into t_student(no,name,sex,classno,birth) values(3,‘rose’,‘1’,‘gaosan2ban’,‘1950-10-12’),(4,‘Marry’,‘1’,‘gaosan2ban’,‘1950-10-12’);

3.表的复制
语法:create table 表名 as select语句;
将查询结果当做表创建出来。

4.将查询结果插入到一张表中
语法:insert into 表名 select语句;

5.修改数据
语法格式:update 表名 set 字段名1=值1,字段名2=值2…where 条件;
注意:没有条件整张表数据全部更新。

案例:将部门10的LOC修改为’SHANGHAI’,将部门名称修改为’RENSHIBU’?
update dept1 set dname = ‘RENSHIBU’,LOC = ‘SHANGHAI’ where deptno = 10;

6.删除数据
语法格式:delete from 表名 where 条件;
注意:没有条件全部删除。

案例1:删除部门号为10的数据?
delete from dept1 where deptno = 10;

案例2:删除所有记录?
delete from dept1;

案例3:怎么删除大表中的数据?(重点)
用delete删除大表的效率非常慢。
truncate table emp1; //表被截断,不可回滚,永久丢失。

案例4:删除表?
drop table 表名; //通用
drop table if exists 表名; //Oracle不支持这种写法

7.对于表结构的修改,使用工具完成即可。因为在实际开发中,一旦表设计好之后,对表结构的修改是很少的,修改表结构就是对之前的设计进行了否定,即使需要修改表结构,我们也可以直接使用工具操作。修改表结构的语句不会出现在Java代码中,出现在Java代码当中的sql包括:insert、delete、update、select。
增删改查有一个术语:CRUD操作(create、retrieve、update、delete)。

8.truncate与delete的区别?
1> truncate 是整体删除 (速度较快),delete是逐条删除 (速度较慢)。
2> truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete高的原因。
3> truncate 不激活trigger (触发器),但是会重置Identity (标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的 ID数。而 delete 删除以后,identity 依旧是接着被删除的最近的那一条记录ID加1后进行记录。如果只需删除表中的部分记录,只能使用 DELETE语句配合 where条件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值