一、SQL概要
1.什么是SQL,SQL是结构化查询语言,面向数据库,使我们有能力访问数据库。
2.DDL
2.1定义:
数据定义语句 ,data definition language
2.2主要操作
1.CREATE :创建表
2.DROP:删除表
3.ALTER:修改表属性
3.DML
3.1定义:
data manipulation language 数据操作语言 ,主要用来操作数据库里面的数据
3.2主要操作:
增删改查
insert:增,往数据库插入数据
delet:删,删除记录 ,慎用
update:改,修改表中已有的记录
select:查,查数据库
3.3操作对象是行数据
二、如何查询(按列)
//查询emp表所有东西
select *
from emp
//如果想查询一部分列呢?
//empno,ename,job,sal是列名
select empno,ename,job,sal
from emp
//四则运算 可以对数字类型,日期类型,数字类型字符串进行运算
select empno,ename,sal*12+300*12
from emp
三、如何查询(按行)+where
1.使用where字句 限定条件
select empno,ename,job.sal
from emp
where sal>1500 and (job='SALESMAN' or job='CLERK')
//关系
> < = != <= >=
//范围
between and
//是否空
is null
is not null
//判断
in
not in
//模糊查询
like
not like
例子://查询名字包含S的员工
select *
from emp
where ename like '%S%'
//逻辑运算
and or
四、如何排序(order by)
默认升序ASC,指定降序需要写DESC
select ename,job,sal
from emp
where empno='10'
order by sal DESC
五、一些函数(方法)
1.时间函数
now() curdatetime()
2统计行数
count(*)
注意 如果函数的参数是列名,不会统计null的行数
六、如何分组(group by)+having
select *
from emp
where job!='SALESMAN'
group by depno,job having sum(sal)>4000
order by sum(sal)
七、如何分页(limit)
select *
from emp
limit 0,10 //0是起始值,也就是索引,10是偏移量,也就是返回条数
例子:返回4行,9表示从表的第10行开始
SELECT *
FROM emp
LIMIT 4 OFFSET 9
-- 等价于 select * from Emp limit 9,4
八、多表查询
select depno,ename,job,sal
from emp left join dept on emp.deptno=dept.deptno
//from emp left join dept using(deptno)
where
group by having
order by desc
1.产生笛卡尔积问题
2.外连接多表查询,使用left join 左外连接,on、using 使用时 关联字段名字需要一样
九、除了查询 还有增删改
//如何增加数据
insert into emp(ename,job,sal) values ('kim','itman',10000)
//如何删除跑路()
delete
//一般开发用假删除:在表中添加一列 用于表示是否删除, 在查询数据加上改条件 (通用字段)
//如何修改
update emp set job='SALESMAN',sal=1000 where ename='sb'
十、如何创建表
create table emp(
列名 类型 约束
列名 类型 约束
)
有哪些类型?
整型:
tinyint int
浮点型:
float double decimal (价格精确数字)
字符串:
varchar(255) char(11) text 文档
时间:
timestamp 时间戳
十一、约束
主键约束
行级约束
create table 表名(
ID int primary key auto_increment,
name varchar(255)
)
表级约束
create table primary(
ID int auto_increment,
name varchar(255),
constraint PK_ID primary key(id)
)
外键约束(如何创建外键)
主表的主键作为从表的外键
行级添加
create table 表名(
列名 类型,
列名 类型 references 主表(主表列)
)
表级添加
create table 表名(
列名 类型 主键 自增,
列名 类型,
constraint fk_表名_外键字段名 foreign key(列名) reference 主表(参考)
)
不能跨数据库建立约束
唯一约束
create table 表名(
UID int primary key auto_increment,
name varchar(255),
is_del int ,
constraint UK_UQ_name unique(name),
)
默认以及非空约束(default null)
create table t_other(
oid int primary key auto_increment
name not null,
is_del int default 0
)
十二、索引
create index 索引名 on 表名(列名)
create index idx_user_name on user(name)
# 查看索引
SHOW INDEX FROM user
十三、子查询
就是在查询中嵌套查询
示例代码:
select d.deptno ,d.dname,d.loc
from dept d
select count(*),avg(sal)
from emp
group by deptno
select d.deptno ,d.dname,d.loc
from dept d,(select deptno, count(*),avg(sal)
from emp
group by deptno) temp
where d.deptno = temp.deptno