Mysql
安装
使用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;