SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制
RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。(比如 MS Access、SQL Server、MySQL)
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
1、DQL(Data Query Language)
数据查询语言(凡是带有select关键字的都是查询语句)
select......
2、DML(Data Manipulation Language)
数据操作语言(凡是对表当中的数据进行增删改的都是DML)
insert delete update
insert 增
delete 删
update 改
这个主要是操作表中的数据data
3、DDL(Data Definition Language)
数据定义语言(凡是带有create、drop、alter的都是DDL)
DDL主要操作的是表的结构;不是表中的数据
create:新建,等同于增
drop:删除
alter:修改
这个增删改和DML不同,这个主要是对表结构进行操作
4、TCL(Transactional Control Language)
是事务控制语言
事务提交:commit;
事务回滚:rollback;
5、DCL(Data Control Language)
数据控制语言
如:授权grant、撤销权限revoke....
某些数据库系统要求SQL语句以分号“;”结尾;分号“;”是在数据库系统中分隔每条 SQL 语句的标准方法
SQL语句不区分大小写
SELECT - 从数据库中提取数据
INSERT INTO - 向数据库中插入新数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
1、SELECT - 从数据库中提取数据
(1)SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
SQL SELECT 语法:
//查询某列
SELECT column_name,column_name FROM table_name;
//查询所有列
SELECT * FROM table_name;
(2)SELECT DISTINCT 语句
SELECT DISTINCT column_name,column_name FROM table_name;
在表中,一个列可能会包含多个重复值,有时仅需要列出不同(distinct)的值。DISTINCT 关键词用于返回唯一不同的值。
2、distinct 去除重复记录
select distinct job from emp;
注:
【1】select distinct查询原表数据不会被修改,只是查询结果去重
【2】distinct只能出现在所有字段的最前方
select empname,distinct job from emp;
如下就会报错:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct job from emp' at line 1
(1)distinct出现在两个字段之前,表示两个字段联合起来去重
select distinct job,deptno from emp;
(2)distinct 可以和 分组函数使用
select count(distinct job) as jobcount from emp;
(3)WHERE 子句
WHERE 子句用于过滤记录。
SELECT * FROM table表名 WHERE id=1;
WHERE 子句中的运算符
下面的运算符可以在 WHERE 子句中使用:
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
特殊条件
【1】空值判断: is null
Select * from user where name is null;
查询 user 表中 name 列中的空值。
is null 为 null;is not null 不为空
在数据库当中null不能使用等号"="进行衡量;需要使用is null
数据库中的null代表什么也没有,它不是一个值,所以不能使用等号"="衡量
【2】between and (在 之间的值)
Select * from user where score between 100 and 150;
查询 user 表中 score 列中大于 100 的小于 150 的值。
between … and …. 两个值之间, 等同于 >= and <=
使用between and的时候,必须遵循左小右大
between and是闭区间,包括两端的值
注意:大于等于 100 且小于等于 150, 100 为下限,150 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。
【3】In
Select * from user where score in (90,100,150);
查询 user 表 score 列中等于 90,100,150 的值。
in 包含,相当于多个 or (not in 表示不在这几个值当中的数据)
注:in不是一个区间。in后面跟的是具体的值
【4】like
Like模糊查询,通常和通配符百分号 % 和 下划线 _ 联合使用
Select * from user where name like 'X%';
查询 user 表中 name 列中有 'X' 的值,X' 为要查询内容中的模糊信息。
百分号%:匹配任意多个字符;下划线 _:任意一个字符(%是一个特殊的符号,_ 也是一个特殊符号)
'X% ':为能配符,正则表达式,表示的意思为模糊查询信息为 X 开头的
'%X ':为能配符,正则表达式,表示的意思为模糊查询信息为 X 结尾的
'%X%' : 表示查询包含X的所有内容
'%X_': 表示查询以X在倒数第二位的所有内容
'_X%':查询第二个字母为 X
'__X%':查询第三个字母为 X
'%\_%':\ 转义字符;查询带有 下划线 _ 的
【】查询名字中含有O
select name from user where name like '%O%';
【】查询名字以O结尾
select name from user where name like '%O';
【】查询名字以O开始
select name from user where name like 'O%';
【】查询第二个字每是O
select name from user where name like '_O%';
【】查询第三个字母是O
select name from user where name like '__O%';
【】查询名字中有下划线“_”
select name from user where name like '%\_%'; // \转义字符
(4)AND & OR 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
and优先级比or高
and和or同时出现,and优先级较高;如果想让or先执行,需要加“小括号”
在sql中,如果不确定优先级,就加小括号即可
(5)ORDER BY 关键字
ORDER BY 关键字用于对结果集进行排序。ORDER BY 关键字默认按照 升序(ASC) 对记录进行排序。如果需要按照降序对记录进行排序,使用 DESC 关键字。
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
2、INSERT INTO - 向数据库中插入新数据
INSERT INTO 语句用于向表中插入新记录。
INSERT INTO 语句可以有两种形式
(1)无需指定要插入数据的列名,只需提供被插入的值
INSERT INTO table_name
VALUES (value1,value2,value3,...);
(2)要指定列名及被插入的值
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
3、UPDATE - 更新数据库中的数据
UPDATE 语句用于更新表中的记录
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
4、DELETE - 从数据库中删除数据
DELETE 语句用于删除表中的记录。
DELETE FROM table_name
WHERE some_column=some_value;
SQL高级命令可参考SQL-简介,基本命令