sql是用于访问和处理数据库的标准的计算机语言。趁着假期学习总结下~
sql可以查询、从数据库取出数据、插入、更新、删除、创建新的数据库、创建新表、创建存储过程、创建视图、设置表视图和存储过程的权限。
一个数据库常包含一个或多个表,每个表由一个名字标识,表包含带有数据的记录。 sql对大小写不敏感
SELECT语句用于从一个表中选取数据,结果被存储在一个结果表中 语法:
关键词DISTINCT用于返回唯一不同的值 语法:SELECT DISTINCT 列名称 FORM 表名称
where子句同于规定选择的标准,如果需要有条件的从表中选取数据,可将where子句添加到select语句中 语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 可在where子句中使用的运算符:
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于(用于某些版本的SQL中) |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
一般的条件值周围都是用的是单引号,SQL使用单引号来环绕文本值,如果是数值,不需要使用引号。
AND和or用于基于一个以上的条件对记录进行过滤 在一个WHERE子句中将两个或多个条件结合起来。 也可以将AND和OR使用圆括号结合起来组成复杂表达式。
ORDER BY子句用于根据指定的列队结果集进行排序,默认按照升序对记录进行排序,如果要按照降序对记录进行排序,使用DESC关键字。 语法:
INSERT INTO用于向表格中插入新的行。 语法:
Update用于修改表中的数据 语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
DELETE用于删除表中的行 语法: DELETE FROM 表名称 WHERE 列名称 = 值
TOP子句用于规定要返回的记录的数目,这条语句对于拥有数千条记录的大型表而言,是很有用的。 不同数据库所支持的TOP子句是不一样的。 SQL Server:
SELECT TOP number|percent column_name(s) FROM table_name
Mysql:
SELECT column_name(s) FROM table_name LIMIT number
Oracle:
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
LIKE用于在WHERE子句中搜素列中的指定模式 语法:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
其中,通过NOT关键字,也可以反向匹配。
在搜索数据库时,可以使用SQL通配符,有点类似于正则表达式。 SQL通配符通常和LIKE运算符一起使用。 在SQL中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅代替一个字符 |
[charlist} | 字符列中的任何单一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何单一字符 |
IN操作符允许我们在WHERE子句中规定多个值。 语法:
SELECT column_name(s) FROM table_name WHERE column_name IN(value1,value2,...)
操作符BETWEEN会选取介于两个值之间的数据范围。 语法:
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 如果要显示范围之外的人,可以使用NOT操作符。
通过使用SQL,可以为列名称和表名称指定别名。
SQL join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。也就是将通过主外键连接的表中的列打印出来。 Join和Key 有时为了得到完整的结果,需要从两个或更多的表中获取结果,就需要执行join。
在表中至少有一个匹配时,INNER JOIN关键字返回行。
LEFT JOIN会从左表那里返回所有行,即使在右表中没有匹配的行。比如我们想要显示如果存在的东西。
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name = table_name2.column_name
返回右表中所有的行,即使在左表中没有匹配的行。 语法:
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
只要其中的某个表存在匹配,FULL JOIN就会返回行。如果那些行没有匹配,同样会列出。 语法:
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
UNION用于合并两个或多个SELECT语句的结果集。 UNION内部的SELECT语句必须拥有相同数量的列。每一列都必须有相似的数据类型。 语法:
SELECT column_name(s) FROM table_name1 UNION(all) SELECT column_name(s) FROM table_name2 其中,union操作符是选取不同的值,而union all是允许重复的值。
SQL SELECT INTO语句可用于创建表的备份原件或者对记录进行存档。 从一个表中选取数据,然后把数据插入另一个表中 语法
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename IN可用于向另一个数据库中拷贝表。
用于创建数据库:CREATE DATABASE database_name
用于创建数据库中的表。 语法:
CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )
SQL中常用的数据类型如下:
数据类型 | 描述 |
---|---|
integer(),int(),smallint(),tinyint(size) | 仅容纳整数,括号内规定数字的最大位数 |
decimal(size,d),numeric() | 容纳带小数的数字,其中size为规定数字的最大位数,d为规定小数点右侧的最大位数 |
char(size) | 容纳固定长度的字符串 |
varchar(size) | 可变长度的字符串 |
data() | 容纳日期 |
用于限制加入表的数据的类型。 常见的约束有:
约束 |
---|
NOT NULL |
UNIQUE |
PRIMARY KEY |
FOREIGN KEY |
CHECK |
DEFAULT |
如果不向字段添加值,就无法插入新纪录或者更新记录。
UNIQUE和主见约束均为列或者列集合提供了唯一性的保证,每个表可以有多个的UNIQUE约束,但是每个表只能有一个主键约束。
主键约束唯一标识数据库表中的每条记录。其中,主键必须包含唯一的值,不能包含NULL值,每个表都应该有一个主键,并且每个表只能有一个主键。
一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY
限制列中的值的范围。如果对单个列定义CHECK约束,则该列值允许特定的值,如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。
用于向列中插入默认值,如果没有规定其他的值,就添加默认值。
用于在表中创建索引,在不读取整个表的情况下,使用索引可以更快的查找数据。
CREATE INDEX index_name ON table_name (column_name)
CREATE UNIQUE INDEX index_name ON table_name (column_name)
使用DROP语句,可以轻松的删除索引,表和数据库
用于在已有的表中添加、修改或者删除列。
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name
ALTER TABLE table_name ALTER COLUMN column_name datatype
Auto-increment会在新纪录插入表中时生成一个唯一的数字。
视图是基于SQL语句的结果集的可视化的表。 语法:
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition 视图总是显示最近的数据。
处理日期时,为了确保所插入的日期的格式,也就是与数据库中日期格式相匹配。 重要的內建日期函数:
函数 | 描述 |
---|---|
now() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期 |
CURTIME() | 返回当前的时间 |
DATE() | 提取日期 |
EXTRACT() | 返回日期 |
DATE ADD() | 给日期添加指定的时间间隔 |
DATE SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
DATE FORMAT() | 用不同格式显示日期/时间 |
函数 | 描述 |
---|---|
GETDATE() | 返回当前日期和时间 |
DATEPART() | 返回日期或之间的单独部分 |
DATEADD() | 在日期中添加或减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的时间 |
CONVERT() | 用不同的格式显示日期或时间 |
NULL值是遗漏的未知数据,默认的,表的列可以存放NULL值。使用IS NULL来查找NULL值,使用IS NOT NULL读取不带有NULL值的操作符。
SQL拥有很多可用于计数和计算的内建函数。 内奸函数的语法:SELECT function(列) FROM 表
AVG函数返回数值列的平均值,NULL值不包括在计算中。
SELECT AVG(column_name) FROM table_name
返回指定列的值的数目
返回指定的字段中第一个记录的值。 可在排序之后根据排序结果找到最值。
和FIRST()类似,该函数返回的是最后一个记录的值。
返回一列中的最大值和最小值,NULL值不包括在计算中,可以用于文本列,获得按照字母顺序排列的最高或最低值。
返回数值列的总数。
用于结合合计函数,根据一个或多个列对结果集进行分组。
当WHERE关键字无法和合计函数一起使用时,使用HAVING子句。
该函数将字段的值转换为大写。 SELECT UCASE(column_name) FROM table_name
将字段的值转换为小写。
用于从文本字段中提取字符。 语法:
SELECT MID(column_name,start[,length]) FROM table_name
其中,各参数代表的意义如下:
参数 | 描述 |
---|---|
column_name | 必需。指的是要提取字符的字段 |
start | 必需,规定开始位置 |
length | 可选,要返回的字符数,如果省略的话,则返回剩余文本 |
LEN函数返回文本字段中值的长度。 语法:
SELECT LEN(column_name) FROM table_name
该函数用于把数值字段舍入为指定的小数位数。 语法: SELECT ROUND(column_name,decimals) FROM table_name
NOW函数返回当前的日期和时间。 语法:
SELECT NOW() FROM table_name
FORMAT()函数用于对字段的显示进行格式化。 语法:
SELECT FORMAT(column_name,format) FROM table_name
其中,format是必需字段,用来规定格式。