MySQL基础语法
1.检索不同的值
select distinct colname
distinct作用于所有的列,所以在多列情况下只有完全相同才会被忽略输出
2.限制输出行
select * from.. limit a, b
输出第b行到第b+a-1行,是从第0行开始计数的
3.使用 --注释
或#注释
或/*。。注释。。*/
4.order by需要时最后一条语句
默认增序排列 order by colname desc, #desc只应用到其前面出现的列名排序
可按照多列进行排序
5.where
可以使用between a and b
in(a,b,c) not in...
6.通配符
where colname like 'fish%' #匹配以fish开头的任意词
‘%fish%' #匹配任意包含fish的词
’f%h' # 匹配f开头h结尾的词
下划线与%类似,但只匹配单个字符
[ ]用来指定一个字符集,它必须匹配指定位置的一个字符 [JM]% #匹配J或M开头的词
[^JM]% #不匹配J或M开头的词
7.拼接字符串字段使用||符号
8.函数
UPPER()函数转化字符为大写
datepart('year',daten)返回daten的年份数据
current_date()获取当前时间
ABS COS EXP PI SIN SQRT TAN
9.聚集函数
AVG COUNT MIN MAX SUM
AVG忽略null,count(*)计及null,count(colname)忽略null
10.数据分组与汇总
group by 进行分组,如果有多个列名,将在最后一个列名处进行汇总
group by 子句必须出现在where子句之后,order by 子句之前
where过滤行,having 过滤分组,组合使用时先过滤行再进行分组汇总,再过滤分组
一般在使用group by子句时也搭配使用order by,不要依赖与group by 排序
子句顺序:select from where group by having order by
11.where 条件中嵌套子查询语句就是子查询,子查询效率不高
12.联结表
除了内联结外,还有外联结(包括左右联结和全外联结full outer join)和自联结(自联结指通过别名联结两个相同的表)
标准联结不去除联结后重复的列,自然联结去除相同的列
13.union将两个查询结果进行拼接,没什么实际用处
14.插入表
insert into tablename value(...)
可以在tablename(添加列名),这样即使表的结构改变,该插入语句也能正确执行,value与列名一一对应。
要将一个表的内容复制到一个全新的表,可以使用 select * into newtable from oldtable
或create table newtable as select * from oldtable
15.更新表
update tablename set colname='...' where ...
16.删除行
delete from tablename where ...
在创建表时定义外键可以防止删除某个关系需要用到的行,外键即某个被其它表所需的列
truncate tablename 删除表中所有行
drop table 删除整个表
17.创建表
create table tablename(colname int not null,...)
允许null的列不能作为主键;指定默认值使用default value,
18.更新表列
alter table add/drop colname
19.视图
视图用于重用SQL语句,使用表的一部分而不是整个表,因此还可以授予用户访问表的特定部分的权限。
create view viewname as ...执行包含view的查询语句时将把附加的where子句添加到视图的where子句中
20.存储过程的作用是创建批处理语句,类似于函数功能:
create procedure name (参数输入或输出)
is...
begin;
end;
执行:exec name(参数)
21.事务处理
通过事务处理,确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性。
事务指一组SQL语句,回退指撤销指定SQL语句的过程,提交指将未存储的SQL语句结果写入数据库表。保留点指事务处理中设置的临时占位符,可以对它发布回退。
begin transaction
...
commit transaction
中间的SQL语句为事务
rollback用于撤销上一条语句
savepoint用于保留
22.游标是一个存储在DBMS服务器上的数据库查询,在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。
创建:
declare name cursor for ...
fetch检索游标的当前行
23.约束
管理如何插入或处理数据库数据的规则
主键约束:primary key,每个表只允许一个主键
外键约束:外键必须是另一个表的主键 references tablename(colname)
add constraint foreign key (colname) references tablename(colname)
唯一约束:值唯一,但可以更新和复用
检查约束:CHECK(quantity>0)加入了条件,在插入新行时会检查
24.索引
加快搜索和排序操作的速度。可以在一个或多个列上定义索引,索引改善了检索操作的性能,但降低了数据插入/修改和删除的性能。
create index name on tablename(colname)
25.触发器
触发器是特殊的存储过程,它在特定过的数据库活动发生时自动执行,触发器可以与特定表上的insert/delete/update操作或组合操作相关联。
与存储过程不一样,触发器只与单个的表相关联
例子:

浙公网安备 33010602011771号