注意:SQL 对大小写不敏感:SELECT 与 select 是相同的。
1、逻辑运算
(1)And:与 同时满足两个条件的值。
(2)Or:或 满足其中一个条件的值。
(3)Not:非 满足不包含该条件的值。
逻辑运算的优先级:() > not > and > or
2、SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
3、WHERE子句中的运算符:
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值
4、DDL语句
1)创建数据库
1>create database d1;
2>选择要操作的数据库:USE d1; 对于要操作的数据库我们需要使用use来选择一下!
2)创建表(在哪个数据库里面创建表需要先使用use选择到那个要操作的数据库)
1>创建表
create table 表名(
字段1名 字段1类型 列的约束条件,
字段2名 字段2类型 列的约束条件,
...
)
2>创建完表之后可以查看表的定义
desc 表名;
4)删除表
drop table 表
5)修改表
1>修改表的字段类型
alter table 表名 modify [column] 字段定义 [first|after 字段名];
2>增加表字段
alter table 表名 add [column] 字段定义 [first|after 字段名];
3>删除表字段
alter table 表名 drop [column] 字段名;
4>字段改名
alter table 表名 change [column] 旧的字段名 字段定义 [first|after 字段名];
注:change与modify都可以修改表的定义,不同的是change后面需要接两次列名,不方便,但是优点是change可以修改字段名称
5>修改字段排列排序
前面介绍的字段增加和修改语法(add/change/modify)中,都有一个可选项first|after 字段名,这个选择可以用来修改
字段在表中的位置新增的字段默认是加载在表中最后位置,而change/modify 默认都不会改变字段的位置
alter table t1 modify id2 tinyint first;
alter table t1 modify id2 tinyint after id1;
注意:change/first|after 字段名 这些关键字都是属于MySQL在标准SQL上的扩展,在其他的数据库上不一定适用
6)更改表名
alter table 表名 rename [to] 新的表名;
8、DML语句
查询: select * from 表名;
1)插入记录
1>插入记录
insert into 表名(字段1,字段2,字段3,...,字段n) values(值1,值2,值3,...,值n);
也可以不用指定字段名,但是values后面的顺序应该和字段的排序一致
2>插入多个记录(注意不要忘记每次输入值之后)
insert into 表名(字段1,字段2,字段3,...,字段n) values
(值1,值2,值3,...,值n),
(值1,值2,值3,...,值n),
(值1,值2,值3,...,值n);
2)更新记录
1>更新一个表(修改字段值)
update 表名 set 字段1=值1,字段2=值2,...字段n=值n where 条件 ;//不加where的话会把所有的都改了
3)删除记录
1>删除单表中的数据
delete from 表名 where 条件 ;
1、排序:
select * from 表名 order by 字段名 asc;(由低到高(也是默认值))
select * from 表名 order by 字段 desc;(由高到低)
select * from 表名 order by 字段名 asc,字段名 desc;(多字段排序)
2、限制:
select * from 表名 order by 字段 desc limit 1;(显示第一条信息)
select * from 表名 order by 字段 desc limit 2;(显示从上到下的两条信息)
select * from 表名 order by 字段 desc limit 0.1;(显示第一条信息)
select * from 表名 order by 字段 desc limit 1.1;(显示第二条信息)
select * from 表名 order by 字段 desc limit 1.3;(显示从上到下的三条信息)
3、聚合(汇总操作):
select sum(字段名) from 表名;(sum求和)
select sum(字段名) from 表名 group by 字段名;(group by 分组求和)
select sum(字段名) from 表名 group by 字段名 with rollup;(with rollup 每组进行求和)
select sum(字段名) from 表名 group by 字段名 having sum(字段名)>100;(对与字段中数值大于100的显示)
(having是对所有组进行分类后有条件的过滤|聚合后有条件的过滤)(而where是在聚合之前对记录进行过滤)
4、表连接
1>内连接:选取两个表中相匹配的记录
select 表 . 字段1,字段2 from 表名1,表名2 where 表名1 . id=表名2 . id;
!select 可以给字段起别名 !
例:select 表名1 . id a, 表名2 . id b from 表名1,表名2 where 表名1 . id=表名2 . id;
2>外连接:不仅仅选取两张相互匹配的记录,并且会选出其他不匹配的记录
(1)左连接:
(2)右连接:
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量):
实例
<?php$cars=array("Volvo","BMW","Toyota");echo count($cars);?>
9、LIKE 语句:
mysql> use RUNOOB;
Database changed
mysql> SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM';
'%a' //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
'_a_' //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的
10、UNION联合语句:
下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;
order by 列数 ; //表示以第几列为分组