UP | HOME

Mysql

Table of Contents

使用备注

工具推荐

安装

使用apt, yumd或自行编译等等方式安装。
详细,请查看 安装

操作

连接

mysql -h localhost -u root -p 回车 #-P端口 -p密码

账号操作

添加账号

create user username1 identified by 'pwd1';

授权

grant all privileges on DbName1.* to username1@'%' identified by 'pwd1'; # %表示任何主机 或 指定ip地址 或 ip段
flush privileges; #刷新

修改密码

update mysql.user set password = password('pwd1') where user = 'username1' and host = '%';
flush privileges;

删除账号

drop user username1@'%';

基本操作

数据库

//创建数据库
create database h_test;
//查看数据库
show databases;
//查看数据库信息
show create database h_test;
//修改数据库的编码,可使用上一条语句查看是否修改成功
alter database h_test default character set gbk collate gbk_bin;
//删除数据库
drop database h_test;
//综上,可以直接创建数据库且设置编码方式
CREATE DATABASE h_test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

数据表

//首先选定操作的数据库
use h_test;
//创建表student
create table student(
  id  int(11),
  name  varchar(20),
  age int(11)
);
//查看数据表
show tables;
//查看数据表信息,后面加上参数/G可使结果更加美观
show create table student;
//查看表的的字段信息
desc student;
//修改表名
alter table student rename [to] h_student;
//修改字段名
alter table h_student change name stu_name varchar(20);
//修改字段的数据类型
alter table h_student modify id int(20);
//添加字段
alter table h_student add grade float;
//删除字段
alter table h_student drop grade;
//修改字段的位置
alter table h_student modify stu_name varchar(20) first;
alter table h_student modify id int(11) after age;
//删除数据表
drop table h_student;

约束

约束条件 说明
PRIMARY KEY 主键约束,用于唯一标识对应的记录
FOREIGN KEY 外键约束
NOT NULL 非空约束
UNIQUE 唯一性约束
DEFAULT 默认值约束,用于设置字段的默认值

索引

作用:提高表中数据的查询速度
1.普通索引
2.唯一性索引
3.全文索引
4.单列索引
5.多列索引
6.空间索引
//创建索引
//一.创建表的时候创建索引
create table 表名(
        字段名 数据类型[完整性约束条件],
        ...
        字段名 数据类型,
        [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
  );
//1-1.创建普通索引
create table test1(
  id  INT,
  name VARCHAR(20),
  age INT,
  INDEX (id)
);
//可以插入一条数据,查看索引是否被使用
explain select * from test1 where id=1 \G;
//1-2.创建唯一性索引
create table test2(
  id  INT,
  name VARCHAR(20),
  age INT,
  UNIQUE INDEX unique_id(id asc)
);
//1-3.创建全文索引
create table test3(
  id  INT,
  name VARCHAR(20),
  age INT,
  FULLTEXT INDEX fulltext_name(name)
)ENGINE=MyISAM;
//1-4.创建单列索引
create table test4(
  id  INT,
  name VARCHAR(20),
  age INT,
  INDEX single_name(name(20))
);
//1-5.创建多列索引
create table test5(
  id  INT,
  name VARCHAR(20),
  age INT,
  INDEX multi(id,name(20))
);
//1-6.创建空间索引
create table test6(
  id  INT,
  space GEOMETRY NOT NULL,
  SPATIAL INDEX sp(space)
)ENGINE=MyISAM;
---------------------------------------------------
//二.使用create index语句在已经存在的表上创建索引
//首先新建一个表,这个表没有索引
create table student(
  id int,
  age int,
  name varchar(20),
  intro varchar(40),
  g GEOMETRY NOT NULL
)ENGINE=MyISAM;
//2-1.创建普通索引
create index index_id on student(id);
//2-2.创建唯一性索引
create unique index uniqueidx on student(id);
//2-3.创建单列索引
create index singleidx on student(age);
//2-4.创建多列索引
create index mulitidx on student(name(20),intro(40));
//2-5.创建全文索引
create fulltext index fulltextidx on student(name);
//2-6.创建空间索引
create spatial index spatidx on student(g);
//三.使用alter table语句在已经存在的表上创建索引
//删除student表,重新创建
drop table student;
create table student(
  id int,
  age int,
  name varchar(20),
  intro varchar(40),
  space GEOMETRY NOT NULL
)ENGINE=MyISAM;
//3-1.创建普通索引
alter table student add index index_id(id);
//3-2.创建唯一性索引
alter table student add unique uniqueidx(id);
//3-3.创建单列索引
alter table student add index singleidx (age);
//3-4.创建多列索引
alter table student add index multidx(name(20),intro(40));
//3-5.创建全文索引
alter table student add fulltext index fulltextidx(name);
//3-6.创建空间索引
alter table student add spatial index spatidx(space);
//删除索引,有下面两种方式
//1.使用alter table删除索引fulltextidx
alter table student drop index fulltextidx;
//2.使用drop index删除索引spatidx
drop index spatidx on student;

添加数据

//重新建立表student
drop table student;
create table student(
  id int,
  name varchar(20) not null,
  grade float
);
//插入一条数据,也可以少某个字段的同时也少对应的数据
insert into student(id,name,grade) values(1,'howie',70);
//也可以不指定字段名,但要注意顺序
insert into student values(2,'howie',80);
//也可以这样添加数据
insert into student set id=3,name="howie",grade=90;
//同时添加多条数据
insert into student values
(4,'howie',80),
(5,'howie',80),
(6,'howie',80);

更新数据

//更新id=1的数据
update student set name="howie1",grade=60 where id=1;
//批量更新,如果没有where子句,会更新表中所有对应数据
update student set grade=100 where id<4;

删除数据

//删除id=6的数据
delete from student where id=6;
//批量删除数据
delete from student where id>3;
//删除所有数据,DDL(数据定义语言)语句 truncate table student也可以删除表内所有数据
delete from student;

参考

First created: 2021-02-06 Sat 00:00
Last updated: 2021-11-25 Thu 23:05
Power by Emacs 27.1 (Org mode 9.4)
© 2017 – 2021 by josephzeng