文章目录
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(重点中的重点,以后分页查询全靠它)
-
limit是mysql特有的,其他数据库中都没有,不通用。(Oracle中有一个相同的机制,叫做rownum)
-
limit取结果集中的部分数据,这是它的作用。
-
语法机制
limit startIndex,length
startIndex表示起始位置
length表示取几个 -
案例: 取出工资前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;
- limit是sql语句最后执行的一个环节:
select … from … where … group by … having … order by … limit …;
5 1 2 3 4 6 7 - 通用的标准分页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不支持这种写法