1. DML-操作数据
1.1 DML-添加数据
给指定字段添加数据
INSERT INTO 表名 (字段名1,字段名2,…) values (值1,值2…)
给全部字段添加数据
INSERT INTO 表名 values(值1,值2,…)
批量添加数据
INSERT INTO 表名 (字段名1,字段名2,…) values (值1,值2…), (值1,值2…)
INSERT INTO 表名 values(值1,值2,…),(值1,值2,…)
注意:
插入数据时,指定的字段顺序需要与值得顺序一一对应的。
字符串和日期类型数据应该在引号中。
输入的数据大小,应该在字段规定的范围内。
1.2 DML-修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,…[WHERE 条件];
1.3 DELETE -删除数据
DELETE FROM 表名 [WHERE 条件]
2.DQL-查询数据
- 基本查询
- 条件查询(where)
- 聚合函数(count、max、min、avg、sum)
- 分组查询(group by)
- 排序查询(order by)
- 分页查询 (limit)
2.1 DQL-条件查询
1.语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
2.2 DQL-分组查询
1.语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
2.WHERE与HAVING区别
- 执行时机不一样:where是分组之前进行过滤,不满足where条件不参与分组,having是分组之后对结果进行过滤。
- 判断条件不一样:where 不能对聚合函数进行判断,而having可以。
注意: - 执行顺序:where >聚合函数>having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无意义
2.3 DDL-聚合函数
1.介绍
将一列数据作为一个整体,进行纵向计算。
2.常见的聚合函数
3.语法
SELECT 聚合函数(字段列表) FROM 表名;
注意:null值不参与所有聚合函数运算
2.4 DQL-排序查询
1.语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
2.排序方式
- ASC :升序
- DESC:降序
注意:如果多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
2.5 DQL-分页查询
1.语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意:
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
- 分页查询是数据库的方言,不同数据库有不同的实现
- 如果查询的是第一页数据,起始页可以省略,直接简写为limit 10
3. DCL-数据库控制语言
用来管理数据库用户、控制数据库的访问权限。
3.1 DCL-管理用户
1.查询用户
use mysql;
select * from user;
2.创建用户 主机名指的是在哪个主机上可以访问数据库
CREATE USER ‘用户名’@‘主机名’ INDENTIFIED BY ‘密码’;
创建用户itcast ,只能在当前主机localhaost访问,密码为123456,当任意主机访问数据将localhost改为’%’
CREATE USER 'itcast'@'localhost' IDENTIFIED BY '123456';
当显示这个报错的时候:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
执行刷新权限操作
flush privileges;
使用新创建的用户访问数据库,不能访问所有数据库
C:\Users\Tracy>mysql -u itcast -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.22 MySQL Community Server (GPL)Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)mysql>
3.修改用户名密码
ALTER USER ‘用户名’@‘主机名’ IDENTIFIED WITH mysq_native_password BY ‘新密码’;
4.删除用户名
DROP USER ‘用户名’@‘主机名’;
DROP USER 'itcast'@'localhost'
> OK
> 时间: 0s
3.2 DCL-权限控制
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询说明 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
1.查询权限
SHOW GRANTS FOR ‘用户名’@‘主机名’;
show grants for 'tracy'@'%' 返回结果
show grants for 'tracy'@'%' GRANT USAGE ON *.* TO 'tracy'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
2.授予权限
GRANT 权限列表 ON 数据库.表名 TO ‘用户名’@‘主机名’;
#授予库tracy 所有权限给tracy用户
grant all on tracy.* to 'tracy'@'%'
#查询权限
GRANT USAGE ON *.* TO 'tracy'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
GRANT ALL PRIVILEGES ON `tracy`.* TO 'tracy'@'%'
3.撤销权限
REVOKE 权限列表 ON 数据库.表名 FROM ‘用户名’@‘主机名’;
revoke all on tracy.* from 'tracy'@'%';
注意:
- 多个权限之间使用,逗号分隔
- 授权时,数据库和表名可以使用*进行通配,代表所有