记录的相关操作
记录的相关操作
一. 介绍
mysq数据操作: DML
在mysql管理软件中,可以通过sql语句中的DML语言来实现数据的操作,包括
-- 使用insert 实现数据的插入
-- update 实现数据的更新
-- delete 实现数据的删除
-- select 实现数据的查询以及链表,子查询...
二. 插入数据 insert
插入完整数据(顺序插入)
按照字段的顺序插入数据
-- 语法1:
insert into 表名(字段1,字段2,字段3...) values(值1,值2,值3..);
-- 语法2:
insert into 表名 values(值1,值2,值3...);
为指定字段插入数据
-- 语法:
insert into 表名(字段3,字段1,字段2...) values(值3,值1,值2...);
插入多条记录
-- 语法
insert into 表名 values(值1,值2,值3),(值4,值5,值6),(值7,值8,值9);
插入查询结果
-- 语法
insert into 表名(字段1,字段2,字段3...)
select (字段1,字段2,字段3) from 表2 where ...;
-- 例如
insert into user select host,user,password from mysql.user;
-- 将表中数据去重并保存
CREATE table user1(
id int PRIMARY KEY auto_increment,
username varchar(24),
password varchar(16)
);
insert into user1(username,password)
SELECT username,`password` from user where username!='' GROUP BY username;
drop TABLE user;
alter table user1 rename user;
三. 更新数据 update
-- 语法
update 表名 set
字段1=值1,
字段2=值2,
where condition;
-- 例如
update mysql.user set password=password('123')
where user='jkey' and host='l27.0.0.1';
四. 删除数据delete
-- 语法
delete from 表名
where conition;
-- 实例
delete from t8 where id = 1; # 将t8表中id=1的记录删除了
练习:
1.将root用户密码改为123
-- 5.6 版本更新
update mysql.user set password=password('123') where user='root';
flush privileges;
exit -- 退出mysql重新进入
-- 5.7 版本
update mysql.user set authentication_string=password('123') where user='root';
update mysql.user set password_expired='N' where user='root';
flush privileges;
quit -- 退出重新进入mysql
2.删除除本地登录的root用户以外的所有用户
delete from mysql.user where user!='root';
用户权限 DB
在我们以前的程序中,我们登录是将用户输入的数据和我们的文件中的数据进行比较,而在mysql中我们的文件就是表,
mysql中四张权限表
-
user(用户权限)->db(库权限)->table_priv(表权限)->columns_priv(字段权限)
权限是越来越低的
user表信息
- select * from user/G;
- localhost root password...
- 127.0.0.1 root
- ::1 root
- localhost
创建账号
-
只创建账号
create user tom@"客户端的ip" identified by "密码";
客户端:192.168.1.11 服务器端:192.168.1.1
创建账户和密码 只允许192.168.1.11的客户端登录 create user tom@"192.168.1.11" identified by "123"; 允许192.168.1.网段的客户端登录 create user tom@"192.168.1.%" identified by "123"; 允许任何可以ping通的网段的客户端登录 create user tom@"%" identified by "123"; 客户端登录 mysql -utom -p"123" -h 192.168.1.1 -P 3306;
注意:这样创建的账号是没有权限的
-
创建账户,并且授权(只有root才可以为其他账号授权grant)
-
*(代表库).*(代表表) ==> 对应着user级别的权限(mysql.user)
grant all on *.* to "tom"@"192.168.1.1" identidied by "123";
all代表除了grant(为其他账号授权的权限)的所有权限
-
db1.*===>对应着mysql.db(库)
grant all on db1.* to "jack"@"192.168.1.1" identidied by "123";
-
db1.t1 ==>对应着mysql.tables_priv(表)
grant all on db1.t1 to "rose"@"192.168.1.1" identidied by "123";
-
select(id),update(name) db1.t1 ==>对应着mysql.columns_priv(字段)
grant select(id),update(name) on db1.t1 to "jj"@"192.168.1.1" identidied by "123";
-
修改完权限一定要 flush privileges; 刷新权限信息
删除账号
drop user "tom"@"192.168.1.1";
drop user "jack"@"192.168.1.1";
drop user "rose"@"192.168.1.1";
drop user "jj"@"192.168.1.1";
flush privileges;