(注:以下db为database col为column,即字段 tb为table)
1、软件介绍楼主仅是软工小白,博客仅用作学习笔记,并不专业,望大家谅解哈。
楼主使用的软件是老师给我们学习用的,并不是大家传统使用的哈,以下为截图。
第一步是打开MySQL5.1文件目录下的sateup.cmd。
第二步是打开mysql-front5.1下的MySQL-Front.exe
输入服务器localhost以及登陆密码root
打开后就是以下界面,里面有我们老师供我们使用的基本的数据库
2、MySQL数据库层次结构(此处搬用他人笔记,因为我上课走神了=-= ---原文:mysql数据库层次结构_MySQL逻辑分层介绍_无名沙的博客-CSDN博客)MySQL一般分为四个层次:连接层,服务层,引擎层,存储层。
连接层
提供与客户端连接的服务。
当客户端发出一个请求后(如增删改查的SQL语句),首先到达该层,将服务器与客户端建立连接。
服务层
服务层分两个作用:
提供各种用户使用的接口。 如select、insert等
提供SQL优化器(MySQL Query Optimizer)。 SQL优化器是MySQL服务层自带的一个服务,它会自动优化用户写得不是最优的SQL,使其达到优化的效果。但由于优化器毕竟只是优化器,有时候会将用户自定义的优化方案给更改掉,从而使用户自己的优化方案失效,这一点需要注意。
引擎层
引擎层提供各种数据存储的方式。MySQL的存储引擎有很多,比较常用的比如有InnoDB, MyISAM。
InnoDB与MyISAM的区别为:
InnoDB 事务优先,所以适合高并发操作,使用的是行锁
MyISAM 性能优先,适合查询多的场景,使用的是表锁
查看存储引擎
show engines;
查看默认存储引擎
show variables like 'default_storage_engine%';
存储层
数据存储层,主要讲数据存储在运行裸设备的文件系统上,并完成与存储引擎的交互
3、MySQL的字符集以校验规则的查看和修改显示字符集
show character set;
显示校验规则
show collation like 'utf8(gbk...)%';
查看各个层次的字符集
show variables like 'character_set_%';
修改服务层编码(字符集)
set character_set_client = GBK;
修改所有层编码
set names 'utf8';4、操作数据库 4.1、创建数据库
create {database|schema} [if not exists] db_name
[default] character set character_name
[default]collate collation_name;
(字符集及校验规则可不设定)
4.2、删除数据库4.3、修改数据库字符集、校验规则drop database [if exists] db_name;
4.4、查看服务器里的所有数据库(将数据库db_name的字符集设为gb2312,校验规则为gb2312_chinese_ci)
alter database db_name
character set gb2312
collate gb2312_chinese_ci;
show database;
打开要使用的数据库
use db_name;
查看当前正在使用的数据库
5、操作表 5.1、创建表select database();
create table [if not exists] tb_name
(field_name data_type is_null auto increment primary key comment'xxx',
name varchar(4) not null,
...)engine=innodb default charset=utf8;
补充:SQL中字符串使用单引号的原因:(与Java语句中的双引号做区别)
Resultset query(String sql)——结果集查询函数(Java)
sql = "select * from students"
sql = "select * from students where sex='男' "(这里'男'用单引号引出,为SQL语句,sql=""内双引号部分为Java语句)
创建主键的两种方法:
1、在字段后面直接跟关键字primary key
s_no char(4) not null primary key comment'学号'
2、在所有字段定义完了用primary key(字段名) ——此方法可以用来创建多个主键
5.2、删除表primary key(s_no、s_name)
5.3、修改表drop table [if exists] tb_name;
5.3.1、添加一个字段
alter table tb_name
add [column] col_definition(字段属性) [first|after col_name](位置);
注:
alter table course
add c_id int(6) not null auto_increment first;——此为错误,因为设为键的字段才能设置为自增长
所以我们可以给c_id增加unique key(唯一索引)
alter table course
add c_id int(6) not null unique key auto_increment first;
5.3.2、修改字段默认值
alter table tb_name
alter col_name [set default d_value|drop default]
5.3.3、重命名字段(字段名,字段类型,宽度,默认值......)
alter table tb_name
change old_col_name col_definition [first|after col_name]
5.3.4、修改字段类型
alter table tb_name
modify col_name data_type;
5.3.5、删除列
alter table tb_name
drop col_name;
5.3.6、给表重命名
5.4、查看表alter table tb_name
rename to new_tb_name
5.4.1、查看数据库下有哪些表
show tables;
5.4.2、查看表的基本结构
describe tb_name;
desc tb_name;
5.4.3、查看表的详细结构
5.5、复制表show create table tb_name;
5.5.1、复制表的结构
create [temporary] table [if not exists] new_tb_name like old_tb_name;
5.5.2、复制表的结构与数据
6、操作数据 6.1、插入表数据create [temporary] table [if not exists] new_tb_name as select * from old_tb_name;
6.1.1、插入字段对应的数据(每列都要有对应的值)
方式一:
insert into tb_name values(字段对应的值);
(主键重复 插入失败)
方式二:
replace into tb_name values(字段对应的值);
(主键重复 更新数据)
6.1.2、给指定的字段插入值
insert into tb_name(Field_name)
values(字段对应的值);
6.1.3、同时插入多条数据
6.2、复制表的数据(前提:两个表的结构相同)insert into tb_name
values('字段对应的值),
(......),
(......);
6.3、导出数据表的数据到外部文件insert into new_tb_name select * from old_tb_name ;
6.5、从外部文件导入数据到数据库表select ... from tb_name into outfile file_name
6.4、删除表数据load data local infile file_name into table tb_name [character set xxx];
6.6、插入图片的两种方式delete from tb_name;
方式一:直接写图片路径
insert into tb_name
values('value','value','value','value','d:/456.png');
方式二:用load_file();
insert into tb_name
values('value','value','value','value',load('d:/456.png'));



