##数据库的增删改查
##查看
##查看mysql中有什么数据库
show databases;
##查看数据库中的表
show tables from 数据库名;
##切换数据库
use 数据库名;
##查看表结构
desc 数据库.表明;
##查看表的内容
select * from 表明;
##创建
##创建数据库
create database 数据库名;
##创建表
create table 表名(字段 数据类型, , , )
##删除
##删除mysql中的数据库
drop databases 数据库名;
##删除表
drop table 数据库名.表名;
##表内数据的增删改查
##插入
insert into 表名 values (所有字段值);
insert into 表名(字段, , ,)values(字段值 , ,); 这里字段可以不按顺序
##查
##查看表中所有记录
select * from 表名;
##查看指定字段值
select 字段名, , from 表名 where 字段=搜索值
##纵向展示每条记录 不使用;结尾 改为\G结尾
select * from 表名\G
##设置分页
##指定显示指定行
select * from 表名 limit 行数;
##指定显示第n+1 行后m行
select * from 表明 limit n+1,m;
select * from 表名 字段>=n+1 and 字段 <= m+n+1;
##删 表结构的删改增
##一般用于结构的删除 drop 删除字段
alter table 表名 drop 字段名;
##修改表名rename
alter table 旧表名 rename 新表名
##增加字段
alter table 表名 add 字段名 数据类型
##添加唯一键 (将旧字段重命名)[主键与唯一键添加方式不同 一个使用add 一个使用change]
alter table 表名 change 旧字段名 新字段名 类型 unique key;
##删除字段
alter table drop 字段名;
##添加主键约束的两种方法
##创建表时
create table 表名(字段 类型,,primary key(字段名);
create table 表名(字段 类型 primary key,,);
##已有表中添加
alter table 表名 add primary key(字段名);
##改(针对表中数据的改删)
##修改表中数据
update 表名 set 字段名=字段值,,where 条件判断字段=条件判断值
##删除表中指定字段数据
delete from 表名 where 字段=字段值;
##表的克隆
##复制表结构
create table 新表名 like 旧表名;
##导入旧数据
insert into 新表名 select * from 旧表名;
create table 新表名(select * from 旧表名);
##查看表结构三法
##表格形式显示表结构
desc 表名;
##最详细显示表结构(创建表的命令形式)
show create table 表名;
##竖向显示表结构(在表字段较多的时候,使用更加清晰)
desc 表名\G
##清空表的两种方法
##一行一行的删除记录数据,速度较慢,返回删除的结果条目。若有自增字段,删除后新增记录按最大的记录ID后面继续自增写入
delete from 表名;
##格式化表格 速度更快,无返回条目,相当于重新建立表结构,新建ID会从1开始
truncate table 表名;
##创建临时表
##show table 不会看到该表,连接退出后销毁,退出连接网络前,drop table手动删除,一般用于测试,仅当前连接的用户才可看到,相同登录换个终端也看不到。
create temporary table 表名(字段名 类型 primary key(主键名),,);
##创建外键约束,保证数据完整性与一致性
##删除主键表中某条记录,先删除外键表中相关联的字段记录,添加记录时,需要先主表拥有才能添加从表
#创建主表class
create table class (cid int,cname varchar(10));
#创建从表student
create table student (id int,name varchar(10),age int,classid int);
#为主表class的cid字段添加一个主键约束。constraint为主键创建别名,主键名建议以“PK_”开头。
alter table class ADD constraint PK_CID primary key (cid);
#为从表student的classid字段添加外键,并将student 表的classid字段和class 表的cid字段建立外键关联。外键名建议以"FK_”开头。
#references关联主键表中的字段。
alter table student ADD constraint FK_CLASSID foreign key (classid) references class(cid);
#添加外键时必须关联主键(即先要添加主键,再添加外键)
#添加主键和外键时,即使不设置别名,系统也会自动创建一个别名。
##数据库用户管理
##为数据库创建用户
##明文
create user '用户名'@'来源地址' identified by '密码'
##密文
create user '用户名'@'来源地址' identified by password '密文';
##用户重命名
rename user '旧名字'@'来源地址' to '旧名字'@'相同来源地址';
##删除用户信息
drop user '用户'@'来源地址'
##修改用户密码
##修改当前登录用户密码
set password=password('密码');
##修改其他用户密码
set password for '用户名'@'来源地址'=password('密码');
##忘记root用户密码解决方法(修改root用户密码)
sed '/[mysqld]/a\skip-grant-tables' /etc/my.cnf
service mysqld restart
mysql
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('新密码') where user='root';
flush privileges;
quit
sed '/skip-grant-tables/c\' '' /etc/my.cnf
##yum源下载后查看初始密码 通过初始密码登录后改密
grep password /var/log/mysqld.log
mysql -u root -p'初始密码'
alter user root@'localhost' identified by '新密码';
##查看当前登录用户
select user();
##数据库授权
##grant,用户存在修改用户信息,不存在创建新用户
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' identified by '指定该用户密码';
##给用户最大权限(所有权限)可在所有终端登录
grant all privileges on *.* to '用户名'@'%' identified by '密码';
##查看用户权限
##查看当前用户的权限(自己的)
show grants;
##查看指定用户的权限
show grants for 用户名@来源地址;
##撤销用户权限 必须指定库名或表
revoke 权限列表 on 库名.表名 from '用户名'@'来源地址'
##撤销所有权限
revoke all on *.* from '用户名'@'%';
##用户授权
mysql -u 用户名 -p密码 -h 目标IP/主机名 -P 端口号