SQL(Structured Query Language)结构化查询语言,用于编程和管理关系数据库中的保存数据。SQL由四个部分组成:数据定义语言(Data Definition Language,DDL)、数据操纵语言(Data Manage Language,DML)、数据查询语言(Data Query Language,DQL)、数据控制语言(Data Control Language,DCL)。
数据库 增删改查(CUDR)
1、创建数据库db1
create database db1;
2、删除数据库db1
drop database db1;
3、修改数据库字符编码为gbk
alter database db1 character set 'gbk';
4、切换当前数据库为db2
use db2;
数据表 增删改查(CUDR)
语法:
create table 表名(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
...,
字段n 类型(长度) 约束
)
1、创建表table1
create table table1(
id int primary key,
name varchar(20) not null
);
2、删除表table1
drop table table1;
3、修改表table1
alter table table1 add name varchar(20) not null;增加字段
alter table table1 drop column name;删除字段
alter table table1 alter column name char(10);修改字段类型
数据 增删改查(CUDR)
语法:
insert into 表名(字段1,字段2,...,字段n) values(值1, 值2, ...,值n)
1、表table1增加一行数据
insert into table1(id, sex) values(2, 'man');
语法:
updata 表名 set 字段1=值1, 字段2=值2,...,字段n=值n [where]
2、更新table1中字段id=2那一行,设置字段id=3
update table1 set id=3 where id=2;
语法:
delete from 表名 [where]
3、删除table1表中id=3的那一行
delete from table1 where id=3;
4、删除表table中所有数据
delete from table1;
语法:
select [distinct] * from 表名
select [distinct] 字段1,字段2,... from 表名
5、简单查询表table1中的id,name字段的所有不重复数据
select distinct id, name from table1;
6、查询table1中所有不重复字段数据
select distinct * from table1;
数据查询*****
1、单表查询
1、查询的列可以运算
select name, math+10 from stu;
2、使用as 别名,同时as可以省略
select name as n,math, english from stu;
select nam n, math, english from stu;
3、使用where条件过滤
select name, math, english from stu where name='Li Ming';
4、使用oreder by [desc]进行排序,desc为降序,默认升序
select name, math, english from stu where name='Li Ming' order by math desc, english desc;
5、使用group by进行分组,having进行条件过滤
获取不同产品的总价
select product, sum(price) from orders group by product;
获取不同产品,且产品总价大于100的产品总价
select product, sum(price) from orders group by product having sum(price) > 100;
2、多表查询(需要有外键)
1、普通内连接,使用inner join ... on
select * from dept iner join emp on dept.did=emp.dno;
2、隐式内连接,不使用inner join ... on
select * from dept, emp where dept.did=emp.dno;
3、左外连接,使用left [outer] join ... on
select * from dept left outer join emp on dept.did=emp.dno;
select * from dept left join emp on dept.did=emp.dno;
4、右外连接,使用right [outer] join ... on
select * from dept right outer join emp on dept.did=emp.dno;
select * from dept right join emp on dept.did=emp.dno;
5、全外连接,使用full [outer] join ... on
select * from dept full outer join emp on dept.did=emp.dno;
select * from dept full join emp on dept.did=emp.dno;
3、子表查询(查询的内容需要另一个查询的结果)
1、查询比子表eid大的所有字段
select * from emp where eid > (select eid from emp where eid='2344');
2、any表示任意
select * from emp where eid > any(select eid from emp where eid='2344');
3、all表示全部
select * from emp where eid > all(select eid from emp where eid='2344');