“马云生气了”之增删改查

一、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   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容