DQL(数据查询语言)与DCL(数据控制语言)

本文详细介绍了MySQL中的DML(Data Manipulation Language)语句,包括添加(INSERT)、修改(UPDATE)和删除(DELETE)数据的操作,并提供了丰富的示例。同时,还讲解了DCL(Data Control Language)语句,涉及用户创建、权限管理,如创建用户、修改密码及权限的授予与撤销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DML语句


增加(插入):insert

修改:updaate

删除:delete

1:添加insert

insert into 表名(字段名1,字段名2,……) values (值1,值2,……)  #指定字段添加值,字段1对应值1
insert into 表名 values (值1,值2,……) #给全部字段添加数据,即值1自动对应第一个字段……
#批量添加多条数据
insert into 表名 (字段名1,字段名2……) values (1,值2……)(1,值2……),……
insert into 表名 values (1,值2……)(1,值2……),……
  • *注意
    • 插入数据时,指定的字段顺序要与值的顺序一一对应
    • 字符串和日期类型的数据应该包含在引号中
    • 插入的数据大小,应该在字段的规定范围内

示例:添加数据到表

mysql> insert into employ(id,worknomber,name,gender,age,idcard,entydate) values (1,'1','ittest','男','20','12345678912345678x','2020-01-01');   #添加内容,指定字段添加
Query OK, 1 row affected (0.01 sec)

mysql> select * from employ; #查看表的内容
mysql> insert into employ values (2,'2','张三','男','18','987654321987654321','2022-01-01');  #不指定字段,要与表的字段一一对应,添加所有字段内容
Query OK, 1 row affected (0.01 sec)  

一次性插入多条数据

mysql> insert into employ values (3,'3','李四','男','30','98765432198765434a','2021-01-01'),(4,'4','王五','女','24','123456789987654328','2020-11-01');  #第一条数据和第二条数据之间使用,分隔,需要与表的字段一一对应
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

2:修改update

update 表名 set 字段名1=1,字段名2=2,…… [where 条件];  #where 符合条件的修改,不存在where则修改整个表

示例:修改id为1的name为赵六

mysql> update employ set name='赵六' where id=1;  #修改字段信息
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

修改多个字段

mysql> update employ set name='小明',gender='女' where id=1;  
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

修改整个表,不携带where条件则修改整个表

mysql> update employ set entydate='2008-01-01';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

3:删除数据delete

delete from 表名 [where 条件]
  • 注意
    • delete语句的条件可以有,也可以没有,如果没有条件,则删除整张表的所有数据
    • delete的语句不能删除某一个字段的值(可以使用update来删除)

案例:删除表中gender为女的员工

mysql> delete from employ where gender='女';  #添加where条件则表示只删除匹配到的信息
Query OK, 2 rows affected (0.01 sec)

删除表中的所有数据

mysql> delete from employ;  #不添加where条件则表示删除整个表
Query OK, 2 rows affected (0.03 sec)

所有数据

mysql> delete from employ;  #不添加where条件则表示删除整个表
Query OK, 2 rows affected (0.03 sec)

DCL语句

1:用户创建

DCL英文全称是Data Control language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。

  • 查询用户

    use mysql;
    select * from user;
    
  • 创建用户

    create user '用户名'@'主机名' identified by '密码'
    
    • 示例

      • 创建ittest用户,仅能够在当前主机localhosts登录,密码123456

        mysql> create user 'ittest'@'localhost' identified  by '123456';
        Query OK, 0 rows affected (0.02 sec)
        
      • 创建用户test1,可以在任意主机访问数据库,密码123456

        mysql> create user 'test1'@'%' identified by '123456'; #%s表示所有
        
  • 修改用户密码

    alter user '用户名'@‘主机名’ identified with mysql_native_passwd by '新密码'  #mysql_native_passwd加密方式
    
    • 修改test1用户密码为1234

      mysql> alter user 'test1'@'%' identified with mysql_native_password by '1234';
      Query OK, 0 rows affected (0.00 sec)
      
    • 删除用户

      drop user '用户名'@'主机名';
      
      mysql> drop user 'ittest'@'localhost';  #删除ittest用户
      Query OK, 0 rows affected (0.01 sec)
      

2:权限管理

权限说明
all,all privileges所有权限
select查询数据
insert插入数据
update修改数据
delete删除数据
alter修改表
drop删除数据库/表/视图
create创建数据库/表
  • 查询权限
show grants for '用户名'@'主机名';
mysql> show grants for 'test1'@'%';
  • 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@‘主机名;’
mysql> grant all on ittest.* to 'test1'@'%';  #*通配所有
  • 撤销权限
remove 权限列表 on 数据库名.表名 from '用户名'@'主机名'
mysql> revoke all on ittest.*  from 'test1'@'%' ;
Query OK, 0 rows affected (0.01 sec)
ysql> grant all on ittest.* to 'test1'@'%';  #*通配所有
  • 撤销权限
remove 权限列表 on 数据库名.表名 from '用户名'@'主机名'
mysql> revoke all on ittest.*  from 'test1'@'%' ;
Query OK, 0 rows affected (0.01 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值