核心提示:code class='hljs http'SQL学习笔记总结基础部分一、基本概念1 什么是SQL: SQL就是结构化查询语言2 RDBMS: 关系型数据库管理系统3 SQL的语言的作用: SQL 面...
<code class=
"hljs http"
>
SQL学习笔记总结
基础部分
一、基本概念
1 什么是SQL: SQL就是结构化查询语言
2 RDBMS: 关系型数据库管理系统
3 SQL的语言的作用: SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的纪录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限
二、SQL语句分类
1) DDL 数据定义语言: SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
重要的SQL DDL语句:
1
CREATE
DATABASE
- 创建新数据库
2
ALTER
DATABASE
- 修改数据库
3
CREATE
TABLE
- 创建新表
4
ALTER
TABLE
- 变更(改变)数据库表
5
DROP
TABLE
- 删除表
6
CREATE
INDEX
- 创建索引(搜索键)
7
DROP
INDEX
- 删除索引
2) DML 数据操作语言
常见的DML语句: 增删改查
1
SELECT
- 从数据库表中获取数据
2
UPDATE
- 更新数据库表中的数据
3
DELETE
- 从数据库表中删除数据
4
INSERT
INTO
- 向数据库表中插入数据
三、 SQL语句讲解
1)
select
语句:
select
*
from
表名;
select
列名
from
表名;
select
distinct
列名
from
表名;
select
distinct
列1,列2
from
表名 筛选列1和列2值都一样的行,只显示一个
2)
where
语句: 用于规定选择标准
select
列名
from
表名
where
列名 值(表达式)
where
语句中常用的表达式:
= 等于
<> 不等于
> 大于
< 小于
>= 不小于
<= 不等于
between
在某个范围内
like
搜索某种模式
and
用于基于一个条件以上对记录的连接
or
运算符用于基于一个以上的条件对记录进行过滤
3)
order
by
语句: 用于对结果集排序
order
by
语句用于对列的排列,默认是按升序排序的,可以使用
desc
关键字按降序排序。
order
by
后面可以跟多个列,排序优先顺序是
先按
order
by
后面的第一个列排序,再排下一个,以此类推……
4)
insert
into
语句: 语句用于向表格中插入新的行
insert
into
表名
values
(值1,值2,……)
insert
into
表名 (列1,列2,……)
values
(值1,值2,……)
5)
update
语句:
update
语句用于修改表中的数据, 语法格式:
update
表名
set
列名=新值
where
列名=某值 【对表中所有满足条件的行进行的修改】
60
delete
语句: 删除表中的行 语法格式:
delete
from
表名
where
列名=值
delete
from
表名 删除所有行
delete
*
from
表名 删除所有行
高级部分
一、基本语句
1)
TOP
子句:
TOP
子句用于规定要返回的记录的数目,该语句不是所有数据库都支持,不同数据库有不同的语法,
MySql中语法:
SELECT
column_name(s)
FROM
table_name LIMIT number 此语句按表中顺序,从开始查询number个行数据
2)
like
操作符:
like
操作符用于在
where
语句中搜索列中指定的模式
语法格式:
select
列名
from
表名
where
列名
like
模式
3) 通配符: 在数据库操作中,可以用通配符代替字符,SQL中的通配符必须和
like
运算符在一起使用,常见的通配符及其作用如下:
% 代替一个或者多个字母
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 不在字符列中的任何单一字符
[!charlist] 不在字符列中的任何单一字符
4)
in
操作符:
in
操作符允许我们在
where
语句中规定多个值
语法格式:
select
列名
from
表名
where
in
(value1, value2...)
5)
between
操作符: 用于在两个值得范围之间选取数据,
between
后面的值可以是文本,数字和日期
语法格式:
select
列名
from
表名
where
列名
between
值1
and
值2
select
列名
from
表名
where
列名
not
between
值1
and
值2 表示选取规定范围之外的值
6) Alias 别名:使用此语句为列名指定别名
表的Alias语法:
SELECT
column_name(s)
FROM
table_name
AS
alias_name
列的Alias语法:
SELECT
column_name
AS
alias_name
FROM
table_name
7)
join
语句
8)
inner
join
语句
9)
left
join
语句
10)
right
join
语句
11)
full
join
语句
12)
union
和
union
all
语句
union
语句用来合并两个或者多个
select
语句的结果集,使用
union
语句必须保证每条
select
语句都有相同的列,
并且相同的列有相似的数据类型;
union
all
语句和
union
语句一样,二者区别在于
union
all
语句会显示所有的数据,
union
语句对于重复数据只显示一个
13)
select
into
语句
14)
create
database
数据库名 用于创建数据库
15)
create
table
语句用于创建数据库中的表 语法格式:
CREATE
TABLE
表名称(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
......
)
16)
create
index
创建索引
17)
drop
撤销语句
18)
alter
用于在已有的表中添加,删除或修改列
在表中添加列
alter
table
表名
add
列名 数据类型
删除表中的列
alter
table
表名
drop
column
列名
修改列中的数据类型
alter
table
表名
alter
column
列名 数据类型
19) auto_increment字段 在新纪录插入表中时生成一个唯一的数字
20) 创建视图
view
21)
null
值
is
null
is
not
null
常用作条件来查找数据
22)
group
by
语句 常用于对合计函数统计后的数据排列,合计函数统计的结果是
group
by
后面的列为集合单位的
例如,
select
name
,
sum
(number)
from
a
group
by
name
把
name
对应下的同名的值相加分别显示
23)
having
使用
having
的原因是
where
语句不能和合计函数一起使用,是一种条件过滤语句
二、SQL约束(Constrains)
1)
not
null
强制列不接受空值
2)
unique
约束唯一标识数据库表中的每条记录,
primary
key
和
unique
都为数据库表的列或者列集合提供了唯一性的保证,
primary
key
拥有自定义的
unique
,注意每个表可以有多个
unique
,但是只能有一个
primary
key
;
不同的数据库有不同的语法格式, MySql中如下:
CREATE
TABLE
Persons
(
Id_P
int
NOT
NULL
,
LastName
varchar
(255)
NOT
NULL
,
FirstName
varchar
(255),
FirstName
varchar
(255),
UNIQUE
(Id_P)
)
如果需要给
unique
命名以及为多列命名,可以:
CONSTRAINT
uc_PersonID
UNIQUE
(Id_P,LastName)
如果表已经创建好,需要追加
unique
约束,可以:
alter
table
表名
add
unique
(列名) [一次只能约束一个列]
alter
table
表名
add
constrain
unique
约束的名称
unique
(列1,列2...)
如果需要撤销约束,可以:
alter
table
表名
drop
index
unique
约束的名称
3)
primary
key
约束 约束唯一标识数据库表中的每条记录,主键必须包含唯一的值,每一个表应该有一个主键并且只有一个主键,主键值不能为
null
主键约束和
unique
约束的用法一样,格式一样,可以追加,撤销主键,还可以为多个列设置主键
4)
foreign
Key
外键约束 ; 一个表中的外键
foreign
指向另一个表的主键
primary
key
外键约束的作用: 一、 该约束用于预防破坏表之间连接的动作
二、 该约束也可以预防非法数据插入到外键列,因为它必须指向另外一个表的值之一
如果需要命名外键并且为多个列创建外键,可以: constrain 外键名
foreign
key
(值1,值2,……)
references
表名(列名)
还可以撤销外键
alter
table
表名
drop
foreign
key
外键名
还可以增加外键
alter
table
表名
add
foreign
key
(列)
references
表名称(列)
5)
check
约束 用于约束列的取值范围
6)
default
约束
函数
一、函数分类
函数基本类型: Aggregate 函数(合计函数)[操作面向一系列的值并返回一个值]
Scalar 函数[操作面向一个单一的值,返回基于输入值得单一的值]
二、函数详解
1)
avg
() 返回平均值 语法格式:
select
avg
(列名)
from
表名称
2)
count
() 返回匹配指定条件的函数 语法格式:
select
count
(列名)
from
表名称
SELECT
COUNT
(
DISTINCT
column_name)
FROM
table_name 返回指定列不同值得数目
max
()
min
()
sum
()
3) ucase() 把字段值改为大写
lcase() 把字段值改为小写
4) mid() 从文本字段中提取字符
SELECT
MID(column_name,start[,length])
FROM
table_name
参数 描述
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
如:
SELECT
MID(City,1,3)
as
SmallCity
FROM
Persons
5) len() 返回文本字段的长度
SELECT
ROUND(column_name,decimals)
FROM
table_name
参数 描述
column_name 必需。要舍入的字段。
decimals 必需。规定要返回的小数位数。
6) now() 返回当前时间
7) format() 用于对字段的显示格式化
SELECT
FORMAT(column_name,format)
FROM
table_name
参数 描述
column_name 必需。要格式化的字段。
format 必需。规定格式。
</code>