MySQL的CRUD(三)


Create(增) Retrieve(检索) Update(修改) Delete(删除)

一、关键子(union,distinc,ifnull(,),in)

案例: 找出工作岗位是SALEAMAN和MANNGER的员工?

select e.ename from emp e where e.job = 'salesman' or e.job = 'manager';
select ename,job from emp where job in('salesman','manager');
select ename,job from emp where job = 'manager'
union
select ename,job from emp where job = 'salesman';

二、limit(重点中的重点,以后分页查询全靠它)

  1. limit是mysql特有的,其他数据库中都没有,不通用。(Oracle中有一个相同的机制,叫做rownum)

  2. limit取结果集中的部分数据,这是它的作用。

  3. 语法机制
    limit startIndex,length
    startIndex表示起始位置
    length表示取几个

  4. 案例: 取出工资前5名的员工(思路:降序取前5个)

select ename,sal from emp order by sal desc limit 0,5;
select ename,sal from emp order by sal desc limit 5;
  1. limit是sql语句最后执行的一个环节:
    select … from … where … group by … having … order by … limit …;
    5 1 2 3 4 6 7
  2. 通用的标准分页sql?

每页显示3条记录
第一页:0,3
第二页:3,3
第三页:6,3

每页显示pageSize条记录
第pageNo页:(pageNo - 1)* pageSize , pageSize

pageSize是什么? 是每页显示多少条记录
pageNo是什么? 显示第几页

java代码{
int pageNo = 2; // 页码是2
int pageSize = 10; // 每页显示10条

limit (pageNo - 1) * pageSize , pageSize
}

三、创建表:

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

关于MyQSL当中字段的数据类型?以下只说常见的

数据类型描述
int整数型 (java中的int)
bigint长整型
float浮点型
char定长字符串 (String)
varchar可变长字符串 (对应Java中的java.sql.Date类型)
date日期类型 (对应java中的java.sql.Date类型)
BLOB二进制大对象 (存储图片、视频等流媒体信息)
CLOB字符大对象 (存储较大文本,比如,可以存储4G的字符串)

char和varchar怎么选择?

  • 当实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长,例如:性别、生日等都是采用char。
  • 当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。

表名在数据库当中一般建议以: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)
);

四、insert语句插入数据

语法格式:
insert into 表名(字段名1,字段名2,字段名3,…) values(值1,值2,值3,…)

要求:字段的数量和值的数量相同,并且数据类型要对应相同。

insert into t_student(no,name,sex,classno,birth) 
values(1,'zhangsan','1','gaosan1ban','1950_10_12');

在这里插入图片描述

drop table if exists t_student;  // 当这个表存在的话删除。

需要注意的地方:
当一条insert语句执行成功之后,表格当中必然会多一行记录。
即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行
insert语句插入数据了,只能使用update进行更新。

insert into t_student values(2,'rose','2','gansan1ban','1999-02-25');

//多行插入 value( ),( ),( ),…

五、表的复制

语法
create table 表名 as select语句;

将查询结果当做表创建出来

将查询结果插入一张表中?
语法
insert into 表名 select语句;

六、修改数据:update

语法格式:
update 表名 set 字段1=值1,字段名2=值2… where 条件;

注意:没有条件整张表数据全部更新。

**案例:**将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU

update dept1 set loc = 'SHANGHAI', dname = 'RENSIBU' where deptno = 10;

七、删除数据?

语法格式:
delete from 表名 where 条件;

注意:没有条件全部删除。

删除10部门数据?

delete from dept1 where deptno = 10;

删除所有记录?

delete from dept1;

怎么删除大表中的数据?(重点)

truncate table emp1; // 表被截断,不可回滚。永久丢失

删除表?

drop table 表名;
drop table if exists 表名; // oracle不支持这种写法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值