MySQL数据表的相关操作(二)

一、表数据的相关操作

先创建表

create table t2( id
int(10) auto_increment primary key, name varchar(20), job
varchar(10) );

1.1、增

# 全字段增加数据:
insert into t2 values(1,"xiaoming","it");
或者
insert t2(name) values(2,"xiaohua");
或者
insert t2 set
name="xiaoming",
job="teacher";
# 指定字段增加数据:
insert into t2(name) value("xiaoqiang"),("xiaowang");

1.2、删

#物理删除,数据就真没有了
delete from t2 where id=2;
#逻辑删除,需要添加一个字段,默认设置为0:
alter table t2 add isdelete bit default 0;
#将isdelete字段设置为1:
update t2 set isdelete=1 where id=3;
#然后查找isdelete字段为0得数据即可过滤了:
select * from t2 where isdelete=0;

1.3、改

#修改表中得数据,不增加行,insert into会增加行:
update t2 set name="xiaoxiao" where id=6;
t2是表名,
name是字段名,
where后面是条件语句,如果没有,就是对整个表得修改了,要慎重!
#修改多个字段用逗号分隔:
update t2 set name="xiaoqiang",job="engineer" where id=3;

1.4、查

全字段查找,不建议:
select * from t2;
查找指定字段:
select name,job from t2;

1.4.1、根据运算符查找

> 大于
>= 大于等于
= 等于
< 小于
<= 小于等于
!= 不等于
查找id大于等于4的用户id,用户名及工作:
select id,name,job from t2 where id >= 4;
and 多个条件同时满足
or 几个条件,满足其一即可
查找id大于等于3,并且没有标记删除的数据
select id,name,job,isdelete
from t2 where id >= 3 and isdelete=0;

1.4.2、模糊查找

like
% 匹配任意多个字符
_ 匹配单个字符
查找名字中含有xiao字符的数据:
select id,name,job from t2 where name like "xiao%";
插入一条数据,查找名字中含有xiao并且后面跟一个单字符的数据
insert t2(name) value("xiaom");
select id,name,job from t2 where name like "xiao_";

1.4.3、范围查找

in 表示非连续的范围
between A and B 表示一个连续的范围内
not
in
不在某个条件内
查找id等于2,4或者6的数据
select id,name,job from t2 where id in (2,4,6);
查找id在3到6之间数据(包含3和6):
select id,name,job from t2 where id between 3 and 6;
查找id不等于3,6的数据:
select id,name,job from t2 where id not in (3,6);

1.4.4、查找空值

is null  查找空值
select id,name,job from t2 where job is null;

1.4.5、聚合

# 查找年龄最大的
select max(age) from t2;
select min(age) from t2;
select count(*) from t2 where isdelete=0;

1.4.6、排序

order by 字段 asc 根据“列”从小到大排序
order by 字段 desc 根据“列”从大到小排序
根据id,从大到小进行排序:
select * from t2 order by id desc;

1.4.7、分组

group by 字段
#根据名字分组,统计同名的个数:
select count(*),name
from t2 group by name;

1.4.8、限制

limit n; 显示前N行

#显示前三行
select * from t2 limit 3;
#显示从第3行开始后的3行;
select * from t2 limit 3,3;
#显示从第3行开始后的4行
select * from t2 limit 4 offset 3;

二、视图的相关操作

视图并不是真实存在的表,主要是将常用的到字段或者数据整合成一个“表”。

2.1、创建视图

# 先创建表:
create table t1 ( id int(10) not null auto_increment primary key, name
varchar(20), job varchar(10) );
# 插入数据:
insert t1 set name="xiaoming", job="it";
insert t1 set name="xiaowang", job="it";
insert t1 set name="xiaohong", job="it";
# 创建索引:
create view v1 as select name,job from t1;
create view v2 as select * from t1 where id >= 2;

2.2、查看视图

# 查看所有视图:
select * from information_schema.views where table_schema="test"\G
# 查看某个视图结构:
desc v2;
# 查看视图内容:
select * from v2;

2.3、删除视图

drop view v2;
或者
drop view if exosts v2;

2.4、修改视图

alter view v1 as select id,job from t1;

三、修改密码

3.1、密码为空或者已知当前密码

方法一:用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
范例:
mysql> set password for root@localhost = password('123');
方法二:在shell终端执行:
mysql -uroot -p -e "set password for root@localhost=password('123');"
ps:注意双引号和单引号!!!
方法三:在shell终端用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
范例:
mysqladmin -uroot -p123456 password 123
方法四:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and
host='localhost';
mysql> flush privileges;

3.2、忘记密码

#方法一:
mysqld_safe启动:
可执行使用/usr/bin/mysqld_safe --user=mysql --skip-grant-tables &
然后用mysql命令进入修改密码:
update mysql.user set password=password('') where user="root" and
host="localhost";
flush privileges;
# 方法二: 修改配置文件:
在[mysqld]的段中加上一句:
[mysqld]
skip-grant-tables
重启服务:
/etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
直接使用mysql命令登录并修改MySQL的root密码
mysql> update mysql.user set password=password('123') where user='root' and
host='localhost';
mysql> flush privileges;

发表评论

后才能评论