前言
蠢博主最近在学习MySQL,整理了一些语法基础,使自己能在需要的时候方便查找。撰写是以个人理解的角度写的,所以有错误的地方还望大家及时指正。
版本查看
//数据库内操作
select version();
基础语法
部分()中的"/"表示可选项。数据库中的单行注释为“#”,下文写惯了。。。。。。错误示范哈。
//新建数据库示例
create database if exists '库名'
default character set gb2312
default collate gb2312_chinese_ci;
//修改库
alter database '库名'
default character set gb2312
default collate gb2312_chinese_ci;
//删除库
drop database '库名';
//新建表范例,带索引
create table db_school.tb_student
(
studentNo char(10) ,
studentName char(6) not null default'默认值',
courseNo int(6) index,
classNo int(3) unique,
constraint PK_student primary key(studentNo),
constraint FK_student1 foreign key(courseNo) references tb_crourse(crourseNo),
constraint FK_student2 foreign key(classeNo) references tb_calss(classNo),
constraint CK_class check (classNo=3)
)engine=innodb;
//更新表约束示例,添加或删除约束
alter table db_school.tb_class drop foreign key FK_class1;
若未命名,使用show语句查看系统命名
//查询示例
select distinct 列名/表达式 as ‘虚拟名’ from 表名
where 表达式
group by 表达式 having 表达式
order by 列名(asc升序,desc降序)
limit 显示行数,第几行开始;
//左右连接查询
select 列名 from 表1 left join 表2 on 列名=列名;
//子查询
外层查询 in (内层查询);
//模糊查询
select distinct 列名/表达式 as ‘虚拟名’ from 表名
where 列名 like '%_';
//联合查询示例
select distinct 列名/表达式 as ‘虚拟名’ from 表名
union
select distinct 列名/表达式 as ‘虚拟名’ from 表名;
//插入数据
insert into 表名(列名) values('0','1'),('2','3');
//更新数据
update 表名 set 列名='值';
//删除数据
delete 列名 from 表名 where 表达式;
//创建索引
create index 索引名 on 表名(列名)
或
alter table 表名 add index/unique/key 索引名 表名(列名);
//删除索引
drop index 索引名 on 表名;
//创建、修改视图
create/alter view 视图名(列名)
as
select 语句
with check option;
//删除视图
drop view 视图名;
//更新视图,insert、uodate、delete
语法同更新表(换了个对象)
//创建触发器
create trigger 触发器名 触发时间(after/befor)
触发事件(insert/update/delete)
on 表名 for each row 触发器主体
//创建触发器示例
create trigger db_school.tb_student_insert_trigger after insert
on db_school.tb_student for each row set @str='one student added!';
//删除触发器
drop trigger 触发器名;
//查看事件调度器
show variables like'event_scheduler';
//开启事件调度器
set global event_scheduler=on;
//创建、修改事件
create/alter event 事件名
on schedule 时间调度(例:every 1 minute)
事件属性(enable/disable/ disable on slave)
do 事件主体(做啥事);
//创建用户示例
create user '测试账户'@'localhost' identified by '123';
//删除用户
drop user '用户名'@'用户类型';
//修改用户名
rename user 旧名称 to 新名称;
//修改密码
set password for '用户名'@'用户类型'=possword('');
//授予权限
grant 权限名称(delete/select/update等)
on 数据库名.表名
to '用户名'@'用户类型' by '密码',
'用户名1'@'用户类型1' by '密码1',
with 转移(权限名称 option)或限制(例:MAX_CONNECTIONS_PER_HOUR 1);
//撤销权限
revoke 权限名
on 数据库名.表名
from '用户名'@'用户类型' by '密码';
//php中常用函数
mysql_connect() //连接数据库
mysql_pconnect() //持久连接
mysql_selcet_db() //选择数据库
mysql_query() //执行操作
mysql_fetch_array() //读取查询结果的记录
mmysql_close() //关闭连接
常见问题
密码相关
1、忘记密码,但是navicat有保存密码:参考大佬