SQL总结

一、重要的SQL命令

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

二、基本SQL命令
1、DISTINCT 关键词用于返回唯一不同的值:
SQL SELECT DISTINCT 语法:

select DISTINCT column_name,column_name from table_name;

2、SQL AND & OR 运算符
AND & OR 运算符用于基于一个以上的条件对记录进行过滤。

  • 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
  • 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

3、ORDER BY 注意事项
ORDER BY 多列的时候,eg:

order by A,B        这个时候都是默认按升序排列
order by A desc,B   这个时候 A 降序,B 升序排列
order by A ,B desc  这个时候 A 升序,B 降序排列

即 desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。

4、SQL 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,...);

5、SQL UPDATE 语句
UPDATE 语句用于更新表中已存在的记录。
SQL UPDATE 语法

update table_name set column1=value1,column2=value2,... where some_column=some_value;

6、SQL SELECT TOP 子句
SELECT TOP 子句用于规定要返回的记录的数目。

select TOP number column_name(s) from table_name;

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

select column_name as alias_name from table_name;

表的 SQL 别名语法:

select column_name(s) from table_name as alias_name;

在下面的情况下,使用别名很有用:

  • 在查询中涉及超过一个表
  • 在查询中使用了函数
  • 列名称很长或者可读性差
  • 需要把两个列或者多个列结合在一起

8、SQL 连接(JOIN)
SQL join 用于把来自两个或多个表的行结合起来。
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。
SQL 连接(JOIN)7种用法

不同的 SQL JOIN:

  • inner join:如果表中有至少一个匹配,则返回行
  • left join:即使右表中没有匹配,也从左表返回所有的行
  • right join:即使左表中没有匹配,也从右表返回所有的行
  • full join:只要其中一个表中存在匹配,则返回行

(1) SQL INNER JOIN 关键字
INNER JOIN 关键字在表中存在至少一个匹配时返回行。

SQL INNER JOIN 语法:

select column_name(s) from table1 inner join table2 on table1.column_name=table2.column_name;

或:

select column_name(s) from table1 join table2 on table1.column_name=table2.column_name;

注释: INNER JOIN 与 JOIN 是相同的。

(2) SQL LEFT JOIN 关键字
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

SQL LEFT JOIN 语法:

select column_name(s) from table1 left join table2 on table1.column_name=table2.column_name;

或:

select column_name(s) from  table1 left outer join table2 on table1.column_name=table2.column_name;

(3) SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

SQL RIGHT JOIN 语法:

select column_name(s) from table1 right join table2 on table1.column_name=table2.column_name;

或:

select column_name(s) from table1 right outer join table2 on table1.column_name=table2.column_name;

(4)SQL FULL OUTER JOIN 关键字
FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.

full outer join 关键字结合了 left join 和 right join 的结果。

SQL FULL OUTER JOIN 语法:

select column_name(s) from table1 full outer join table2 on table1.column_name=table2.column_name;

补充:
关键字 on
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在使用 left jion 时,on 和 where 条件的区别如下:

  • on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
  • where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

假设有两张表:

表1:tab1

idsize
110
220
330

表2:tab2

sizename
10AAA
20BBB
20CCC

两条 SQL:

select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name='AAA'
select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name='AAA')

第一条SQL的过程:
1、中间表
on条件: tab1.size = tab2.size

tab1.idtab1.sizetab2.sizetab2.name
11010AAA
22020BBB
22020CCC
330(null)(null)

2、再对中间表过滤
where 条件:tab2.name=‘AAA’

tab1.idtab1.sizetab2.sizetab2.name
11010AAA

第二条SQL的过程:
1、中间表
on条件:tab1.size = tab2.size and tab2.name=‘AAA’
(条件不为真也会返回左表中的记录)

tab1.idtab1.sizetab2.sizetab2.name
11010AAA
220(null)(null)
330(null)(null)

其实以上结果的关键原因就是 left join、right join、full join 的特殊性,不管 on 上的条件是否为真都会返回 left 或 right 表中的记录,full 则具有 left 和 right 的特性的并集。 而 inner jion 没这个特殊性,则条件放在 on 中和 where 中,返回的结果集是相同的。

9、SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意: union内部的每个 select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 select语句中的列的顺序必须相同。

SQL UNION 语法:

select column_name(s) from table1 union select column_name(s) from table2;

注释: 默认地,union 操作符选取不同的值。如果允许重复的值,请使用 union all。

SQL UNION ALL 语法:

select column_name(s) from table1 union all select column_name(s) from table2;

注释: union 结果集中的列名总是等于 union 中第一个 select 语句中的列名。

10、SQL SELECT INTO 语句
通过 SQL,可以从一个表复制信息到另一个表。
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

SQL SELECT INTO 语法:
可以复制所有的列插入到新表中:

select * into newtable [IN externaldb] from table1;

或者只复制希望的列插入到新表中:

select column_name(s) into newtable [IN externaldb] from table1;

11、SQL INSERT INTO SELECT 语句
通过 SQL,可以从一个表复制信息到另一个表。

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

SQL INSERT INTO SELECT 语法:
我们可以从一个表中复制所有的列插入到另一个已存在的表中:

insert into table2 select * from table1;

或者我们可以只复制希望的列插入到另一个已存在的表中:

insert into table2 (column_name(s)) select column_name(s) from table1;

12、SQL CREATE DATABASE 语句
CREATE DATABASE 语句用于创建数据库。

SQL CREATE DATABASE 语法:

create database dbname;

13、SQL CREATE TABLE 语句
CREATE TABLE 语句用于创建数据库中的表。

表由行和列组成,每个表都必须有个表名。

SQL CREATE TABLE 语法:

create table table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

column_name 参数规定表中列的名称。

data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。

size 参数规定表中列的最大长度。

14、SQL 约束(Constraints)
SQL 约束用于规定表中的数据规则。

如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

SQL CREATE TABLE + CONSTRAINT 语法:

create table table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

在 SQL 中,我们有如下约束:

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。

三、SQL延伸命令
1、sqlserver中将所查询的列上添加单引号:

  select quotename(column_name,char(39)) from table_name; 

2、sqlserver中将查询出来的一个字段的所有值用逗号进行拼接:

select stuff((select ','+column_name from table_name for xml path('')),1,1,'');

3、sqlserver中将所查询出的结果用逗号显示在一行,并且添加单引号:

select stuff((select ','+quotename(column_name,char(39)) from table_name for xml path('')),1,1,'');
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值