美文网首页
SQL的基本操作

SQL的基本操作

作者: 扎实小男孩 | 来源:发表于2020-01-16 17:53 被阅读0次

    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');

    结果:

    插入结果

    改 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='菜鸟教程';

    结果:

    更新结果

    删 DELETE 

    ①删除指定行记录。

    语法:

    DELETE FROM table_name WHERE some_column=some_value;

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

    演示:

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

    结果:

    删除结果

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

    语法:

    DELETE FROM table_name;或DELETE * FROM table_name;


    查 SELECT

    语法:

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

    演示:

    ①查询所有列:

    SELECT * FROM Websites;

    结果:

    查询表Websites所有列结果

    ②查询相应列

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

    SELECT name,country FROM Websites;

    结果:

    查询指定列name,country  结果

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

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

    SELECT DISTINCT country FROM Websites;

    结果:

    查询结果

    ④查询指定记录。关键词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';

    结果:

    查询指定行 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 语句从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:

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

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

    结果:

    查询指定行结果

    ⑥按某种顺序查询。关键字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 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:

    SELECT * FROM Websites ORDER BY alexa DESC;

    结果:

    查询结果

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

    SELECT * FROM Websites ORDER BY country,alexa;

    结果:

    查询结果

    ⑦返回查询的记录数目

    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;

    结果:

    查询结果

    Oracle 语法:

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

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

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

    SQL通配符

    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 语句选取 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 语句选取 name 以 A 到 H 字母开头的网站:

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

    结果:

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

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

    结果:

    查询结果

    特别地: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','菜鸟教程');

    结果:

    查询结果

    ⑩查询介于某个范围的数据记录。操作符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 语句选取 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别名

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

    列的SQL别名语法:

    SELECT column_name AS alias_name FROM table_name;

    演示:

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

    SELECT name AS n, country AS c FROM Websites;

    结果:

    查询结果

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

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

    结果:

    查询结果

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

    相关文章

      网友评论

          本文标题:SQL的基本操作

          本文链接:https://www.haomeiwen.com/subject/zltfzctx.html