什么是sql
Structured Query Language:结构化查询语言,指结构化查询语言,全称是Structyred Query Language。 SQL让你可以访问和处理数据库 SQL是一种ANSI(美国国家标准化组织)标准的计算机语言
SQL SELECT语句
SELECT 语句用于从数据库中选取数据, 结果被存储在一个结果表中,称为结果集 SQL SELECT语法
SELECT column_name,column_name
FROM table_name
OR
SELECT * FROM table_name
SELECT Column实例
从'Websites'表中选取'name'和'country'列
SELECT name,country FROM Websites
输出结果是
SELECT * 实例
SQL语句从'Websites'表中选取所有列
SELECT * FROM Websites
输出结果为
SELECT DISTINCT语句
SELECT DISTINCT语句用于返回唯一不同的值
SELECT DISTINCT column_name,column_name
FROM table_name
SELECT DISTINCT实例
SELECT DISTINCT country FROM Websites
输出结果
SQL WHERE子句
WHERE子句用于过滤记录,提取哪些满足指定条件的记录
SELECT column_name.column_name
FROM table_name
WHERE column_name operator value;
WHERE子句实例
从'Websites'表中选取所有国家为'CN'的所有网站
SELECT * FROM Websites WHERE country='CN'
输出结果为
文本字段和数值字段
SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号) 在上个实例中'CN'文本字段使用了单引号。如果是数值字段不要使用引号
SELECT * FROM Websites WHERE id=1
WHERE子句中的运算符
WHERE筛选实例
//搜索empno等于700的数据
SELECT * FROM Emp WHERE empno=700
//搜索匹配xx的字符串
SELECT * FROM Emp WHERE empno='xx'
//搜索emp表中sal列中大于2000小于3000的值
OR
//满足其中一个条件的值
SELECT * FROM emp WHERE sal >2000 and sal < 3000
OR
SELECT * FROM emp WHERE sal > 2000 OR comm > 500
//查询emp表中SAL小于等于500的值
SELECT * FROM emp WHERE not sal > 500
//逻辑运算优先级
() not and or
特殊条件
1.空值判断:is null
//查询emp表中的comm列中的空值
SELECT * FROM emp WHERE comm is null
2.between and (在之间的值)
//查询emp表中的sal列中大于1500和3000的值
//注意:大于等于1500和小于等于3000,下限在前,上线在后。
SELECT * FROM emp WHERE sal between 1500 and 3000
3.In
//查询EMp表中sal列中等于5000,3000,15000的值
SELECT * FROM emp WHERE sal in(5000,3000,15000);
4.like like模糊查询
//查询emp中ename列中有M的值,M为要查询内容中的模糊信息
SELECT * FROM emp WHERE ename like 'M%';
- % :表示多个字值,——下划线表示一个字符
- M% :为能配符,正则表达式,表示的意思为模糊查询信息为M开头的
- %M% :表示查询包含M的所有内容
- %M_ :表示查询以M在倒数第二位的所有内容
结合and&OR
将and和or结合起来使用,(使用圆括号来组成复杂的表达式)
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR conutey='USA';
输出结果
SQL ORDER BY关键子
使用ORDER BY对于结果集进行排序
SELECT column_name,column_name FROM table_name ORDER BY column_name.cloumn_name ASC|DESC
ORDER BY实例
//将表中数按照alexa排序
SELECT * FROM Websites ORDER BY alexa
输出结果
ORDER BY DESC降序排列
SELECT * FROM Websites ORDER BY alexa DESC
ORDER BY多列
按照country和alexa列排序
SELECT * FROM Websites ORDER BY conuntry,alexa;
输出结果
INSERT INTO新增插入
INSERT INTO语句用于插入新的记录 INSERT INTO语句有两种编写形式 第一种只需要指定插入数据的列名,只需要提供被插入的值即可
INSERT INTO table_name VALUES (VALUE1,VALUE2,VALUE3,...)
第二种形式需要指定列名以及被插入的值
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...)
INSERT INTO实例
INSERT INTO Websites (name,url,alexa,country) VALUES ('百度','https://baidu.com/', '4','CN')
//一般都是先执行以上语句,再读取表
输出结果
在指定列插入数据
INSERT INTO Websiters (name,url,country) VALUES ('stackoverflow','https://stackoverflow.com/','IND')
输出结果
值得注意的是,每次插入数据的时候并未提供新的id数字,这是因为id列是自动更新的,表中的每条记录都有一个唯一的数字
SQL UPDATE语句
UPDATE语句用于更新表中的记录
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value
UPDATE实例
//将菜鸟教程的alexa变为5000,country改为USA
UPDATE Websites
SET alexa='5000',country='USA'
WHERE name='菜鸟教程'
输出结果
UPDATE语句尽量和WHERE语句配合使用,如果上述例子未使用WHERE语句,会将表中的所有alexa和conuntry变为5000和USA
//通过设置参数可以强制在使用update语句中携带where语句,负责就会爆粗
sql_safe_updates=1
DELETE语句
DELETE语句用于删除表中的记录
DELETE FROM table_name
WHERE some_column-some_value
DELETE语句实例
//在表中定位到'Facebook'且国家为'USA'并删除
DELETE FROM Websites
WHERE name='Facebook' AND country='USA'
输出结果
INNER JOIN 表连接
表的链接分好几种类型
- 内链接(inner join)
返回两张表匹配的记录
- 左连接(left join)
返回两张表匹配的记录以及A表中其他的记录
- 右链接(right join)
返回两张表匹配的记录以及B表中的其他记录
- 全链接(full join)
返回两张表匹配的记录以及A和B表中格子其他的记录
SELECT * FROM Websites
INNER JOIN B ON Websites.name=B.name //匹配内容
//OR
LEFT JOIN B ON Websites.name=B.name //匹配和A表其余
//OR
RIGHT JOIN B ON Websites.name=B.name //匹配和B表其余
//OR
FULL JOIN B ON Websites.name=B.name //匹配加全部