景泽元的编程 2019-12-30
作为一个代码小白,最近一个月在开始学习python语言,这一学习路上经历了一场听完学习视频,看完老师敲的代码,自己上手写,一团乱麻。。。
最尴尬的时刻就是赶在年前公司重新面试打分,问到了数据库,发现SQL这块也挺重要,工作中经常用到,发现太久未系统整理数据库知识,趁此机会整理如下
首先,ORACLE数据库(Oracle Database)是一款关系数据库管理系统,它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好,使用方便、功能强,适用于各类大、中、小、微机环境。
一般自行建立好表空间,用户,表,表索引,初始化数据(插入表数据)
后台执行初始化数据(初始化数据的量一般偏大)
再者就开始介绍工作中常用到的在一个用户下的所属表里的SQL查询语句的基本操作吧(增,删,查,改)
1.增
原有一张表table名 websites
1.1 没有指定要插入数据的列名的形式新增行数据
原有4行数据,现在需要添加两行新数据(没有指定要插入数据的列名形式),此时我们就要使用 insert into ...value 需要列出插入行的每一列数据
使用如下SQL:
INSERT INTO websites values
(‘5‘, ‘Facebook‘, ‘https://www.facebook.com/‘, ‘3‘, ‘USA‘),
(‘6‘, ‘百度‘,‘https://www.baidu.com/‘,‘4‘,‘CN‘);
执行完结果如下:
1.2 在指定的列插入新的行数据
原有6条数据,现需要插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新)
使用如下SQL:
INSERT INTO Websites (name, url, country)
VALUES (‘stackoverflow‘, ‘http://stackoverflow.com/‘, ‘IND‘);
执行完结果如下:(id 字段已自动更新)
小结 在原表 插入数据的语法如下
无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name VALUES (value1,value2,value3,...);
需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);
2.改
原表 websites,现在需要把 "菜鸟教程" 的 alexa 排名更新为 5100,country 改为 USA
使用SQL如下:
UPDATE Websites SET alexa=‘5100‘, country=‘USA‘
WHERE name=‘菜鸟教程‘;
执行完结果如下:(只对菜鸟教程行做了更新)
如若未用where条件语句做限制更新,将会更改表中的全部行数据
执行没有 WHERE 子句的 UPDATE 要慎重,再慎重
小结 UPDATE 语句用于更新表中已存在的记录,语法如下:
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
3.查 -----常用重点
1.1 查询表中的所有列
select * from websites;
1.2 查询表中指定的列
select w.name,w.url,w.country from websites w; (w可用作websites表的别名,在很多张表的时候方便作区分)
1.3 查询表中去重后的列-----distinct
SELECT DISTINCT w.country FROM Websites w;
1.4 查询表中符合条件的数据行-----where条件查询,文本字段,数值字段,运算符,like模糊查询
SELECT * FROM Websites WHERE country=‘CN‘; (根据文本字段查询时,文本字段必须带单引号)
SELECT * FROM Websites WHERE id=1; (根据数值字段查询时,请不要带单引号)
常用运算
运算符 | 描述 |
= | 等于 |
<>,!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
between | 在某个范围内 |
and | 并且 |
or | 或者 |
like | 搜索某种模式 |
in | 指定针对某个列的多个可能值 |
SELECT * FROM Websites WHERE id>2 and id <6;
SELECT * FROM Websites WHERE url like ‘%www%‘; 查询包含www的所有内容
SELECT * FROM Websites WHERE name like ‘F%‘; 模糊查询信息为F开头的数据
SELECT * FROM Websites WHERE COUNTRY like ‘%s_‘; 模糊查询在倒数第二位是S的所有数据
小结 模糊匹配经常与通配符一起使用,通配符的表示方法如下
1.5 查询符合表中数据并排序-----order by
SELECT * FROM Websites ORDER BY alexa; 查询根据alexa排名的该表数据,默认升序排列ASC
SELECT * FROM Websites ORDER BY alexa desc; 根据alexa排名的降序desc,查询该表数据
SELECT * FROM Websites ORDER BY country,alexa;
ORDER BY 多列的时候,先按照第一个country排序,在按照第二个alexa排序
先将country值这一列排序,同为CN的排前面,同属USA的排后面;
然后在同属CN的这些多行数据中,再根据alexa值的大小排列
1.6 查询多表-----左连接(最常用),右连接,内连接,全连接
在下章节详细记录