1.distinct去重
select distinct 字段1,字段2...from 表名;
注意:distinct只能出现在所以字段的最前面。
2.连接查询
根据表的连接方式来划分:
内连接:等值连接、非等值连接、自连接。
select ... from ... join...on...
外连接:左连接、右连接。
select ... from ... left join...on...(往哪边,哪边就是主表)
全连接(少用忽略!!!)
思考:内连接和外连接有什么区别?
如果有A、B两张表进行内连接,就没有主副表之分,两张表是平等的。
如果有A、B两张表进行外连接,则有一张表是主表,有一张表是附表,
如果副表中的数据没有与主表中的数据匹配上,则自动拟出NULL与之匹配。
3.子查询
select语句当中嵌套select语句,被嵌套的select语句是子查询。
子查询可以出现在哪里?
select
..(select).
from
..(select).
where
..(select).
4.union查询结果集相加
可以将两张想干或不相干的表中数据拼接在一起显示。
5.limit
limit startIndex, length
作用:limit取结果集中的部分数据。
每页显示pageSize条记录:
第pageNo页:(pageNo - 1) * pageSize, pageSize
注意:limit是MySQL特有的,与其他数据库不通用。
limit是SQL语句最后执行的一个环节。
6.创建表
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
....
);
关于MySQL当中字段的数据类型?以下只说常见的
int 整数型(java中的int)
bigint 长整型(java中的long)
float 浮点型(java中的float double)
char 定长字符串(String)
varchar 可变长字符串(StringBuffer/StringBuilder)
date 日期类型 (对应Java中的java.sql.Date类型)
BLOB 二进制大对象(存储图片、视频等流媒体信息) Binary Large OBject (对应java中的Object)
CLOB 字符大对象(存储较大文本,比如,可以存储4G的字符串。) Character Large OBject(对应java中的Object)
......
7.insert语句插入数据
insert into 表名(字段名1,字段名2,字段名3,....) values(值1,值2,值3,....)
要求:字段的数量和值的数量相同,并且数据类型要对应相同。
8.表的复制
create table 表名 as select语句;
将查询结果当做表创建出来。
insert into 表名1 select * from 表名2;
将查询结果插入到一张表中。
9.update修改数据
update 表名 set 字段名1=值1,字段名2=值2... where 条件;
注意:没有条件整张表数据全部更新。
10.delete删除数据
delete from 表名 where 条件;
注意:没有条件全部删除。
增删改查有一个术语:CRUD操作
Create(增) Retrieve(检索) Update(修改) Delete(删除)
11.约束(Constraint)
在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的
合法性、有效性、完整性。
常见的约束:
非空约束(not null):约束的字段不能为NULL
唯一约束(unique):约束的字段不能重复
主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)
外键约束(foreign key):...(简称FK)
检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。
11.1非空约束
create table 表名(
字段名1 数据类型 not null,
字段名2 数据类型,
字段名3 数据类型,
....
);