1.对库的增删改查
1.创建库
create database 数据库名 [character set 字符编码 collate 字符集校对];
2.查看数据库
a)查看数据库服务器中的所有数据库 show databases;
b)查看某个数据库的定义信息 show create database 库名;
c)查看当前正在使用的库 select database();
3.删除数据库
drop database 库名
4.修改数据库
alter database 库名 character set 新字符集 collate 校对规则;
5.切换数据库
use 库名;
2.对表的操作
1.创建表
create table 表名(
字段名 类型 约束,
字段名 类型 约束
);
2.添加列
alter table 表名 add 列明 类型 约束;
3.删除列
alter table 表名 drop 列明;
4.修改列名
alter table 表名 change 旧列名 新列名 类型 约束;
5.修改列
alter table 表名 modify 列名 类型 约束
6.修改表名
rename table 旧表名to 新表名
7.修改表的字符集
alter table 表名 character set 字符集
8.查看所有表
show tables;
9.查看表结构
desc 表名;
10.删除表
drop table 表名
11.添加主外键约束
添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除主键约束:alter table 表名 drop primary key;
删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);
4.针对表数据的操作
1.插入记录
insert into 表名(列名1, 列名2, 列名3) values(值1, 值2, 值3)
2.表记录修改
update 表名 set 列名1=值, 列名2=值 where 条件;
3.删除表记录
delete from 表名 where 条件;
truncate table 表名;
区别:truncate 先删表,再建表.如果需要删除所有数据用这个,速度比较快。delete删除数据是一行一样的删除,并且删除后可以恢复
恢复方法:insert into hr.job_history
select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');
4.基本查询
select [distinct] *或列名 from 表名 where 条件;
select 列名 as 要显示的名字 from 表名 where 条件;
加distince表示获取不重复数据,*表示所有列
5.where子查询
where 后面条件判断可以用 =,>,>=,<,<=,<>,like,in
like后面的%表示的字符可以是多个,_表示的字符个数只能是一个
in(1,2,3) 里面存放可能会出现的值
查询空字段用is null,非空字段用is not null;
6.排序
order by desc 或 asc; desc是降序,asc是升序,默认是降序
5.聚合函数
sum() count() max() min() avg()
6.分组
group by
通过having对分组后的数据条件过滤,注意where只能使用在group by 之前,不能过滤group by之后的数据,会报错
7.多表关联中的外键问题
1.如果是一对多,外键应该存储在多表中
2.如果是多对多,外键应该存储在第三张表中
3.如果是一对一,外键可以存储在任意一方
10.mysql常见问题
1.插入中文数据乱码 或 无法插入中文数据
产生乱码原因,数据库服务端存储的是UTF8格式的数据,客户端采用UTF-8接受,但是WINDOWS命令窗给客户端的数据是GBK编码,导致客户端接收到乱码数据
解决方案:找到mysql的安装目录下的bin目录,修改my.inf中的客户端编码:[client]下的default-character-set修改值为GBK,重启mysql:通过运行services.msc打开服务界面,在里面找到mysql服务,右键重启即可