MySQL (基础语法)
2023-04-22 11:30:48 0 举报
AI智能生成
MySQL (基础语法) 思维导图
作者其他创作
大纲/内容
大小:1 byte
有符号:-128 ---- 127
无符号:0 ---- 255
范围
tinyint
大小:2 byte
有符号:-32768 ---- 32767
无符号:0 ---- 65535
smallint
大小:3 byte
有符号: -8388608 ---- 8388607
无符号:0 ---- 16777215
mediumint
大小: 4 byte
有符号: -2147483648 ---- 2147483647
无符号: 0 ---- 4294967295
int(integer)
大小:8 byte
有符号: -9223372036854775808 ---- 9223372036854775807
无符号: 0 ---- 18446744073709551615)
bigint
大小:4 byte
用途: 单精度浮点数
float
大小: 8 byte
用途: 双精度浮点数
double
decimal(小数值)
整形
大小: 0 ---- 255 byte
用途:定长字符串
char
大小: 0 ---- 65535 byte
用途:变长字符串
varchar
用途:二进制字符串(不超过255)
tinyblob
用途:短文本字符串
tinytext
用途: 二进制形式的长文本数据
blob
用途: 长文本数据
text
........................
字符
大小: 3 byte
范围:1000 - 01 - 01 ---- 9999 - 12 - 31
格式:YYYY - MM - DD
用途:日期值
data
范围:-838:59:59 ---- 838:59:59
格式:HH:MM:SS
用途:时间值(持续时间)
time
范围:1901 ---- 2155
格式: YYYY
用途:年份值
year
范围:1000 - 01 - 01 00:00:00 ---- 9999 - 12 - 31 23:59:59
格式:YYYY - MM - DD HH:MM:SS
用途: 混合时间
datatime
日期
数据类型
代码: show databases;
例子: show databases;(显示所有已有的数据库)
查询所有数据库
代码: select database();
例子: select database();(查询当前所在的数据库的内容)
查询当前数据库
代码: create database 数据库名称;
例子: create database if not exists TEXT default charset utf8mb4 ; 用utf8mb4编码形式创建一个名为text的数据库(不分大小写)
创建数据库
代码: drop database if exists 数据库名称 ;
例子: drop database if exists TEXT ;(删除数据库text)
删除数据库
代码: use 数据库名称;
例子: use text1 ; 将当前使用的数据库转为目标数据库(text1),可用“查询当前数据库(select database() ;)”进行查询
使用数据库
DDL 数据库操作
代码: show tables;
例子: show tables; (显示当前数据库的所有表名)
查询当前数据库的所有表
代码: desc 表名;
例子: desc text; (查询text表中的所有属性的类型等系列)
查询表结构
代码: show create table 表名;
例子: show create text; (查询建立text表的语句)
查询指定表的建表语句
代码: create table 表名(字段1 字段1类型 comment '注释') comment '表注释';
创建表
代码: alter table 表名 add 字段名 类型(长度) comment '注释';
例子: alter table text add tem bigint comment '电话'; (将字段(属性)'电话'添加到表text中)
添加字段(属性)
代码: alter table 表名 modify 字段名 新数据类型(长度);
例子: alter table text modify name char; (将text表中的name字段(属性)的类型改为char)
修改数据类型
代码: alter table 表名 change 旧字段名 新字段名 类型(长度) comment '注释';
修改字段名和字段类型
代码: alter table 表名 drop 字段名;
例子: alter table text drop num; (将text表中的num字段删除)
删除字段
代码: alter table 表名 rename to 新表名;
例子: alter table text rename to text1; (将text表名改为text1)
修改表名
代码: drop table if exists 表名;
例子: drop table if exists text; (删除表text)
删除指定表
DDL 表操作
create: 用于创建数据库或其对象(如表,索引,函数,视图,存储过程和触发器)
drop: 用于从数据库中删除对象
truncate: 用于删除表中的所有记录,包括分配给记录的所有空间都将被删除
comment: 用于向数据字典添加注释
rename: is用于重命名存在于数据库中的对象
基础语法功能
DDL (数据定义语言)
例子: insert into text000 (id) values (1) ; (给指定的字段id添加值1)
选择性添加
全部添加
批量添加
添加数据
用途: 也可用于添加新字段后,向新字段内添加数据(注意判断语句where的合理使用,否则新添加的内容将会填充整个字段)
修改数据
代码: delete from 表名 where 条件 ;
删除数据
insert: 用于将数据插入表中
updata: 用于更新表中的现有数据
delete: 用于从数据库表中删除记录
DML (数据操作语言)
例子: select id from text_0.text1 ; (从数据库text_0中的表text1之内查询学号字段内的所有值)
方法一
代码: select * from 表名 ;
例子: select * from text_0.text1 ; (查询text_0数据库中text1表的各字段的所有值)
方法二
查询多个字段
代码: select 字段1 as 别名1 from 表名 ;
例子: select id as '学号' from text1 ; (查询text1表中的字段id内的值,同时给id字段附上别名'学号')
设置别名
代码: select distinct 字段列表 from 表名 ;
例子: select distinct id from text1 ; (查询表text1中的所有的id字段,并且不输出重复的值)
去除重复记录查询
基本查询
代码: select 字段列表 from 表名 where 字段 = 值 ;
例子: select * from text1 where id = 2021032656; (在text1表中查询id为2021032656的学生信息)
=: 等于
代码:select 字段列表 from 表名 where 字段 <> 值; (注:用!=效果相同)
例子: select * from text1 where id <> 2021032656; (在表text1中查询学号不为2021032656的学生信息)
<>: 不等于 (!=)
代码: select 字段列表 from 表名 where 字段 between 值1 and 值2 ;
例子: select * from text1 where id between 2021032655 and 2021032660 ; (在表text1中查询学号在2021032655到2021032660之间的学生信息)
in(...):在in之后的列表中的值,多选一
代码1: select 字段列表 from 表名 where 字段 like '__' ; (注:_个数依需求而定)
例子1: select * from text1 where name like '__' ; (查询text1表中的姓名为两个字的学生信息)
例子2: select * from text1 where name like '%李%' ; (在表text1中查询姓名中部(或首位)含有'李'的学生信息)
代码: select 字段列表 from 表名 where 字段 is null ;
例子: select * from text1 where id is null ; (在表text1中查询字段id为空的学生信息)
is null: 是null
代码: select 字段列表 from 表名 where 条件 && 条件 ; (注:用and效果相同)
例子: select * from text1 where id < 2021032661 && id >= 2021032655 ; (在表text1中查询字段在id大于等于2021032655,小于2021032661范围 内 的学生信息)
and 或 &&: 并且
代码: select 字段列表 from 表名 where 条件 || 条件 ; (注:用or效果相同)
例子: select * from text1 where id < 2021032661 || id >= 2021032655 ; (在表text1中查询字段在id大于等于2021032655,小于2021032661范围 外 的学生信息)
or 或 ||: 或者
代码: select 字段列表 from 表名 where not 条件 ; (注:用!效果相同)
例子: select * from text1 where not (id < 2021032661 and id >= 2021032655) ; (在表text1中查询字段学号 不 在id < 2021032661 和 id >= 2021032655 范围内的学生信息)
not 或 !: 非
条件查询
代码: select count(字段列表) from 表名 ;
例子: select count(*) from text1 ; (在表text1中查询元组的(行)总数)
count: 统计数量
代码: select max(字段) from 表名 ;
例子: select max(id) from text1 ; (查询表text1中的id字段的最大的值)
max: 最大值
代码: select min(字段) from 表名 ;
例子: select min(id) from text1 ; (查询表text1中的id字段的最小的值)
min: 最小值
代码: select avg(字段) from 表名 ;
例子: select avg(id) from text1 ; (查询表text1中的字段id的平均值)
avg: 平均值
代码: select sum(字段) from 表名 ;
例子: select sum(id) from text1 ; (查询表text1中的字段id的总和)
sum: 求和
聚合函数
执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同: where不能戳聚合函数进行判断,而having可以
where和having的区别
执行顺序: where > 聚合函数 > having 。
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段毫无意义
注意
分组查询
排序查询
语法
注: 起始索引 = ( 页码 - 1 ) * 每页显示记录数
分页查询是数据库方言,不同数据库实现方式不同
(页码:相当于对表内数据进行分组,每一组就是一页,页码从1开始,但是下标从0开始(数组); 记录: 显示的数据数,也就是分组的长度、大小,或者说数组的长度)
注意事项
分页查询
select: 用于从数据库检索数据
distinct: 避免输出重复值
as: 取别名
编写顺序: select > from > where > group by > having > order by > limit
执行顺序: from > where > group by > having > select > order by > limit
验证方法: 根据编写顺序写出含有以上全部语法的语句后,在from后面对表取别名,之后再逐步对执行顺序后的相关内容进行别名修改,执行,以验证执行顺序是否正确
语法顺序
DQL (数据查询语言)
代码: use mysql; select * from user;
例子: use mysql; select * from user; (转换到mysql数据库,查询user表,查看用户信息)
查询用户
代码: create user '用户名'@'主机名' identified by '密码';
例子1: create user 'like'@'localhost' identified by '123456'; (创建一个名为like的用户,设置其只能在本地主机上访问数据库,同时设置其密码为123456)
例子2: create user 'like'@'%' identified by '123456'; (创建一个名为like的用户,设置其可以在任意主机上访问数据库,同时设置其密码为123456)
创建用户
代码: alter user '用户名'@'主机名' identify with mysql_native_password by '新密码';
例子: alter user 'like'@'%' identify with mysql_native_password by '123'; (将用户like的密码修改为123)
修改用户密码
代码: drop user '用户名'@'主机名';
例子: drop user 'like'@'localhost'; (删除权限在本地主机上登录的like用户)
删除用户
注: 仅创建用户的情况下,用户对其他数据库并无访问权限
管理用户
代码: show grants for '用户名'@'主机名';
例子: show grants for 'like'@'%'; (查询权限在任意主机上都可访问数据库的用户like的访问权限)
查询权限
代码: grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
例子: grant all on Text_01.* to 'like'@'%'; (授予用户like对数据库Text_01中的任意表进行任意操作的权限)
授予权限
代码: revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名'
例子:revoke all on Text_01.* from 'like'@'%'; (撤销用户like对数据库Text_01的权限)
撤销权限
select: 查询数据
insert: 插入数据
update: 修改数据
delete: 删除数据
alter: 修改表
drop: 删除数据库,表,视图
create: 创建数据库,表
权限
权限控制
grant: gives用户的访问权限的数据库
revoke: 撤消使用GRANT命令给定的用户访问权限
DCL (数据控制语言)
MySQL (基础语法)
0 条评论
回复 删除
下一页