一.MySql软件的安装
1、官网下载最新版MySQL;
2、配置MySQL环境变量,可参考下面这篇文章:https://jingyan.baidu.com/article/c1a3101e72fc9bde656debf7.html;
3、安装指令:
* mysqld --initialize --console 初始化数据库(注意保存初始密码)
* mysqld --install MySQL 注册命令
* net start mysql 启动服务器
* net stop mysql 关闭服务器(请勿关闭服务器)
* mysql -uroot -p 登陆自己机器的MySQL数据库
此时为了以后登录方便,在mysql -uroot -p指令密码登陆之后,需要修改密码。
* 改密码操作
a、select 1; 注意打上分号
b、alter user user() identified by '新密码';
c、select 1;
4、exit; 退出MySQL服务器
5、mysqld –remove 删除mysql服务
6、查看使用端口号: show global variables like 'port';(仅在mysql内部使用)
7、重置密码:参考文章https://blog.csdn.net/gupao123456/article/details/80766154
二.数据库的操作
一个数据库的服务器中有多个数据库,一个数据库中有多个表
每个表有多个字段,字段和java中类的属性是对应的
每一条记录(行)对应的是一个java实例对象
1.创建数据库:
* create database 数据库名字 (character set ‘字符集编码’ (collate ‘校对规则’))
* 括号中的编码和校对规则常省略,并为默认的设置。
* 因此常用创建格式:create database 数据库名字
2.查询数据库:
* show databases; 查询所有数据库
* select database(); 查询正在使用的数据库
* show table; 查询当前数据库所包含的的表
* show create database 数据库名字 查询创建的该数据库的定义信息
3.选择/切换数据库:
use 数据库名字;
4.修改数据库:
修改数据库的名字(这里的自己修改操作有点麻烦)
* 备份数据库:
命令行模式输入:mysqldump -u root -p 需备份数据库 >备份文件名.sql
* 恢复数据库:
a、创建空数据库:create database newDatabase;
b、使用新数据库:use newDatabase;
c、还原数据库:source 备份文件名.sql;
* 删除原数据库及备份文件,这样得到的新数据库newDatabase就是我们重新命名的数据库了;
修改数据库的编码
* alter database 数据库名字 character set '字符集编码' collate '校验规则';
三.表
SQL语言是“非过程性语言”:写一句就会执行一个结果
而 过程性语言:写一条语句,需要依赖上一句甚至几句
1.创建表:
create table 表名(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
······
字段n 类型(长度) 约束
)
注意:* 表名小括号后要有分号
* 表每段后面都有逗号,最后一行没有符号
* 数据的类型后面有长度,如果是字符串类型,必须声明长度,其他类型可不写。int默认长度11
字段的类型:
* 字符串类型:char和varchar。其中char长度不可变,varchar长度可变。
* 数值类型:tinyint,shortint,int,bigint,float,double
* 逻辑型(对应boolean):bit
* 日期型:data,time,datatime,timestamp(若不传入数据,默认选择当前系统时间)
* 文本型:blob(二进制文件),text(字符)
约束:
* 主键约束:primary key 声明主键,默认非空且值唯一
可使用auto_increment 维护主键,自动增长(随表格内容+1)
* 唯一约束:unique key 值唯一(如学生的学号,游戏的登陆账号等)
* 非空约束:not null 值不能为空
2.查询表:
* desc 表名; 查询表结构
* show create table 表名; 查询建表语句、存储引擎和字符集
3.修改表:
* rename table 表名 to 新表名; 修改表名
* alter table 表名 rename 新表名; 修改表名
* alter table 表名 character set '字符集'; 修改字符集
* alter table 表名 add 字段 类型(长度) 约束; 增加字段增加字段
* alter table 表名 drop 字段; 删除字段
* alter table 表名 modify 字段 类型(长度) 约束; 修改字段类型或约束
* alter table 表名 change 旧字段 新字段 类型(长度)约束 修改字段名称
* alter table 表名 engine ='新存储引擎' 更改表的存储引擎
4.删除表
* drop table 表名;
* alter table 表名 drop foreign key 外键别名; 删除表的外键约束;
四.数据:
1.增:
* insert into table 表名(字段1,字段2……)values(值1,值2,……);
* insert into table 表1 (字段1,字段2) select (字段1,字段2) from 表2;
此时表2字段名可与表1字段名不同,但是数据类型必须相同
注意: * 数据与字段的类型相同;
* 字段长度需要控制;
* 字符串或者日期类型需要使用'';
* 采用第二种方式时,主键设为auto_increment时,主键值可设为null或此时index值;
2.改:
* update 表名 set 字段1=值1,字段2=值2; 修改该字段所有值
* update 表名 set 字段1=值1 where 字段2(或主键)='值2'; 修改满足条件的字段
3.删:
* delete from 表名; 清除表中所有数据(一条一条删),支持事务,推荐使用;
* delete from 表名 where 字段1=值1; 清除满足条件的字段
* truncate 表名; 先删除整个表,再创建一个空表(效率高),不支持事务,删除数据无法恢复;
4.查:
* select * from 表名; 查询表中所有字段
* select 字段1,字段2 from 表名 查询指定字段
* select distinct 字段名 from 表名; 过滤重复的数据
* order by 字段名 asc/desc 数据排序(末尾的asc/desc为升序/降序排列,不写默认升序)
* 查询的列可以进行运算符运算;
* 别名查询:使用as 别名(as可以省略)
如,select chinese as sum from student;
* 使用where条件进行过滤:
a、算术符号< ,>, <= , >= , = ,<>(不等于);
b、in(范围内取内容);
c、is null; 判断是否为空
d、and ,or,not;
e、like 模糊查询;
如like 李_或李%,'_'和'%'均表示占位符,区别是'_'表示只占一位,'%'可表示占多位;
如like 李_; 表示李X;
如like 李%; 表示李Xxx;
如like %李%; 表示含李即可;
* 聚集函数:
count 统计数量,sum 求和、avg 均值、max 最大值、min 最小值;
* 分组归类:
group by 字段; 此处过滤用having ,不能使用where;
* ifnull(字段名,0) 如果字段为空,则取值为0
* select 语句顺序:
select ...from...where...group by...having...order by...
select 字段名 from 表名 where 约束条件 having ··· order by 字段名(排序方式) ASC/DESC(升序/降序——默认升序)
五.添加外键
1.创建时添加
create table c_s(
cid int,
foreign key(cid) references class(cid)
);
2.创建后修改
将创建表中已存在的主键设为外键
alter table 当前表名 add foreign key 当前表名(关键字) references 关联的表(关键字);