一、MYSQL数据库管理
1. 创建MYSQL用户
CREATE USER 'reader'@'%' IDENTIFIED BY '111111';
- reader: 需要创建的用户名:自定义
- %: IP地址,如果指定了IP地址,那么只有指定的IP机器可以访问,如果指定的是%那么外面所有机器都可以访问
- 111111:密码--自定义的
2. 用户授权
GRANT privileges ON database.table TO 'username'@'%'
- privileges分给用户的权限选项,可以是[select ,delete ,update ,insert ]比如可以给用户查询的权限SELECT
- database:数据库名称
- table:表名称
- username:用户名称,要给那个用户分配权限
- %:任意一台机器
简单示例如下:
给用户分配所有库的所有表的所有权限 ALL(所有权限),. 所有库的所有表 |
---|
GRANT ALL ON . TO 'username'@'%'; |
给用户分配database库下所有表的所有权限 ALL(所有权限),database.* database库的所有表 |
GRANT ALL ON database.* TO 'username'@'%'; |
将自己的权限分配给别的用户 |
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; |
刷新系统权限表,一般在给用户分配好权限或者进行权限设置后进行操作 |
---|
flush privileges |
修改用户密码,要在当前用户下,修改当前密码,不是在root权限下,修改别的用户密码 |
SET PASSWORD = PASSWORD("newpassword"); |
撤销用户权限 |
REVOKE privilege ON databasename.tablename FROM 'username'@'host'; |
删除用户,用户名最好是用单引号,不用单引号有可能会报错 |
---|
drop user 用户名@'%'; |
二、DDL语言
1. 创建数据库:
CREATE DATABASE [库名称] DEFAULT character set utf8;
2. 切换数据库
use [库名称]
3. 删除数据库
DROP DATABASE [库名称]
4. 创建表
CREATE TABLE [表名称](
id bigint not null primary key AUTO_INCREMENT COMMENT '主键',
name varchar(255) not null COMMENT '名称'
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT charset=utf8 COMMENT='表的描述';
5. 显示表结构
SHOW CREATE TABLE [表名称]\G
6. 删除表
DROP TABLE [表名称]
7. 更新表的列的约束条件
ALTER TABLE [表名] modify [列名] [修改的条件]
8. 修改表的名称和约束条件
ALTER TABLE [表名] change [源列名] [新列名] [约束条件]
9. 添加表的列
ALTER TABLE add [列名] [约束条件]
10. 删除表的列
ALTER TABLE DROP [列名]
11. 创建表中列的索引
ALTER TABLE [表名] add index ["自定义索引名称"] ("表中需要添加索引的列名")
12. 删除索引
ALTER TABLE [表名] DROP index ["自定义的索引名称"]
13. 添加外键约束
- 表已经存在,给已经存在的表添加外键
举例-两张表:
table1 :Persons
CREATE TABLE Persons(
id_p bigint not null primary key AUTO_INCREMENT COMMENT '主键',
last_name varchar(255) not null COMMENT '名称'
);
table2:Orders
CREATE TABLE Orders(
id_o bigint not null primary key AUTO_INCREMENT COMMENT '主键',
order_no bigint not null COMMENT '订单号',
id_p bigint not null COMMENT '外键指向Persons表的主键id_p'
);
给Orders表id_p添加外键约束,关联Persons表的主键id_p
ALTER TABLE Orders ADD FOREIGN KEY (id_p) REFERENCES Persons(id_p);
- 当表不存在时,在创建表的时候直接添加外键
需求和上面的相同还是两张表,这次在创建表的时候开始就进行外键关联,Orders表的外键id_p关联Persons表的主键id_p
table1:Persons
CREATE TABLE Persons(
id_p bigint not null primary key AUTO_INCREMENT COMMENT '主键',
last_name varchar(255) not null COMMENT '名称'
);
table2:Orders
CREATE TABLE Orders(
id_o bigint not null primary key AUTO_INCREMENT COMMENT '主键',
order_no bigint not null COMMENT '订单号',
id_p bigint not null COMMENT '外键指向Persons表的主键id_p',
FOREIGN KEY (id_p) REFERENCES Persons(id_p)
);
14. 撤销外键约束
ALTER TABLE Orders DROP FOREIGN KEY Orders_ibfk_1
注意:Orders_ibfk_1 是我们添加外键的时候由于我们没有指定外键名称,数据库就会默认生成一个外键名称,可以通过SHOW CREATE TABLE [表名称]\G 命令查看生成的外键的名称,然后在使用上面的命令进行删除Orders表的外键操作。
三、DML语言
1. 查询SELECT
SELECT [列名:a,b,c] FROM [表名:a,b,c] [限制条件……]
1.算数运算符 + - * /
2.取别名:可以给列和表取别名
--> 直接取别名在列名的后面 last_name ln
--> 使用as取别名 last_name as ln
--> 使用双引号"" last_name "ln"
3.连接符 || oracle可以,mysql查询出来的数据不是我们想要的
4.过滤和排序
--> 限制条件 多表联查的时候如果不加限制条件会出现笛卡尔积的问题
--> 排序 order by :一般情况放在结果集最后进行排序 默认升序ASC 降序:DESC
5.运算符 > ,<, <=, >=, <>(!=)
6.其他运算符
--> BETWEEN……AND…… 包含边界
--> IN([参数])
--> IS NULL
--> LIKE : 模糊匹配 _:代表任意一个 %:任意一个或多个
7.逻辑运算符:
--> AND
--> OR
--> NOT
8.多表查询
--> 等值连接
--> 非等值连接
--> 多个连接条件用AND 操作符
--> 连接分类
--内连接
--外连接
--满连接
9.分组函数
--> avg()
--> sum()
--> max()
--> min()
--> count()
10. 组函数 group by
--> 所有包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中
注意: WHERE 子句后不能使用组函数,如果使用组函数使用HAVING子句
11.子查询
--> 子查询要放在括号()中
--> 子查询要放在查询条件的右侧
--> 查询结果集要一对一,多对多
2. 插入 INSERT
INSERT INTO [表名] ([列名1,列名2,列名3,列名4,……]) VALUES([列值1,列值2,列值3,列值4,……]),([列值1,列值2,列值3,列值4,……]),……
3. 更新 UPDATE
UPDATE [表名称] SET [列名1]=[列值1],[列名2]=[列值2],…… [限制条件]
4. 删除 DELETE
DELETE FROM [表名称] [限制条件]
网友评论