复习指令
Mysql常用指令
进入
格式:
mysql -h主机地址 -u用户名 -p用户密码
- 连接到本机上的MYSQL。
mysql -u root -p
注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。
- 连接到远程主机上的MYSQL。
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -p 123;
注:u与root之间可以不用加空格,其它也一样
退出
退出数据库
exit;
用户的操作
MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。
增加用户
格式:
grant select on 数据库.* to 用户名@登录主机 identified by “密码”
实例:
增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。
操作如下:
1.首先用root用户连入MYSQL,
mysql -u root -p
2.然后键入以下命令:
grant select,insert,update,delete on *.* to test1@”%” Identified by “abc”;
注意: 这样增加的用户是十分危险的,如过某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了。
解决方法可参考如下方法:
增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问。
grant select,insert,update,delete on mydb.* to test2@localhost identified by “abc”;
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;
赋予新权限
具体权限问题请参考
[https://www.cnblogs.com/kevingrace/p/5719536.html]
grant all privileges on test.* to hello @localhost identified by 'Test';
flush privileges;
刷新权限
flush privileges;
修改用户密码
update mysql.user set password=password('新密码') where User="hello" and Host="localhost";
flush privileges;
实例:
将root用户(密码为root)密码改为 abc123
mysqladmin -uroot -proot password abc123;
删除用户
通过执行drop user命令删除MySQL用户
DROP USER '用户名'@'localhost';
或者
delete from user whrer User="用户名" and Host="localhost(主机地址)";
库的操作
MySQL中,数据库的操作基本有:创建,查看,选择,以及删除4种。
创建数据库
CREATE DATABASE database_name;
后面的database_name是你要创建的数据库的名称;
查看数据库
SHOW DATABASES;
查看已经创建的所有数据库
选择数据库
USE database_name;
选择名为database_name的数据库,很多数据库的操作都需要先选中一个数据库,再执行进一步的操作;
删除数据库
DROP DATABASE database_name;
删除名为database_name的数据库;
库名的修改
目前最安全的方法就是重新建立一个新的数据库,把当前的数据表导入到新的数据库中。
1.创建需要改成新名的数据库。
2.mysqldum 导出要改名的数据库
3.删除原来的旧库(确定是否真的需要)
缺点:耗时
优点:安全
表的操作
表是数据在数据库中一种逻辑上的存储形式,和常见的电子表格类似,其中每一行代表一个记录(可以理解成一个数据对象),而记录的每一列代表一个字段(其实你可以理解成数据对象的属性)。
表的基本操作有创建,查看,删除,修改4种基本操作。
创建
格式:
create table 表名(
字段名 数据类型 约束,
字段名 数据类型 约束,
字段名 数据类型 约束
);
查看
查看所有表
命令:
show tables;
删除
删除表
drop table 表名;
修改
修改表名
rename table 表名 to 新表名;
字段的操作
增加
添加新的字段
ALTER TABLE 表名 ADD 字段名 字段类型;
在指定的字段后面增加一个字段
ALTER table 表名 ADD 新字段名 字段类型 是否为空 注释 after 已存在的字段名;
删除
删除表的字段
alter table 表名 drop 列名;
修改
修改字段名
ALTER TABLE 表名 change 原字段名 新字段名 字段类型;
修改字段类型
alter table 表名 modify column 字段名 类型;
查看
查看表结构
desc 表名;
或者
show columns from 表名;
注释的操作
给表添加注释(修改也用此方法)
ALTER TABLE 表名 COMMENT='表注释';
表内数据的操作
查看
条件查找
select 字段 from 表名 where 条件;
查看表中所有数据
select * from 表名
增加
insert into 表名 values(); # 顺序要一一对应,所有列的值都需要写
insert into 表名(字段1,字段2...) values (值1,值2...);
修改
修改表内数据
update 表名 set 字段=新值,… where 条件;
删除
指定删除
delete from 表名 where 条件;
清空数据
delete from 表名; # 删除所有数据
truncate 表名; # 删除所有数据
delete:
属于DML语句,删除所有数据
执行时会被记录事务,可以执行rollback回滚操作
删除大量数据时速度慢,并且不会回收高水位线
可以带条件删除
truncate:
属于DDL语句,删除所有数据,实际上是重新创建表结构
执行时不会记录事务,不能执行rollback回滚操作
删除大量数据时速度快,可以回收高水位线
不能带条件删除
索引的操作
加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子:
mysql> alter table employee add index emp_name (name);
加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
例子:
mysql> alter table employee add primary key(id);
加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子:
mysql> alter table employee add unique emp_name2(cardnumber);
删除某个索引
mysql> alter table 表名 drop index 索引名;
例子:
mysql>alter table employee drop index emp_name;