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;
注释:在删除记录时要格外小心!因为您不能重来!