SQL 的相关操作

图像处理过程中,有大量的数据数据需要记录,所以先记录一下数据库操作的一些基本命令


1、数据库管理工具Nvicat--SQL;PL/SQL--Orcale

2、数据库的基本组成

表:类似excel中的sheet页,Table,由行和列组成(row和line)

注:列有时候也可以表示成row

字段:表的列名称(垂直方向),几个字段几列

记录:表的行(水平方向),其中数据以行为单位进行数据读写,一条记录代表一行,几行表示几个数据

3、增(插入)(末尾添加)

INSERT into 表名称 valuse(值1,值2...)

INSERT INTO 表名称(列1,列2,列3,列4)values

(列1value1,列2value1,列3value1,列4value1);

(列1value2,列2value2,列3value2,列4value2);

(列1value3,列2value3,列3value3,列4value3);

(列1value4,列2value4,列3value4,列4value4);

...

若是字符串,应用’‘括起来

从一个表中插入到另外一个表中

 INSERT INTO 表名称1 SELECT 列1,列2,列3,列4... FROM 表名称2 WHERE 列名=’运动户外‘

将表2的某列值为远动户外的数值的列1,列2,列n的值批量插入表1

注: insert 中的列1,列2要和表1中的列匹配上

4、删

DELETE FROM 表名称

DELETE FROM 表名称 WHERE 列名=’运动户外‘

将某表中列名=运动户外的数据全部删除

5、改(修改)

UPDATE 表名称 set 条件

a、UPDATA 表名 set url=100" WHERE 列名=’运动户外‘

将某表某列中数据=运动户外的数据的url的值全都改成100(可能之前url的值是50或其他)

6、查询

a、SELECT  列名1,列名2 ... FROM 表名  Where 条件;

b、SELECT* FROM 表名;(*表示所有列)

c、SELECT *FROM 表名 LIMIT 10  (LIMIT 限制前10行的数据)

7、删除某一个字段

ALTER TABLE 表名 DROP COLUMN 列名

8、增加某个字段

ALTER TABLE table_name ADD column_name datatype

9、删除表名

DROP TABLE IF EXISTS 表名

如果这个表名存在,则删除此表

10、创建表名

CREAT TABLE 表名(列1 类型,列2 类型,列3 类型,... ,PRIMARY KEY (列1))  ENGING=InnoDB DEFAULT CHARSET=utf8;

类型:int,varchar,timestamp(时间类型)

11、排序,ORDER BY

如果有where语句,要接在where 后面,默认升序排列

DESC:降序

DESC 表名

对某表进行降序排列

ASC:升序

SELECT <列名1>,<列名2>, FROM <表名> ORDER BY <列名1>,<列名2> DESC

SELECT <列名1>,<列名2>, FROM <表名> ORDER BY <列名1> DESC ,<列名2> ASC;

对某表根据列1升序,列2降序排列

(嵌套循环,从大到小排列1,列1相等的情况下从小到大排列2)

12、WHERE :条件语句

WHERE 必须跟在表名后面,即FROM后面

WHERE中可以使用not, in,like等关键字

SELECT * WHERE 表名 WHERE 列名<>'运动户外'

<>这里指的是不等于

NOT:取反

SELECT * WHERE 表名 WHERE not 列名='运动户外'

也是筛选表名表列中不等于运动户外的数据

IN:where 中取多个值

SELECT * WHERE 表名 WHERE  列名 IN ('名称1’,‘名称2’,‘名称3’)

将某表某列中等于名称1,2,3的值取出来

LIKE:where 中搜做列中的指定模式

SELECT * WHERE 表名 WHERE 列名='%运动户外%'

%:和like类似,这里指的是能够匹配到,只要包含这个运动户外就会被查找到

SELECT * WHERE 表名 WHERE 列名 LIKE '%运动户外%'

注:%是通配的意思,

运动户外%,表示以运动户外开头,后面不管是什么内容

%运动户外,表示以运动户外结尾,前面不管是什么内容

%运动户外%,表示以运动户外中间,前后不管是什么内容

13、去重

SELECT DISTINCT 列名 FROM表名

SELECT count(DISTINCT 列名) FROM 表名

计算某表某列去重后的数量

14、SQL中的函数运算

eg:计算总和

select sum(列名) from 表名;

计算某表某列的总和

eg:计算平均

select avg(列名) from 表名;

计算某表某列的平均

eg:计算最小值

select min(列名) from 表名;

计算某表某列的最小值

eg:计算标准差

select stddev(列名) from 表名;

计算某表某列的最小值

15、数据进行分类汇总

SELECT <列名1><列名2> FROM 表名 GROUP BY <列名1><列名2>

GROUP BY 指定的列称为聚合键或分组列,where 语句需要在GROUP BY前面

分类汇总:

SELECT 列名1 AS ‘ 列名x’ ,COUNT(*) AS '列名Y' FROM 表1 GROUP BY 列名1;

GROUP BY 的类名一定会出现在 SELECT 的列名里

 SELECT 列名1,sum(列名2) as 列名x FROM 表名 GROUP BY 部门名称;

结果变成两列,一列仍是部门名称,另一列是列名X,结果是 部门名称相同的列名2的和

FROM  test1.sheet1(test1是数据源,sheet1是表名)

 SELECT 列名1,sum(列名2) as 列名x FROM 表名 GROUP BY 部门名称 ORDER BY 列名2 DESC;

//分类后重命名后排序

 SELECT 列名1,sum(列名2) as 列名x FROM 表名 where 列名2>0 GROUP BY 部门名称  ORDER BY 列名2 DESC;

//筛选>0的数据后分类重命名后排序

 SELECT 列名1,sum(列名2) as 列名x FROM 表名  GROUP BY 部门名称 HAVING 列名X>100  ORDER BY 列名2 DESC;

//数据分类重命名后进行筛选(利用HAVING)排序

16、联表查询(JOIN,两个表中必须有相同数据)

内连接:返回两个表的交集,

INNER JOIN,ON

SELECT *FROM a_table a INNER JOIN b_table b ON a.a_id=b.b_id;

左连接:左表全部显示,右表只显示符合搜索条件的记录,没有匹配上的置为null,

LEFT JOIN ,ON

SELECT * FROM a_table a LEFT JOIN b_table b ON a.a_id=b.b_id;

SELECT a.*,b.*FROM 表名1 AS a INNER JOIN 表名2 AS b ON a.工作地点=b.城市名称

eg:

SELECT a.*,b.*FROM 表名1 AS a LEFT JOIN 表名2 AS b ON a.工作地点=b.城市名称

//将表1命名为a,表2命名为b,选择全部,将a中的工作地点和b中的城市名称匹配,左连接到表a

即a的列名在前,b的类名在后

右连接:右表全部显示,左表只显示符合搜索条件的记录,没有匹配上的置为null,

RIGHT JOIN ON

SELECT * FROM a_table a RIGHT  OUTER JOIN b_table ON a.a_id=b.b_id;

SELECT a.*,b.*FROM 表名1 AS a LEFT JOIN 表名2 AS b ON a.工作地点=b.城市名称

//将表1命名为a,表2命名为b,选择全部,将a中的工作地点和b中的城市名称匹配,右连接到表b

即b的列名在前,a的列名在后


总结:

数据库命令书写顺序:

SELECT ...FROM ...WHERE ...GROUP BY...HAVING,...ORDER BY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值