SQL基础语法学习笔记:


sql快速参考:

在使用INSERT语句向一个表中插入元祖时“值列表”中值的个数顺序类型、必须与“列表名”保持一致。

sql语法:

注释:

1.对语句进行注释 首先是单行注释‘–’ 可以对输入的语句进行单行注释·

2.多行注释 /**/

3.快捷键注释 选中需要注释的语句 (按住Ctrl,然后K、C)取消注释:Ctrl+K、Ctrl+U(按住Ctrl,然后K、U)…

SQL SELECT 语句
SELECT COLUMN_NAME,COLUMN_NAME
FROM table_name;
--或者
SELECT *FROM table_name;--全部选择
--eg:Websites表
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+
--实例
select name,country,url from Websites;
--输出
+--------------+---------------------------+---------+
| name         | url                       | country |
+--------------+---------------------------+---------+
| Google       | https://www.google.cm/    | USA     |
| 淘宝          | https://www.taobao.com/   |  CN     |
| 菜鸟教程      | http://www.runoob.com/     |  CN     |
| 微博          | http://weibo.com/         | CN      |
| Facebook     | https://www.facebook.com/  |  USA    |
+--------------+---------------------------+-------+---------+
SQL SELECT DISTINCT 语句:
/*SELECT DISTINCT 语句用于返回唯一不同的值。
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值。
下面的 SQL 语句仅从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:
*/
SELECT DISTINCT column_nme,column_name
FROM table_name;
--实例
SELECT DISTINCT country FROM Websites;
--输出
+--------+
|country |
+--------+
|  USA   |
|   CN   |
+--------+
SQL WHERE 子句:
--where 子句用于过滤记录,用于提取那些满足指定条件的记录
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
--实例,下面的SQL 语句从 "Websites" 表中选取国家为 "CN" 的所有网站
select * from Websites WHERE country='CN'
--输出
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
+----+--------------+---------------------------+-------+---------+

--文本字段VS数值字段
/*
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
在上个实例中 'CN' 文本字段使用了单引号。
如果是数值字段,请不要使用引号。
*/
SELECT * FROM Websites WHERE id=1;

where 子句中的运算符:

运算符

描述

=

等于

<>

不等于。**注释:**在 SQL 的一些版本中,

该操作符可被写成 !=

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

IN

指定针对某个列的多个可能值

SQL AND & OR 运算符
--SQL AND & OR 运算符
--如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
--如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
--实例
select * from websites
where country='CN'
and alexa > 50;
--eg:Websites表
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+

--输出

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
+----+--------------+---------------------------+-------+---------+
--or语句
SELECT * FROM Websites
WHERE country='USA'
OR country='CN';
--结合AND $ OR
/*
您也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。
下面的 SQL 语句从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
*/
SELECT * FROM Weibsites
WHERE alexa > 15
AND (country='CN' OR country='USA');
--输出
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
+----+--------------+---------------------------+-------+---------+
SQL ORDER BY 关键字
--ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序,默认升序,降序采用DESC关键字。
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC
--ascend沿...上升,desend下降
--实例
SELECT * FROM Websites
ORDER BY alexa DESC;
--输出
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
+----+--------------+---------------------------+-------+---------+


--order by 多列
SELECT * FROM Websites
ORDER BY country,alexa;
/*ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;如上述教程最后一个例子:

 1)、先将country值这一列排序,同为CN的排前面,同属USA的排后面;
 2)、然后在同属CN的这些多行数据中,再根据alexa值的大小排列。
 */
SQL 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 Websites (name, url, alexa, country)
VALUES ('百度','https://www.baidu.com/','4','CN');
--输出
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 6  | 百度          | https://www.baidu.com/     | 4    |   CN     |
+----+--------------+---------------------------+-------+---------+



--在指定的列插入数据,下面的 SQL 语句将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):
INSERT INTO Websites (name, url, country)
VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');
--输出
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 6  | 百度          | https://www.baidu.com/     | 4    |   CN     |
| 7  | stackoverflow  | http://stackoverflow.com/ |0     | IND     |
+----+--------------+---------------------------+-------+---------+



--insert into select 和select into from 的区别

insert into scorebak select * from socre where neza='neza'   --插入一行,要求表scorebak 必须存在
select *  into scorebak from score  where neza='neza'  --也是插入一行,要求表scorebak 不存在
SQL UPDATE 语句:
--UPDATE 语句用于更新表中已存在的记录
--语法:
UPDATE table_name
SET columnn1=value1,colum2=value2,....
WHERE some_column=some_value;
<!--WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!-->


--实例
假设我们要把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。
我们使用下面的 SQL 语句:
UPDATE Websites 
SET alexa='5000', country='USA' 
WHERE name='菜鸟教程';
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程       | http://www.runoob.com/     | 500   |USA      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 6  | 百度          | https://www.baidu.com/     | 4    |   CN     |
| 7  | stackoverflow  | http://stackoverflow.com/ |0     | IND     |
+----+--------------+---------------------------+-------+---------+

Update 警告!
在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:

UPDATE Websites
SET alexa='5000', country='USA'
执行以上代码会将 Websites 表中所有数据的 alexa 改为 5000,country 改为 USA。
执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
SQL DELETE 语句:
--delete语句用于删除表中的行
语法:
DELETE FROM table_name
WHERE some_column=some_value;
/*
请注意 SQL DELETE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除
*/
--实例
DELETE FROM Websites
WHERE name='百度' AND country='CN';
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程       | http://www.runoob.com/     | 500   |USA     |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow  | http://stackoverflow.com/ |0     | IND    |
+----+--------------+---------------------------+-------+---------+

--可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
DELETE FROM table_name;

或

DELETE * FROM table_name;
注释:在删除记录时要格外小心!因为您不能重来!