① 查询
查询所有数据库 SHOW DATABASES
查询当前所处数据库 SELECT DATABASE()
② 创建
CREATE DATABASE [IF NOT EXISTS] 数据库名(通常以db结尾) [DEFAULT CHARSET 字符集] [COLLATE 排序规则]
③ 删除
DROP DATABASE [IF EXISTS] 数据库名
④ 使用
USE 数据库名
① 查询当前数据库所有表
SHOW TABLES
前提:通过USE指令,使用该数据库
② 查询表结构
DESC 表名
③ 查询指定表的建表语句
SHOW CREATE TABLE 表名
CREATE TABLE 表名(
列名1 数据类型 [约束] [默认值] [注释] ...,
列名2 数据类型 [约束] [默认值] [注释] ...,
列名3 数据类型 [约束] [默认值] [注释] ...
...
) [COMMENT 表注释]
注:[...]为可选参数,最后一个字段后面没有逗号。
MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
(1) 数值类型
① 整数
② 浮点
FLOAT、DOUBLE、DECIMAL(依赖于M(精度)和D(标度)的值)
DECIMAL(M,D)
M:精度,数据的总长度
D:标度,小数点后面的长度
(2) 字符串类型
CHAR(n) 长度为n的定长字符串,最大长度为255个字符
VARCHAR(n) 最大长度为n的可变字符串
(3) 日期时间类型
(1) 添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [约束] [默认值] [注释]
(2) 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型
(3) 修改字段名和数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型 [约束] [注释]
(4) 删除字段
ALTER TABLE 表名 DROP 字段名
(5) 修改表名
ALTER TABLE 表名 RENAME TO 新字段名
① 删除表
DROP TABLE [IF EXISTS] 表名
② 删除指定表,并重新创建该表
TRUNCATE TABLE 表名
用来对数据库中的数据记录进行增删改操作。
(1)给指定字段添加数据
INSERT INTO 表名(字段1,字段2,...) VALUES (值1,值2,...)
(2)给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,...)
(3) 批量添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...)(值1,值2,...)
INSERT INTO 表名 VALUES (值1,值2,...)(值1,值2,...)
注:
UPDATE 表名 SET 字段名1=值1,字段名2=值2,...[WHERE 条件]
注:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
eg: update student set name = 'gty' where id = 2
DELETE FROM 表名 [WHERE 条件]
注:
补充:
TRUNCATE TABLE 表名 ------- 清空整张表
用来查询数据库中的数据。
查询关键字:SELECT
(1) 查询多个字段
SELECT 字段1,字段2,字段3 ... FROM 表名
SELECT * FROM 表名
(2) 设置别名(增加可读性,不是必须的,设置别名时AS可以省略)
SELECT 字段1 AS 别名1,字段2 AS 别名2 ... FROM 表名
(3) 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名
eg : select distinct subject from student
(1) 语法
SELECT 字段列表 FROM 表名 WHERE 条件列表
(2) 条件
eg: select * from student where name like '_ _' 查询名字为两个字的学生
select * from student where phoneNum like '%6' 查询手机号最后一位为6的学生
(1) 介绍
将一列数据作为一个整体,进行纵向计算。
(2) 常见聚合函数
(3) 语法
SELECT 聚合函数(字段列表) FROM 表名
注:NULL值不参与所有聚合函数运算
eg:① select count(*) from student / select count(id) from student 统计学生人数
② select avg(age) from student 计算学生的平均年龄
③ select max(age) from student 计算学生的最大年龄
④ select min(age) from student 计算学生的最小年龄
(1) 语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组过滤条件]
(2) where与having的区别
① 执行时机不同:where是分组前进行过滤,不满足where条件,不参与分组;而having是分组后对结果进行过滤。
② 判断条件不同:where不能对聚合函数进行判断,而having可以。
注:
eg: select gebder, count(*) from student group by gender
根据性别分组,统计男同学和女同学的数量
select gender, avg(age) from student group by gender
根据性别分组,统计男同学和女同学的平均年龄
select homeAddress, count(*) from student where age < 20 group by homeAddress having count(*) >= 3
查询年龄小于20的学生,并根据家庭地址分类,获取学生数量大于等于3的家庭地址
(1) 语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方法2
(支持多字段排序)
(2) 排序方式
注:
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 。
eg: select * from student order by age asc
根据年龄升序排序
select * from student order by age asc, intime desc
根据年龄升序排序,年龄相同,根据入学时间进行降序排序
(1) 语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数
注:
eg: select * from student linit 0,10 查询第一页学生数据,展示10条数据
select * from student linit 10 ------>上一行的简写形式
用来管理数据库用户,控制数据库的访问权限。
(1) 查询用户
USE mysql
SELECT * FROM user
(2) 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'
(3) 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码'
(4) 删除用户
DROP USER '用户名'@'主机名'
注:
MySQL中定义了很多种权限,但是常用的就一下几种:
(1) 查询权限
SHOW GRANTS FOR '用户名'@'主机名'
(2) 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'
(3) 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'
注: