SQL基础知识 适合初学者

增删改查
SELECT
SELECT 语句用于从表中选取数据。

SELECT 列名 FROM 表名
SELECT * FROM 表名
DISTINCT
仅列出表中不同(distinct)的值,用于返回唯一不同的值(剔重)SELECT DISTINCT 列名 FROM 表名
AS
为列名称和表名称指定别名(Alias)。

SELECT * FROM 表名 AS 别名
ORDER BY
用于根据指定的列对结果集进行默认升序排序,降序DESCSELECT * FROM 表名 ORDER BY 列名 DESC
INSERT INTO
向表格中插入新的行。

INSERT INTO 表名 VALUES ('值1''值2')
INSERT INTO 表名 (1,2) VALUES ('值1', '值2')
UPDATE
修改表中的数据。

UPDATE 表名 SET 列名 = '新值' WHERE 某列名 = '某值'
UPDATE 表名 SET 列名1 = '新值1' , 列名2 = '新值2' WHERE 某列名 = '某值'
DELETE
删除表中的行。

DELETE FROM 表名 WHERE 列名 = '值'
INTO
从一个表中选取数据,然后把数据插入另一个表中。
常用于创建表的备份复件或者用于对记录进行存档。

SELECT 列名
INTO 新表(需要插入的表名)
FROM 旧表1 A
INNER JOIN 旧表2 B ON A.1 = B.2
WHERE A.11='值1' AND B.22='值2'
CREATE
创建数据库。

CREATE DATABASE 库名
1
CREATE TABLE
创建数据库中的表。

CREATE TABLE 表名(
    列名1 数据类型,
    列名2 数据类型
)
数据类型	描述
INTRGER(SIZE)	整数,SIZE规定数字的最大位数。
INT(SIZE)	整数,SIZE规定数字的最大位数。
SMALLINT(SIZE)	整数,SIZE规定数字的最大位数。
TINYINT(SIZE)	整数,SIZE规定数字的最大位数。
DECIMAL(SIZE,NUM)	带小数的数字,SIZE规定数字的最大位数,NUM规定小数点后几位。
NUMERIC(SIZE,NUM)	带小数的数字,SIZE规定数字的最大位数,NUM规定小数点后几位。
CHAR(SIZE)	固定长度字符串,SIZE规定长度
VARCHAR(SIZE,NUM)	可变长度字符串,SIZE规定最大长度
DATE(YYYYMMDD)	日期,YYYYMMDD规定格式
条件/连接
WHERE
有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

SELECT 列名 FROM 表名 WHERE 列 运算符 值
运算符
运算符	描述
=	等于
<>	不等于
>	大于
<	小于
>=	大于等于
<=	小于等于
BETWEEN	在某个范围
LIKE	模糊搜索
AND	前后条件都成立
OR	前后条件其中一个
LIKEWHERE 子句中搜索列中的指定模式。

SELECT * FROM 表名 WHERE 列名 LIKE '%值%' #包含
SELECT * FROM 表名 WHERE 列名 NOT LIKE '%值%' #不包含

通配符
替代一个或多个字符。

通配符	描述
%	替代一个或多个字符
_	仅替代一个字符
[ABC]	ABC中的任何单一字符
[!ABC]	不在ABC中的任何单一字符
INWHERE 子句中规定多个值。

SELECT * FROM 表名 WHERE 列名 IN (1,2)
BETWEEN
选取介于两个值之间的数据范围,包含BETWEEN,不包含ANDSELECT * FROM 表名 WHERE 列名 BETWEEN '值1' AND '值2'
JOIN
根据两个或多个表中的列之间的关系,从这些表中查询数据。
INNER JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

SELECT a1.,a2.FROM1 AS a1,2 AS a2 
WHERE a1.id = a2.Id
INNER JOIN
在表中存在至少一个匹配时,返回行。

SELECT a1.,a2.FROM1 AS a1 
INNER JOIN2 AS a2 
ON a1.id = a2.Id

LEFT JOIN
从左表返回所有的行,即使在右表中没有匹配的行。

SELECT a1.,a2.FROM1 AS a1 
LEFT (OUTER) JOIN2 AS a2 
ON a1.id = a2.Id

RIGHT JOIN
从右表返回所有的行,即使在左表中没有匹配的行。

SELECT a1.,a2.FROM1 AS a1 
RIGHT (OUTER) JOIN2 AS a2 
ON a1.id = a2.Id

FULL JOIN
只要其中某个表存在匹配,就会返回行。

SELECT a1.,a2.FROM1 AS a1 
FULL (OUTER) JOIN2 AS a2 
ON a1.Id = a2.Id

取整函数
CEIL
向上取整,只返回值的整数部分,有小数都进1

CEIL(0.1) = 1

FLOOR
向下取整,只返回值的整数部分

FLOOR(0.9) = 0
ROUND
四舍五入,后面为保留小数位数

ROUND(0.49,0) = 0
ROUND(0.5,0) = 1
ROUND(1,2) = 1.00
TOP
规定要返回的记录的数目,并非所有的数据库系统都支持 TOP 子句。

#MYSQL
SELECT TOP 条目数 FROM 表名
SELECT TOP 百分数 PERCENT FROM 表名

#ORACLE
SELECT * FROM 表名 WHERE ROWNUM <= TOP值

格式/规则
CAST
转换数据格式

CAST(expression AS data_type)
数据格式	函数
二进制	BINARY
字符	CHAR
日期	DATE
时间	TIME
日期时间	DATETIME
浮点数	DECIMAL
整数	SIGNED
无符号整数	UNSIGNED
UNIONUNION ALL
UNION
UNION 操作符选取不同的值,重复的值只显示一次。

SELECT 列名 FROM1
UNION
SELECT 列名 FROM2

UNION ALL
UNION ALL操作符选取不同的值,允许显示重复的值。

SELECT 列名 FROM1
UNION ALL
SELECT 列名 FROM2

Constraints (约束)
NOT NULL
约束列不可为NULL值。

CREATE TABLE 表名(
    列名1 数据类型 NOT NULL,
    列名2 数据类型 NOT NULL
)

UNIQUE/PRIMARY KEY
约束唯一标识数据库表中的每条记录。
每个表都有一个主键,并且每个表只能有一个主键,主键必须包含唯一的值。
UNIQUEPRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束
PRIMARY KEY不能为NULLUNIQUE可为NULL
创建UNIQUE/PRIMARY KEY约束
#MYSQL
CREATE TABLE 表名(
    列名1 数据类型 NOT NULL,
    列名2 数据类型,
    PRIMARY KEY (列名1)UNIQUE (列名2)
)

#ORACLE/SERVER/MS ACCESS
CREATE TABLE 表名(
    列名1 数据类型 NOT NULL PRIMARY KEY,
    列名2 数据类型 UNIQUE
)

#定义多列约束
CREATE TABLE 表名(
    列名1 数据类型 NOT NULL,
    列名2 数据类型 NOT NULL,
    列名3 数据类型,
    列名4 数据类型 NOT NULL,
    CONSTRAINT 约束名 PRIMARY KEY (列名1,列名2)CONSTRAINT 约束名 UNIQUE (列名3,列名4)
)

新增UNIQUE/PRIMARY KEY约束
ALTER TABLE 表名
    ADD UNIQUE (列名1),
    ADD PRIMARY KEY (列名2)

#定义多列约束
ALTER TABLE 表名
    ADD CONSTRAINT 约束名 UNIQUE (列名1,列名2),
    ADD CONSTRAINT 约束名 PRIMARY KEY (列名3,列名4)

取消UNIQUE/PRIMARY KEY约束
#MYSQL
ALTER TABLE 表名
    DROP INDEX 约束名,
    DROP PRIMARY KEY

#ORACLE/SERVER/MS ACCESS
ALTER TABLE 表名 DROP CONSTRAINT 约束名

猜你喜欢

转载自blog.csdn.net/qq_43565087/article/details/103583740