一、检索
检索:select * from表;
检索不同的值:select distinct vend_id from products;
限制结果:select *from products limit 5;返回只有行
select *from products limit 5,4;从第五行开始的4行
二、排序数据
对特定列进行排序:select name from products order by name;
按照多个列排序:select id,price,name from products order by price,name;
降序排序:select id,price,name from products order by price SESC ;
select id,price,name from products order by price SESC,name;
limit 用在order by后面
三、过滤数据
where子句select name from products where price =2;
order by 用于where后面
between...and... 在指定的两个值之间
匹配字符串用单引号 ' '
检查空值 * is NULL;
OR操作符 select name , price from products where id=1002 or id=1003
SQL语言and优先级比or高,圆括号的优先级最高
select name , price from products where (id=1002 or id=1003) and price >=10;
IN操作符:selec name,price from products where id IN (1002,1003);
NOT操作符:否定之后的的任何条件 selec name,price from products where id NOT IN (1002,1003);
四、通配符过滤:
like操作符:select id,name from products where name like 'jet%';寻找开头为jet的记录
_下划线的用途和%一样,但是只能匹配单个字符;
五、正则表达式:
六、创建计算字段:
MySQL使用Concat()函数实现拼接
select concat( name , ' ( ' , country , ' ) ' )from vendors order by name;
RTrim()函数去掉右边的所有空格
select concat( RTrim(name) , ' ( ' , RTrim(country) , ' ) ' )from vendors order by name;
LTrim()函数去掉左边的所有空格
Trim()函数去掉左右所有空格
使用别名:select concat( RTrim(name) , ' ( ' , RTrim(country) , ' ) ' ) AS title
from vendors
order by name;
执行算术计算:
七、使用数据处理函数
日期时间处理函数:
七、插入数据:
1.插入完整的行:
Insert 和 select一起用
八、更新删除数据:
update customers set emil='*****' where id=1005;
删除delete from customers where id=1006;//delete只能删除行,不能删除表
九、创建和操纵表
1.创建
not null 意味着插入值的时候不能为空,null则允许为空;
2.定义主键:在定义语句后面加上这句话:
两个字段一起作为主键
3.自动增量:
4.指定默认值:
5.引擎:
ENGINE=
6.更新表:alter table
添加一个列:alter table vendors add vend_phone char(20);
删除一个列:alter table vendors drop column vend_phone;
定义外键:
7.删除表:drop table vendors;
8.重命名:rename table vendors2 to vendor3;
十、视图
创建视图:
创建视图末尾加上where可以过滤数据;
视图是虚拟的表。
十一、存储过程:
执行:CALL productpricing(*,*,*);
创建:
删除:
十二、使用游标:
创建游标:
打开游标:
关闭游标:
使用:
十三、触发器:
创建条件:
创建触发器:
删除触发器:
insert触发器里有NEW虚拟表;
delete触发器有OLD虚拟表
触发器使用: