1、事务的四大特性是什么?
- 原子性,要么执行,要么不执行
- 隔离性,所有操作全部执行完以前其它会话不能看到过程
- 一致性,事务前后,数据总额一致
- 持久性,一旦事务提交,对数据的改变就是永久的
PS:sql语句
sql对大小写不敏感。
1.SQL DML 和 DDL
可以把 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 - 删除索引
select语句
从表中选取数据
1 | SELECT 列名称,列名称 FROM 表名称 |
distinct语句
关键词 DISTINCT 用于返回唯一不同的值。
1 | SELECT DISTINCT 列名称 FROM 表名称 |
where
WHERE 子句用于规定选择的标准
1 | SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 |
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
and和or运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
1 | SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') |
order by
ORDER BY 语句用于对结果集进行排序。
例如:
1 | /*按照company名字进行升序排序*/ |
insert into
INSERT INTO 语句用于向表格中插入新的行。
1 | /*(值1, 值2,....)构成新的一行*/ |
update
修改列值
1 | UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 |
delete
删除表中的行
1 | DELETE FROM 表名称 WHERE 列名称 = 值 |
top
1 | /*选取头两条记录*/ |
like
用在where子句中搜索列中的指定模式
1 | /*从 "Persons" 表中选取居住在以 "N" 开始的城市里的人*/ |
“%” 可用于定义通配符(模式中缺少的字母)。
SQL 通配符必须与 LIKE 运算符一起使用。
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何单一字符 |
1 | /*从 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人*/ |
in
IN 操作符允许我们在 WHERE 子句中规定多个值。
1 | /*选取姓氏为 Adams 和 Carter 的人*/ |
alias(别名-AS)
1 | SELECT column_name AS alias_name |
join
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
inner join(内连接)
INNER JOIN 与 JOIN 是相同的。
1 | SELECT column_name(s) |
没有匹配的话,就不会返回行了
同理:left join…
union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
1 | /*列出所有在中国和美国的不同的雇员名*/ |
union只会选择出不同值,union all会选择出所有值(包括了两个表之间的共同值)
union合并需要UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型
select into
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
1 | SELECT * |
1 | /*从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建了一个带有两个列的名为 "Persons_backup" 的表*/ |
create
1 | CREATE DATABASE database_name |
1 | create table train( |
constraints
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
NOT NULL
UNIQUE
- ```sql
/当表已经被创建时添加约束/
ALTER TABLE Persons
ADD UNIQUE (Id_P)
/添加多个约束/
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)1
2
3
4
5
6
7
8
9
10
11
12
- PRIMARY KEY
- UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
- 每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
- ```sql
ALTER TABLE Persons
ADD PRIMARY KEY (Id_P)
- ```sql
FOREIGN KEY
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) ) /*在已存在的情况下创建约束*/ ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) /*撤销相关的约束*/ ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- CHECK
- CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
```sql
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
/*撤销check约束*/
ALTER TABLE Persons
DROP CHECK chk_Person
DEFAULT
DEFAULT 约束用于向列中插入默认值。
```sql
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT ‘Sandnes’
)SQL View
SQL Date
SQL Nulls
SQL isnull()
SQL 数据类型
SQL 服务器
SQL 函数
SQL functions
SQL avg()
SQL count()
SQL first()
SQL last()
SQL max()
SQL min()
SQL sum()
SQL Group By
SQL Having
SQL ucase()
SQL lcase()
SQL mid()
SQL len()
SQL round()
SQL now()
SQL format()
SQL 总结
SQL 快速参考
SQL 教程总结
SQL 测验
SQL 测验
建站手册
网站构建
万维网联盟 (W3C)
浏览器信息
网站品质
语义网
职业规划
网站主机
编程
Python 教程
关于 W3School
帮助 W3School
SQL DEFAULT 约束
SQL Check
SQL Create Index
SQL DEFAULT 约束
DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
SQL DEFAULT Constraint on CREATE TABLE
下面的 SQL 在 “Persons” 表创建时为 “City” 列创建 DEFAULT 约束:My SQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT ‘Sandnes’
)
通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
OrderDate date DEFAULT GETDATE()
)
SQL DEFAULT Constraint on ALTER TABLE
/在表已存在的情况下为 “City” 列创建 DEFAULT 约束/
ALTER TABLE Persons
ALTER City SET DEFAULT ‘SANDNES’
/需撤销 DEFAULT 约束/
ALTER TABLE Persons
ALTER City DROP DEFAULT1
2
3
4
5
6
7
8
9
### index
在表中创建索引
```sql
/*允许使用重复的值*/
CREATE INDEX index_name
ON table_name (column_name)
View
视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
视图的作用:
- 简化了操作,把经常使用的数据定义为视图,可以将复杂的SQL查询语句进行封装。
- 安全性,用户只能查询和修改能看到的数据。
- 使用视图,基表中的数据就有了一定的安全性。因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以不通过视图将基表中重要的字段信息给用户。视图是动态的数据的集合,数据是随着基表的更新而更新的。同时,用户对视图,不可以随意的更改和删除,可以保证数据的安全性。
- 逻辑上的独立性,屏蔽了真实表的结构带来的影响。