union(将查询结果做并集,就是将不相干的表拼接在一起,列的数量需要相同)
select ename, job from emp where job = 'xxx'
union
select ename, job from emp where job = 'yyy';
limit(分页查询):
- mysql特有,不通用(oracle有相同机制,叫rownum)
- 取结果集中的部分数据
- 语法机制:limit startIndex,length(startIndex表示起始位置,length表示取几个)
- 是sql语句最后执行的环节
例:
select ename, sal from emp order by sal desc limit 0, 5;
limit后直接写5也可以,表示从0开始
select 5
...
from 1
...
where 2
...
group by 3
...
having 4
...
order by 6
...
limit 7
...;
通用的标准分页sql:
- 每页显示3条记录
第一页:0,3
第二页:3,3
第三页:6,3
第四页:9,3
…
第pageNo页:(pageNo-1)*pageSize,pageSize
创建表:
- 建表语句的语法:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
...
);
- mysql中常见的字段数据类型:
int:整数
bigint:长整数
float:浮点数
double:小数
char:定长字符串(指定长度)
varchar:可变长字符串,最多255个字符
date:日期
BLOB:二进制大对象(binary large object存储图片视频等流媒体信息)
CLOB:字符大对象(character large object存储大文本) - 表名一般以t_或tbl_开始
create table t_student(
no bigint,
name varchar(255),
sex char(1) default 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, 'yang', '1', '1 ban', '1996-10-19');
省略t_student后面的括号,values里面的顺序就要严格按照表格顺序,列的数量也要相同:
insert into t_student values();
一次插入多行数据,用逗号隔开:
insert into t_student values(), ();
- 删除表格:
drop table if exists t_student;
- 表的复制:
将查询结果当作表创建出来:
create table 表名 as select语句;
将查询结果插入表:
insert into 表名 select语句;
- 修改表中的数据:
update 表名 set 字段名1 = 值1, 字段名2 = 值2, ... where 条件;
没有条件则整张表全部更新
例:
update dept1 set loc = 'shanghai', dname = 'population' where deptno = 10;
- 删除数据:
delete不释放空间,可以回滚,效率低
delete from 表名 where 条件;
没有条件全部删除
- 删除大表(数据量特别大的表):
truncate释放空间,不能回滚,永久丢失,效率高
truncate table 表名;
- 增删改查:
CRUD
create:增
retrieve:检索
update:改
delete:删
约束(constraint):
在创建表的时候,可以对表的字段添加约束,保证数据的完整性,合法性,有效性
常见的约束:
- 唯一性约束(unique):字段不能重复
- 非空约束(not null):字段不能为空
- 主键约束(primary key):即不能为空,也不能重复
- 外键约束(foreign key)
- 检查约束(check,Oracle数据库有,但MySQL不支持)
非空约束 not null:
drop table if exists t_user;
create table t_user(
id int,
username varchar(255) not null,
password varchar(255)
);
insert into t_user(id, username, password) values(1, 'yang', '123');