MySQL命令学习
一、MySQL8.0新特性
字符集
- 默认字符集再8.0之前为latin 1,8.0之后改为utf8m64
自动增量的持久化
自动增量持久化就是指在自动增长的字段中,当我们向表中插入一个数据的时候,在重新启动mysql服务器的时候还能继续保持上一次服务的增量最大值,例如我们在一个id自增的表中添加四条数据,
此时数据库的最大id值为4,当我们删除id为4的记录时,在新增一条记录,此时新增的记录的字段id值为5,假如这个时候我们删除了id为5的字段,并重启了mysql服务,然后再向表中添加一条记录,此时这个新增的记录再mysql8.0之前的版本中是5,而再mysql8.0之后的版本中,这个新增的字段id值为6.这就是自动增量的持久化。
DDL的原子化
在mysql8.0的版本中,InnoDB表的DDL支持事务的完整性,即DDL操作要么全部成功要么全部失败,例如我们在一条sql语句中删除数据库中的两个表,其中table_1表存在,table_2不存在
drop table table_1,table_2;
在mysql8.0之前的版本中,table_1会被删除,而8.0版本不会,这就是DDL原子化。
二、数据库相关
创建数据库:
create database databases_name
删除数据库:
drop database database_name
三、表相关
创建:
CREATE TABLE emp(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(22) NOT NULL,
deptid INT(11),
salary FLOAT
);
删除:
DROP TABLE emp;
查看表的结构:
desc 表名
查看表的创建过程:
show create table emp;
修改表
修改表名
alter table tablename rename table_name;
修改字段的数据类型
alter table <表名> modify <字段名> <字段类型>
修改字段名
alter table <表名> change <旧字段名> <新字段名> <数据类型>
添加字段
alter table <表名> add <字段名> <数据类型> after name //再name字段之后添加
删除字段
alter table <表名> drop <字段名>
记录相关
插入记录
为所有的字段插入书记
insert into table values(xxx,xxx,xxx);
为指定字段插入数据
insert into table (name,age,info) values(“xxx”,18,“xxxx”);
插入多条记录
insert into table (name,age,info) values(“xxx”,18,“xxxx”),(“xxx”,12,“xxxx”),(“xxx”,14,“xxxx”);
将查询结果插入记录
insert into table (name,age,info) select name,age,info from table;
更新数据
update table set column_1=xxx,column_2=xxx where id=X;
删除数据
delete from table where id =? //删除指定id
delete from table //删除表中全部数据
为表添加计算列
CREATE TABLE num(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
a INT(2),
b INT(2),
c INT(2) generated always AS (( a + b)) VIRTUAL
);
ALTER TABLE num ADD COLUMN d INT(2) generated always AS (( a + b)) VIRTUAL