数据库分类
载入
1.my.ini配置
[mysqld]
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir=G:\mysql-8.0.22\
#Path to the database root
datadir=G:\mysql-8.0.22\Data
#跳过密码
skip-grant-tables
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
#设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
2.使用管理员状态下的命令提示符
配置服务
先查看 :sc query mysql
如果存在就删除: sc deletet mysql
安装服务:mysqld -install
在MySQL目录下的bin目录下输入 mysqld --initialize --console , 如下图所示:
数据库操作
结构化查询语句分类
名称 | 命令 |
---|---|
DDL(数据定义语言)定义和管理数据对象,如数据库、数据表等; | CREATE、DROP、ALTER |
DML(数据操作语言)用于操作数据库对象中所包含的数据 | INSERT UPDATE DELETE |
DQL(数据查询语言)用于查询数据库数据 | SELECT |
DCL(数据控制语言)用于管理数据库的语言,包括管理权限及数据更改 | GRANT commit rollback |
连接数据库
命令窗口下输入:mysql -u root -p 密码;
查看当前所有的数据库: show databases;
创建一个DataBase用户: create database [if not exists] 名字;
选择该数据库: use 数据库名字;
创建表:
create table depart(
id int not null auto_increment,
name varchar(25),
dep_sno varchar(25),
age int,
salary int,
constraint PK_depart_id primary key(id)
)engine=innodb default charset=utf8mb4 auto_increment=1;
查看表的详细信息: desc 表名;
数据字段属性
UnSigned
- 无符号的
- 声明该数据列不允许负数 .
Auto_InCrement
- 自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
- 通常用于设置主键 , 且为整数类型
- 可定义起始值和步长
- 当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表
- SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)
NULL 和 NOT NULL
-
默认为NULL , 即没有插入该列的数值
-
如果设置为NOT NULL , 则该列必须有值
DEFAULT
- 默认的
- 用于设置默认值
– 创建表之前 , 一定要先选择数据库
CREATE TABLE IF NOT EXISTS student
(
id
int(4) NOT NULL AUTO_INCREMENT COMMENT ‘学号’,
name
varchar(30) NOT NULL COMMENT ‘姓名’,
pwd
varchar(20) NOT NULL DEFAULT ‘123456’ COMMENT ‘密码’,
sex
varchar(2) NOT NULL COMMENT ‘性别’,
birthday
datetime DEFAULT NULL COMMENT ‘生日’,
address
char DEFAULT NULL COMMENT ‘地址’,
email
varchar(50) DEFAULT NULL COMMENT ‘邮箱’,
constraint PK_stu_id PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
(使用utf8mb4格式,具体为什么自行百度)
– 查看数据库的定义
SHOW CREATE DATABASE mytable;
– 查看数据表的定义
SHOW CREATE TABLE student;
– 显示表结构
DESC student;
– 查看mysql所支持的引擎类型 (表类型)
SHOW ENGINES;
MySQL的数据表的类型 : MyISAM , InnoDB , HEAP , BOB , CSV等…
常见的 MyISAM 与 InnoDB 类型:
经验 ( 适用场合 ) :
-
适用 MyISAM : 节约空间及相应速度
-
适用 InnoDB : 安全性 , 事务处理及多用户操作数据表
数据表的存储位置
-
MySQL数据表以文件方式存放在磁盘中
-
包括表文件 , 数据文件 , 以及数据库的选项文件
-
位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表 .
-
设置数据表字符集
我们可为数据库,数据表,数据列设定不同的字符集,设定方法 :
创建时通过命令来设置 , 如 : CREATE TABLE 表名()CHARSET = utf8;
如无设定 , 则根据MySQL数据库配置文件 my.ini 中的参数设定
修改数据库
增删改查:
1.增加:insert into 表名 values();
2.删除:delete 列名 from 表名 where 条件
3.修改: update 表名 set 修改后的内容 where 条件;
修改表属性:alter table 表名 modify 要修改的列名 datatype;
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 datatype
alter table stu midify sname varchar(25);
添加: alter table 表明 add 列名 datatype;
删除: alter table 表名 drop 列名 ;
删除表: drop table 表名;
删除表数据:truncate table 表名;
修改字段名:alter table 表名 rename column 现列名 to 新列名;
修改表名:alter table 表名 rename as 新表名
修改表 ( ALTER TABLE )
修改字段 :
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
其他
- 可用反引号(`)为标识符(库名、表名、字段名、索引、别名)包裹,以避免与关键字重名!中文也可以作为标识符!
- 每个库目录存在一个保存当前数据库的选项文件db.opt。