数据库的存储引擎:
数据库的核心组件,对数据库的事务处理,运算,起到核心作用
innodb: 现有的版本默认是这个存储引擎,支持数据库的高级操作,外键,事务等
myisam:早期版本默认的是存储引擎 只支持数据库的CRUD操作
字符集:
mysql、数据库、表、字段都可以指定字符集
早期的时候,经常会出现乱码,现在概率较低,默认安装的数据库基本都支持中文
-- 查看mysql的存储引擎
show variables like '%storage_engine%';
-- 查看mysql所有字符集的编码
show variables like 'character_set_%';
character_set_client 客户端向服务器发送数据使用的字符集编码
character_set_connection 连接层的字符集编码
character_set_results 服务器将结果返回给客户端的字符集编码
注意以上编码保持统一utf8mb4即可,
如果要设置:set character_set_client = utf8mb4
-- 查看下表结构
desc student;
-- 修改表名 rename table 原表名 to 新表名
rename table student to stu_info;
desc stu_info;
-- 添加字段 alter table 表名 add 字段名 数据类型
alter table stu_info add score int;
-- 在最前面加入字段 alter table 表名 add 字段名 数据类型 first;
alter table stu_info add id int comment '学号' first;
-- 在xxx字段后面加一个字段 alter table 表名 add 字段名 数据类型 after xxx字段
alter table stu_info add sex char(10) comment '性别' after name;
-- 删除字段 alter table 表名 drop 字段名
alter table stu_info drop hobby;
-- 修改字段的名字 alter table 表名 change 原字段名 新字段名 新数据类型
alter table stu_info change sex gender char(5);
-- 修改字段的位置 alter table 表名 modify 字段名 数据类型 after 字段名
alter table stu_info modify age int after name;
DML(数据操作语言)(重要)
包含DQL 用来操作数据库中所包含的数据
作用:对数据库表中的数据进行CRUD的操作
关键字:INSERT DELETE UPDATE SELECT
-- 建一个emp表 包含id name age sal
drop table if exists emp;
create table emp(
id int comment '序号',
name char(50) comment '姓名',
age int comment '年龄',
sal decimal(8,2) comment '薪水' -- decimal(5,2) 5总长度 2小数点后面的长度
) comment '员工表';
-- 查看表结构
desc emp;
插入数据
insert into 表名(字段名,字段名...) values(值1,值2,...)
注意:表名后面()和values()的字段数量,顺序,数据类型必须保持一致
所有数据类型的默认值是null
-- 全表插入:表里面有几个字段就插入几个
insert into emp(id,name,age,sal) values(1001,'Andy',23,3000.00);
-- 简写
insert into emp values(1002,'Andy',23,3000.00);
-- 指定字段插入
insert into emp(id,name) values(1003,'Andy');
-- 批量插入
insert into emp values
(1,'刘备',23,5000.00),
(2,'关羽',22,4000.00),
(3,'张飞',21,3000.00);
-- 插入查询其他表的数据
insert into emp(id,name) select 4,'张三' from dual;
-- dual 伪表 用于测试 oracle必须加伪表做测试,mysql可以省略
insert into emp(id,name) select 5,'张三';
select 1 from dual;
select 1+2;
修改表中数据:
update 表名 set 字段名 = 字段值 where 字段名 = 字段值;
注意:修改一般要加where条件,如果不加,就全量更新,条件一般是唯一条件或者区间条件
-- 修改Andy的薪水为5000
update emp set sal = 5000 where id = 1001;
-- 把年纪小于23的 薪水修改成4000
update emp set sal = 4000 where age<23;
-- 修改id为1003的员工名字为吕布 年龄24 薪水8000
update emp set sal = 8000, name='吕布', age=24 where id = 1003;
删除表数据:
delete from 表名 where 字段名 = 字段值
注意:
清空表数据有两种方式:
delete from 表名
truncate 表名(慎用,最好别用)
区别:
delete
一定条件下删除是可以回滚的,数据可以找回来,因为mysql是基于biglog日志存储
自增序列不会被删除
truncate底层是DDL的组合,先drop表,再create表,速度比delete快,但是不可以回滚
自增序列会被删除
提醒:
需要修改表结构,或者删除大量的数据的时候,最好手动备份一下这个表
-- 删除 id为4的员工
delete from emp where id = 4;
-- 清空表数据
delete from emp;
-- 清空表数据2:truncate 表名
truncate emp;