记录的相关操作

记录的相关操作

一. 介绍

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中四张权限表

  1. user(用户权限)->db(库权限)->table_priv(表权限)->columns_priv(字段权限)

    权限是越来越低的

user表信息

  • select * from user/G;
  • localhost root password...
  • 127.0.0.1 root
  • ::1 root
  • localhost

创建账号

  1. 只创建账号

    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;
    

    注意:这样创建的账号是没有权限的

  2. 创建账户,并且授权(只有root才可以为其他账号授权grant)

    1. *(代表库).*(代表表) ==> 对应着user级别的权限(mysql.user)

      grant all on *.* to "tom"@"192.168.1.1" identidied by "123";

      all代表除了grant(为其他账号授权的权限)的所有权限

    2. db1.*===>对应着mysql.db(库)

      grant all on db1.* to "jack"@"192.168.1.1" identidied by "123";

    3. db1.t1 ==>对应着mysql.tables_priv(表)

      grant all on db1.t1 to "rose"@"192.168.1.1" identidied by "123";

    4. 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;
原文地址:https://www.cnblogs.com/jkeykey/p/14457401.html