最全sql语法,快速学习

最近因工作原因,需要转战ai,准备一天时间学习sql以备后续工作。

sql定义

sql是一种ANSI的标准计算机语言,指结构化查询语言,简单理解是访问数据库的一种语言。是一种通用语言,针对不同的数据库管理系统,均可以使用sql对其进行一系列操作。

数据库DB(database)用于保存各种类型的数据。
数据库管理系统DBMS(database manage system)用于对数据库进行管理的工具。
sql即就是DBMS管理DB采用的语言。

sql可以做什么?

SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限

数据库的存储特点:

一个数据库通常不会直接将数据保存在其内。首先会将数据保存到数据库中的表,一个数据库通常包含一个或者多个表,每个表会由一个名字进行标识,并且表中带有数据的记录(行)。

sql的语法特点:

1.sql对于大小写不敏感
2.sql语句后可以不加分号,分号用于分隔每条sql语句的标准方法。
3."%" 可用于定义通配符(模式中缺少的字母)。

sql中DML和DDL

SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

查询和更新指令构成了 SQL 的 DML 部分:

SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。
我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

sql中常用语句用法:

select 和select * 语句

select 用于从表中选取数据,其结果被存储在一个结果表中,结果表又称为结果集。

语法:
select 列名称 from 表名称
select * from 表名称

select * 从表中选取所有的列,星号(*)是选取所有列的快捷方式。

select distinct 语句
对于表中可能会出现重复值,如果需求为仅仅列出不同(distinct)的值,需要关键词 distinct。

语法:
select distinct 列表名称 from 表名称

where子句
对于需要有条件的从表中选取数据,可以将where子句添加到select语句中。

语法:
select 列名称 from 表名称 where 列 运算符 值

以下是常用运算符:
= 等于
<> 不等于 <> 可以写为 !=
< 小于 >= 大于等于 > 大于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

值得注意的是,条件值周围使用的是单引号,sql中使用单引号来环绕文本值。如果是数值,则无需引号。
例如:

文本值:

这是正确的:
SELECT * FROM Persons WHERE FirstName=‘Bush’
这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush

数值:

这是正确的:
SELECT * FROM Persons WHERE Year>1965
这是错误的:
SELECT * FROM Persons WHERE Year>‘1965’

and 和or 运算符

AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

order by子句

用于对结果集进行排序
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

insert into 语句

用于对表格中插入新的行
语法:
insert into 表名称 values(值1,值2,。。。)
也可以指定所要插入数据的列:
insert into table_name(列1,列2,。。。) values (值1,值2,。。。)

update语句

用于修改表中的数据

语法:
update 表名称 set 列名称 = 新值 where 列名称 =某值

delete语句

用于删除表中的行
语法:
delete from 表名称 where 列名称 =值
删除所有行:可以在不删除表的情况下删除所有行,则表的结构、属性和索引都是完整的。

sql高级语法:

1. top子句
top子句用于规定要返回的记录的数目,一般用于数千条记录的大型表中,但并非所有的数据库都可以使用top子句。
语法:
SELECT TOP number|percent column_name(s)
FROM table_name
2. link操作符
link操作符用于在where子句中搜索列中的指定模式。
语法:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
3. sql的通配符
在搜索数据库中的数据时,sql通配符可以替代一个或多个字符。
通配符需要和link运算符一起使用。

以下是常用通配符:
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符

4. in操作符
in操作符允许在where子句中规定多个值。
语法:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,…)
5. between 操作符
between操作符在where子句中使用,可以选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
语法:
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
对于不同的数据库对于两个边界的包含有各自规定,需要注意。
6.alias 别名
通过这个语句可以对列名称和表名称进行指定别名
表的sql alias 语法:
SELECT column_name(s)
FROM table_name
AS alias_name
列的sql alias 语法:
SELECT column_name AS alias_name
FROM table_name
7.join语句
用于根据两个或多个表中的列之间的关系,从这些表中查询数据。对于从两个或更多的表中获取结果则执行join。
join和key

数据库中的表可以通过键将其之间进行联系,主键(primary key )是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样就可以保证每个表中的数据不会出现重复的状态,将表之间的数据交叉捆绑起来。

包括内连接:inner join
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

inner join ,对于表中存在至少一个匹配时,inner join关键字返回行。
语法:
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

INNER JOIN 与 JOIN 是相同的。

**left join ,**会从左表(table_name1)返回所有行,即使右表中没有匹配的行
语法:
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

right join 会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
语法:
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

**full join,**只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
语法:
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

8.union 和 union all
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION 语法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

SQL UNION ALL 语法:
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

9.select into语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
语法:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

10.create 语句
CREATE DATABASE 用于创建数据库。
语法:
CREATE DATABASE database_name

CREATE TABLE 语句用于创建数据库中的表。
语法:
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,

)
数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:
在这里插入图片描述
11.sql约束

约束用于限制加入表的数据的类型。

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

主要探讨以下几种约束:

NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT

not null ,约束强制列不接受 NULL 值。NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
例:
下面的 SQL 语句强制 “Id_P” 列和 “LastName” 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

**unique 约束,**唯一标识数据库表中的每条记录。UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
撤销 UNIQUE 约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

sql函数

SQL 拥有很多可用于计数和计算的内建函数。内建函数的语法为:SELECT function(列) FROM 表
在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:
合计函数(Aggregate functions)
Aggregate 函数的操作面向一系列的值,并返回一个单一的值。
注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!
Scalar 函数
Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。
详见链接:https://www.w3school.com.cn/sql/sql_func_count.asp

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值