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;
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。