SQL的基本操作

SQL是用于访问和处理数据库的标准的计算机语言,让您可以访问和处理数据库。

SQL能做什么?

SQL面向数据库执行查询

SQL 可从数据库取回数据

SQL 可在数据库中插入新的记录

SQL 可更新数据库中的数据

SQL 可从数据库删除记录

SQL 可创建新数据库

SQL 可在数据库中创建新表

SQL 可在数据库中创建存储过程

SQL 可在数据库中创建视图

SQL 可以设置表、存储过程和视图的权限

SQL语句

数据库表

一个数据库通常包含一个或多个表。每个表有一个名字标识(例如:"Websites"),表包含带有数据的记录(行)。

我们可以通过SQL命令对数据表进行相应的操作。

一些重用重要的SQL命令:

SELECT - 从数据库中提取数据

UPDATE - 更新数据库中的数据

DELETE - 从数据库中删除数据 

INSERT INTO - 向数据库中插入新数据

CREATE DATABASE - 创建新数据库

ALTER DATABASE - 修改数据库

CREATE TABLE - 创建新表

ALTER TABLE - 变更(改变)数据库表

DROP TABLE - 删除表

CREATE INDEX - 创建索引(搜索键)

DROP INDEX - 删除索引

特别地:SQL 对大小写不敏感:SELECT 与 select 是相同的。


写 INSERT INTO

语法:

INSERT INTO table_name (column1,column2,column3,...)

VALUES (value1,value2,value3,...);

演示:

向 "Websites" 表中插入一个新行。

INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');

结果:

SQL的基本操作_第1张图片
插入结果

改 UPDATE

语法:

UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;

特别地:WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!

演示:

把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。

UPDATE Websites SET alexa='5000', country='USA'  WHERE name='菜鸟教程';

结果:

SQL的基本操作_第2张图片
更新结果

删 DELETE 

①删除指定行记录。

语法:

DELETE FROM table_name WHERE some_column=some_value;

特别地:WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!

演示:

DELETE FROM Websites WHERE name='百度' AND country='CN';

结果:

SQL的基本操作_第3张图片
删除结果

②不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

语法:

DELETE FROM table_name;或DELETE * FROM table_name;


查 SELECT

语法:

SELECT column_name,column_name FROM table_name;或SELECT * FROM table_name;

演示:

①查询所有列:

SELECT * FROM Websites;

结果:

SQL的基本操作_第4张图片
查询表Websites所有列结果

②查询相应列

下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "country" 列:

SELECT name,country FROM Websites;

结果:

SQL的基本操作_第5张图片
查询指定列name,country  结果

③查询返回唯一不同的值。在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值,关键词DISTINCT 用于返回唯一不同的值。

下面的 SQL 语句仅从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:

SELECT DISTINCT country FROM Websites;

结果:

SQL的基本操作_第6张图片
查询结果

④查询指定记录。关键词WHERE于提取那些满足指定条件的记录。特别的是关键字 WHERE 字符串比较是不区分大小写的。可以通过关键字BINARY 来设定 WHERE 语句的字符串比较大小写。

语法:

SELECT column_name,column_name FROM table_name WHERE column_name ='value';或SELECT column_name,column_name FROM table_name WHERE BINARY column_name ='value';

演示:

下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 的所有网站:

SELECT * FROM Websites WHERE country='CN';

结果:

SQL的基本操作_第7张图片
查询指定行 CN 结果

⑤条件查询。关键词AND & OR 运算符用于基于一个以上的条件对记录进行过滤。如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:

SELECT * FROM Websites WHERE country='CN' AND alexa > 50;

结果:

查询指定行结果

下面的 SQL 语句从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:

SELECT * FROM Websites WHERE country='USA' OR country='CN';

结果:

SQL的基本操作_第8张图片
查询指定行结果

下面的 SQL 语句从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:

SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');

特别地:把 AND 和 OR 结合起来要使用圆括号来组成复杂的表达式。

结果:

SQL的基本操作_第9张图片
查询指定行结果

⑥按某种顺序查询。关键字ORDER BY用于对结果集按照一个列或者多个列进行排序,默认按照升序对记录进行排序(ASC)。如果需要按照降序对记录进行排序,您可以使用关键字 DESC 。

语法:

SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

演示:

下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列升序排序:

SELECT * FROM Websites ORDER BY alexa ASC;或SELECT * FROM Websites ORDER BY alexa;

结果:

SQL的基本操作_第10张图片
查询结果

下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:

SELECT * FROM Websites ORDER BY alexa DESC;

结果:

SQL的基本操作_第11张图片
查询结果

下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列升序排序:

SELECT * FROM Websites ORDER BY country,alexa;

结果:

SQL的基本操作_第12张图片
查询结果

⑦返回查询的记录数目

SQL支持 SELECT TOP 语句;MySQL 支持 LIMIT 语句;Oracle 支持 ROWNUM 语句来选取指定的条数数据。

SQL语法:

SELECT TOP number|percent column_name(s) FROM table_name;

演示:

下面的 SQL 语句从 websites 表中选取前面百分之 50 的记录:

SELECT TOP 50 PERCENT * FROM Websites;

MySQL语法:

SELECT column_name(s) FROM table_name LIMIT number;

演示:

下面的 SQL 语句从 "Websites" 表中选取头两条记录:

SELECT * FROM Websites LIMIT 2;

结果:

SQL的基本操作_第13张图片
查询结果

Oracle 语法:

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;

⑧模糊查询。操作符 LIKE 用于 WHERE 语句中搜索列中的指定模式。在 LIKE 语句中使用 % 字符来表示任意字符。如果没有使用 % ,LIKE 语句与 = 的效果就一样了。

("%" 符号用于在模式的前后定义通配符,默认字母。)

SQL通配符

SQL的基本操作_第14张图片
SQL通配符

语法:

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

演示:

下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:

SELECT * FROM Websites WHERE name LIKE 'G%';

结果:

查询结果

下面的 SQL 语句选取 name 以字母 "k" 结尾的所有客户:

SELECT * FROM Websites WHERE name LIKE '%k';

结果:

查询结果

下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户:

SELECT * FROM Websites WHERE name LIKE '%oo%';

结果:

SQL的基本操作_第15张图片
查询结果

下面的 SQL 语句选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户:

SELECT * FROM Websites WHERE name LIKE '_oogle';

结果:

查询结果

下面的 SQL 语句选取 name 以 "G" 开始,然后是一个任意字符,然后是 "o",然后是一个任意字符,然后是 "le" 的所有网站:

SELECT * FROM Websites WHERE name LIKE 'G_o_le';

结果:

查询结果

下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:

SELECT * FROM Websites WHERE name REGEXP '^[GFs]';

结果:

SQL的基本操作_第16张图片
查询结果

下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:

SELECT * FROM Websites WHERE name REGEXP '^[A-H]';

结果:

SQL的基本操作_第17张图片

下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:

SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';

结果:

SQL的基本操作_第18张图片
查询结果

特别地:MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

⑨查询多条指定记录。操作符 IN 允许您在 WHERE 子句中规定多个值。

语法:

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);

演示:

下面的 SQL 语句选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:

SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');

结果:

SQL的基本操作_第19张图片
查询结果

⑩查询介于某个范围的数据记录。操作符BETWEEN 选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。(如需显示不在上面实例范围内的网站,请使用 NOT BETWEEN)

语法:

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

演示:

下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:

SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20;

结果:

SQL的基本操作_第20张图片
查询结果

下面的 SQL 语句选取 alexa 不介于 1 和 20 之间的所有网站:

SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20;

结果:

查询结果

下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:

SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN ('USA', 'IND');

结果:

SQL的基本操作_第21张图片
查询结果

SQL别名

通过使用 SQL,可以为表名称或列名称指定别名。基本上,创建别名是为了让列名称的可读性更强。

列的SQL别名语法:

SELECT column_name AS alias_name FROM table_name;

演示:

下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。(如果列名称包含空格,要求使用双引号或方括号)

SELECT name AS n, country AS c FROM Websites;

结果:

SQL的基本操作_第22张图片
查询结果

下面的 SQL 语句中,我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名:

SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;

结果:

SQL的基本操作_第23张图片
查询结果

此文是作者在学习过程中总结的一些有关SQL的基本常用的数据库操作笔录,希望可以给小伙伴们带来收获,欢迎在评论区讨论相互学习。

你可能感兴趣的:(SQL的基本操作)