数据库相关概念
- 数据库:存储数据的仓库,数据是有组织的进行存储,DataBase,简称DB
- 数据库管理系统:操纵和管理数据库的大型软件,DataBase Management System,简称DBMS
- SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准,Structured Query Language,简称SQL
注意:MySQL是一个关系型数据库管理系统
MySQL安装与连接
1、安装教程可以在网上找,有很多,可选择版本进行安装,我本人安装的是5.7版本
2、连接命令
mysql [-h 127.0.0.1] [-P 3306] -u username -p[password]
-- []中的内容是可选择,可加可不加,根据实际情况而定
-- -h后面是要连接mysql服务器的IP,如果是本机可写-h 127.0.0.1或不写
-- -P后面是要连接的mysql服务器的port, 注意P是大写,要跟密码-p区分开
-- -u后面是mysql的账号
-- -p后面是mysql账号对应密码,-p和密码之间没有空格,p是小写,密码是非加密形式,存在安全问题
MySQL语法
通用语法说明
- SQL语句都要以英文分号;结尾
- MySQL语句不区分大小写,关键字建议大写
- 注释:
- 单行注释:–XXXX 或 #XXX(MySQL特有)
- 多行注释:/* XXXX */
SQL分类
- DDL(Data Definition Language):数据库定义语言,用来定义数据库对象(数据库、表、字段)
- DML(Data ManipulationLanguage):数据库操作语言,用来对数据库表中的数据进行增删改
- DQL(Data Query Language):数据库查询语言、用来查询数据库中表的记录
- DCL(Data Control Language):数据库控制语言、用来创建数据库用户、控制数据库的访问权限
DDL
数据库操作
- 查询所有数据库
SHOW DATABASES;
- 查询当前数据库
SELECT DATABASE();
- 创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]
- 删除数据库
DROP DATABASE [IF EXISTS] 数据库名
- 使用数据库
USE 数据库名;
表操作
USE 数据库名; --先进入某一个数据库中
- 查询当前数据库所有表
SHOW TABLES;
- 查询表结构
DESC 表名;
- 查询指定表的建表结构
SHOW CREATE TABLE 表名;
- 创建表
CREATE TABLE 表名(
字段1 字段名类型 [字段1约束条件] [COMMENT 字段1注释],
字段2 字段名类型 [字段2约束条件] [COMMENT 字段2注释]
字段3 字段名类型 [字段3约束条件] [COMMENT 字段3注释]
......
字段n 字段名类型 [字段n约束条件] [COMMENT 字段n注释]
)[表的约束条件] [COMMENT 表注释];
-- []中内容是可选项
5. 删除表
--删除表
DROP TABLE [IF EXISTS] 表名;
--删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
- 修改字段
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
- 删除字段
ALTER TABLE 表名 DROP 字段名;
- 修改表名
ALTER TABLE 旧表名 RENAME to 新表名;
DML
添加数据
- 给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
- 给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
- 批量添加数据
--指定字段批量添加
INSERT INTO 表名(字段名1,字段名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...),...;
--全部字段批量添加
INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...),...;
修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件1 AND 条件2...];
删除数据
DELETE FROM 表名 [WHERE 条件1 AND 条件2...];
--注意:DELETE 语句不能删除某一个字段的值(用UPDATE可实现),只能删除某条数据
DQL
基本查询
- 查询多个字段
--查询表中指定字段
SELECT 字段1 [as] [别名],字段2,... FROM 表名;
--查询表中所有字段
SELECT * FROM 表名;
- 去重重复字段
--根据字段1去重
SELECT DISTINCT 字段1 [as] [别名],字段2,... FROM 表名;
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件1 [AND 条件2....];
聚合查询
AVG():平均值
SUM():求和
MAX():最大值
MIN():最小值
COUNT():统计数量
SELECT 聚合函数(字段) FROM 表名 WHERE 条件1 [AND 条件2....] ;
注意:null值不参与所有聚合函数的运算
分组查询
SELECT 字段列表 FROM 表名 [WHERE 条件1] [AND 条件2....] GROUP BY 分组字段名 [HAVING 分组后的过滤条件];
--排序方式
-- 》执行时机不同:where是分组之前进行过滤,不满足where条件的不能参与分组;而having是分组之后对结果进行过滤
-- 》判断条件不同:where不能对聚合函数进行判断,而having可以
排序查询
SELECT 字段列表 FROM 表名 [WHERE 条件1] [AND 条件2....] ORDER BY 字段1 排序方式,字段2 排序方式;
--排序方式
-- 》 asc 升序(默认)
-- 》 desc 倒序
分页查询
SELECT 字段列表 FROM 表名 [WHERE 条件1] [AND 条件2....] LIMIT 起始索引,查询记录数;
-- 起始索引从0开始,起始索引=(查询页码-1)* 每页显示记录数
-- 如果查询的是第一页数据,起始索引可以忽略,直接写成‘LIMIT 查询记录数’
执行顺序
FROM-》WHERE-》AND-》GROUP BY -》HAVING-》SELECT -》ORDER BY-》LIMIT
DCL
管理用户
- 查询用户
存储位置:‘mysql’ 数据库 ‘user’ 表中
use mysql;
select * from mysql;
- 创建用户
--语法
create user '用户名'@'主机名' IDENTIFIED BY '密码';
--创建用户'itcast',只能够在当前主机localhost访问,密码'123456'
create user 'itcast'@'loclhost' identified by '123456';
--创建用户'itcast',可以在任意主机访问,密码'123456'
create user 'itcast'@'%' identified by '123456';
- 修改用户密码
--语法
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
--修改用户 'itcast' 用户密码为1234
alter user 'itcast'@'%' identified with mysql_native_password by '1234';
- 删除用户
--语法
DROP USER '用户名'@'主机名';
--删除用户 'itcast'
drop user 'itcast'@'%';
权限控制
常见权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
- 查询权限
--语法
SHOW GRANTS FOR '用户名'@'主机名';
--查询 'itcast' 用户的权限
show grants for 'itcast'@'%';
- 授予权限
--语法
GRANTS 权限列表 ON 数据库.表名 TO '用户名'@'主机名';
--给 'itcast' 用户授予DB_SC_ECIS数据库所有表的所有权限
grants all on DB_SC_ECIS.* TO 'itcast'@'%';
--给 'itcast' 用户授予DB_SC_ECIS.T_EMER表的所有操作权限
grants all on DB_SC_ECIS.T_EMER TO 'itcast'@'%';
- 撤销权限
--语法
REVOKE 权限列表 ON 数据库.表名 FROM '用户名'@'主机名';
--撤销 'itcast' 用户DB_SC_ECIS数据库的所有权限
revoke all on DB_SC_ECIS.* from 'itcast'@'%';
--撤销 'itcast' 用户DB_SC_ECIS.T_EMER表的所有权限
revoke all on DB_SC_ECIS.T_EMER from 'itcast'@'%';
- 注意事项
- 多个权限用 ’ , ’ 隔开
- 授权时,数据库名和表名可以使用 * 进行