SQL:Structured query language
ANSI: American national standard institute
结构 表 索引 视图 存储过程 函数 触发器
操作
数据字典commit
设置用户grant revoke权限
查询
删除:delete from user where user_id = 299;
Truncate
RDBMS关系型数据库管理系统,relational database management system
DDL数据定义语言(改变数据库结构)
创建: create table
更改: alter table
删除: drop table
DML数组操纵语言(检索插入修改数据 SQL)
插入insert
删除delete
修改update
检索select
DCL(数据控制语言)控制命令
Grant 授予权限
Revoke撤销授权
SQL RDBMS 关系数据库管理系统 relationl database management system
表:相关数据条目的集合,它是由许多列行组成
字段:每个表分成更小的实体,称为字段,表中列,用于维护有关表中每条记录特定信息
记录、数据:数据行) 表中每个单独的条目
列:表中垂直实体,特定字段关联的所有信息
空值:空值!= 零值 创建时留空的字段
约束:数据列上强制执行的规则,限制可以进入表中的数据类型
Not null
Default:提供该列数据末指定时采用的默认值
Unique:保证列中所有数据各不相同
主键:唯一标识数据表中行、记录primary key
外键:唯一标识其他表中一条行记录
Check:保证列中所有值满足某一条件
索引:数据库快速创建或索引数据
数据完整性:表中没有重复值
域完整性:通过限制值的类型,格式,或范围,强制执行给定列的有效条目
引用完整性:不能删除其他记录使用的行
用户定义完整性:强制执行一些不属于实体,域或引用完整性的特定业务规则
SQL语法
Select insert into update delete drop create
Create database alter database修改数据库
Drop table删除表
Create index创建删除索引
Drop index
Truncate截断语句
Distinct:在一张表中,包含许多重复的值,只想列出不同的值(different)
Select distinct column1, column2, … from table_name;
Select count(distinct country) from customer;
And & OR NOT
Order by 用于按升序或者降序对结果集进行排列,默认是升序,desc降序
Insert into两种表示
从查询表中插入
NULL值,字段没有值
Is null : select column_names from table_name where column_name IS NULL;
Is not null: select column_names from table_name where column_name is not NULL;
创建表 create table
Update
Update customer set contactName=’Juan’ where country=’Mexico’;
Delete
运算符 + - * / %
= != <> > < >= <= !< !>
Sql运算符
All and any between exists in like not or is null unique
布尔表达式:匹配单个值获取数据
数值表达式
avg()、sum()、count()
select count(*) as “RECORDS” from customers;
日期表达式
Select current_timestamp返回当前系统日期和时间值
Select getdate();;
Select top语句limit rownum
MySQL支持LIMIT子句来选择有限数量的记录,而Oracle使用ROWNUM。
简单的分页方法,使用LIMIT可以减少查询数据返回的时间,提高效率。
Select top 50 percent * from customers;
Sql like运算符:搜索列中指定的模式
Wildcards通配符:替换字符串中任何其他字符
SQL in运算符允许在where 中指定多个值
是多个or条件的简写
SQL between运算符
Sql通用数据类型
不同数据库平台某些数据类型通用名称
Sql语句快速参考
SQL join 用于把来自两个或多个表的行结合起来。基于这些表之间的共同字段。
先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上
Inner join(内连接)
Left Join左连接
SQL左链接LEFT JOIN关键字返回左表(表1)中的所有行,即使在右表(表2)中没有匹配。如果在正确的表中没有匹配,结果是NULL。
LEFT JOIN 关键字返回左表(Customers)中的所有行,即使在右边表(Orders)中没有匹配。
Right Join右连接
SQL右链接 RIGHT JOIN 关键字返回右表(table2)的所有行,即使在左表(table1)上没有匹配。如果左表没有匹配,则结果为NULL。
FULL OUTER JOIN关键字返回左表(Customers)中的所有行,以及右表(Orders)中的所有行。如果 "Customers"中的行中没有"Orders"中的匹配项,或者"Orders"中的行中没有 "Customers"中的匹配项,那么这些行也会列出。
Full outer join完整外部连接
Self Join自连接
自联接是一种常规联接,但表本身是连接的
Union运算符
UNION运算符用于组合两个或更多SELECT语句的结果集,而不返回任何重复的行
UNION All运算符用于组合两个SELECT语句(包括重复行)的结果。
Select into语句:将信息从一个表中复制到另外b一个表中
即:从表中复制数据,然后将数据插入到另外一张表中
撤销索引,表,数据库
Drop index删除表中的索引
仅仅删除表中的数据
Create table
Alter table向表中添加列
Sql auto_increment字段: 会在新记录插入表中时生成一个唯一的数字
我们通常希望在每次插入新记录时自动创建主键字段的值。
我们可以在表中创建一个自动增量(auto-increment)字段。
mysql
Sql server ID列定义自动递增主键字段
提示:指定“ID”列以10开头,并递增5,将标识( identity )更改为IDENTITY(10,5)。
要在 "Persons" 表中插入新记录,我们不需要为"ID"栏指定值(自动添加唯一值):
Oracle
您必须使用序列( sequence )对象(该对象生成数字序列)创建自动增量( auto-increment )字段。
Create view创建视图
在 SQL 中,视图是基于 SQL 语句的结果集的可视化表。
视图包含行和列,就像真正的表一样。视图中的字段是一个或多个数据库中真实表中的字段。
您可以添加 SQL 函数,在哪里添加,并将语句连接到视图,或者您可以呈现数据,就像数据来自单个表一样。
视图总是显示最新数据!每当用户查询视图时,数据库引擎就使用视图的 SQL 语句重新构建数据
更新视图
Sql date
Sql 别名aliases
约束
约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。
约束有列级和表级之分,列级约束作用于单一的列,而表级约束作用于整张数据表
删除约束
主键约束(Primary Key)、外键约束(Foreign Key)、唯一性约束(Unique Constraint)以及上面提到的其他约束
如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法
主键约束
如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:
外键约束foreign key
Default约束
Check约束
右连接
右链接返回右表中的所有记录,即是左表中没有任何满足匹配条件的记录。这意味着,如果 ON 子句在左表中匹配到了 0 条记录,该连接仍然会返回至少一条记录,不过返回的记录中所有来自左表的字段都为 NULL。
这就意味着,右连接会返回右表中的所有记录,加上左表中匹配到的记录,或者是 NULL (如果连接谓词无法匹配到任何记录的话)。
克隆数据表
索引
避免使用索引:
1小数据表
2频繁大量更新或插入操作的表
3列中包含大数或NULL值
4频繁操作列
子查询不能使用 ORDER BY,不过主查询可以。在子查询中,GROUP BY 可以起到同 ORDER BY 相同的作用。
SQL ALTER TABLE 命令用于添加、删除或者更改现有数据表中的列。
你还可以用 ALTER TABLE 命令来添加或者删除现有数据表上的约束。
处理重复数据:distinct
有时候,数据表中会存在相同的记录。在获取表中记录时,相较于取得重复记录来说,取得唯一的记录显然更有意义。
我们之前讨论过的 SQL DISTINCT 关键字,与 SELECT 语句一起使用可以时,可以达到消除所有重复记录,只返回唯一记录的目的。
使用视图:
视图无非就是存储在数据库中并具有名字的 SQL 语句,或者说是以预定义的 SQL 查询的形式存在的数据表的成分
在使用时视图可以被视为一个“虚拟表
SAVEPOINT 是事务中的一个状态点,使得我们可以将事务回滚至特定的点,而不是将整个事务都撤销。
RELEASE SAVEPOINT 命令用于删除先前创建的保存点
临时表
GROUP BY语句通常与集合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以按一个或多个列对结果集进行分组。
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与 Aggregate 函数一起使用。
HAVING子句已添加到SQL中,因为WHERE关键字不能用于聚合函数
SQL 字母大小写转换函数UPPER(s)、UCASE(s)、LOWER(s)和LCASE(s)
FORMAT() 函数用于对字段的显示进行格式化。
ROUND() 函数用于把数值字段舍入为指定的小数位数。
SQRT 函数用于计算得出任何数值的平方根
QL 有一个 RAND 函数,用于产生 0 至 1 之间的随机数
CONCAT 函数用于将两个字符串连接为一个字符串
SQL TRIM()函数去除字符串头尾空格