Mysql 一般语法

Mysql

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=6&spm_id_from=pageDriver&vd_source=7963e4096d2b51e52877519dc0202e3e
视频教学笔记

语法

1 可以单行或多行,以分号结尾
2 可以使用空格或缩进增强语句的可读性
3 不区分大小写,建议关键字使用大写
4 注释:单行为:-- 注释内容 或 #注释内容。 多行为:/* 注释内容*/

一、DDL(数据定义definition语言)

定义数据库、表、字段

注意:以下[…]括号里的为可选参数,可写可不写。

数据库:

查询全部数据库: show databases;
查询当前数据库: select database();
创建数据库: create database [if not exists]库名 [default charset 字符集] [collate 排序规则];
删除数据库: drop database [if exists]库名;
进入数据库: use 库名;

如:create database itcast;
注意:默认的字符集为utf8mb4(原因:utf8只有三个字节,有些字符需要四个字节)

数据表:

查询当前数据库的所有表: show tables;
查询表结构: desc 表名;
查询表的建表语句: show create table 表名;

创建表: create table 表名(
字段1 字段1类型[comment ‘注释’],
字段2 字段2类型[comment ‘注释’],
字段3 字段3类型[comment ‘注释’]
)[comment ‘表注释’];
删除表:drop table [if exists]表名;
删除表并重新创新该表:truncate table 表名;
注意:,和;的位置。

修改:
添加字段: alter table 表名 add 字段名 类型(长度)[comment 注释][约束];
修改字段类型:alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和类型:alter table 表名 change 旧字段名 新字段名 新类型(长度)[comment 注释][约束];
删除字段:alter table 表名 drop 字段名;

数据类型:

数值类型

整型:
tinyint 1byte(-129,127)
smallint 2B (-32768,32767)
mediuint 3B (-8388608,8388607)
int/intger 4B (-2147483648,2147483647)
bigint 8B (-2^63 2^63 -1)

浮点数:
float 4B 单精度
double 8B 双精度
decimal 精确描述小数,依赖精度和标度,精度就是小数点前后总共的位数,标度是小数点后面的位数

注意:以上都分signed 有符号数和 unsigned无符号数

字符串类型

char 0-255B 定长字符串 性能高 char(10) 确定用定长
varchar 0-65535B 变长字符串 需要计算所以性能较差 varchar(10) 不确定用变长

tinyblob
tinytext
blob 二进制数据(视频、音频、软件安装包等数据,一般存在文件服务器中,所以用的不多)
text 长文本数据
mediumblob
mediumtext
longblob
longtext

日期时间类型

date XXXX-XX-XX 日期
time XX:XX:XX 时间值
year XXXX 年份
datetime XXXX-XX-XX XX:XX:XX 混合日期和时间
timestamp XXXX-XX-XX XX:XX:XX 时间戳 不常用

图形化界面工具DateGrip

原因:以上添加删除操作在命令行中完成,效率低。公司里面用的Mysql图形化界面最多的是navicat。
工具
DataGrip最好用,以下是界面。可以点点点也可以输入命令,输入命令时还有提示,非常方便。
datagrip

二、DML(数据操作manipulation语言)

对表中的数据进行删减

insert: 插入数据,指定的字段需要和值的顺序一一对应;字符串和日期数据应包含在引号中;插入的数据大小,应该在字段的范围内。

给指定的字段添加数据
insert into 表名 (字段,字段)values (值,值);
给全部字段添加数据
insert into 表名 values (值,值);
批量添加数据
insert into 表名 (字段,字段) values (值,值),(值,值),(值,值);
insert into 表名 values(值,值),(值,值),(值,值);

update:修改数据,条件语句可有可无,没有会修改整张表的数据!
update 表名 set 字段=值,字段=值 [where 条件];

delete: 删除数据,条件语句可有可无,没有就删整个表的数据; 不能删除某一个字段的值,只能使用update。
delete from 表名 [where 条件];

三、DQL(数据查询query语言)

用来查询数据数据库中表的记录,
关键字:select
编写顺序为:select 字段 from 表名 where 条件 group by 分组字段 having 分组后的条件 order by 排序字段 limit 分页参数;
执行顺序:1 from哪个表
2 where条件
3 group by having 分组和分组之后条件的过滤
4 select 决定查看哪一列数据
5 order by 排序
6 limit 查看多少个记录

1 基本查询

select 字段 from 表名;
查询多个字段:select 字段,字段,字段 from 表名;
select * from 表名;
设置别名:
select 字段 [as] 别名,字段 [as] 别名 from 表名;
去掉重复记录:
select distinct 字段 from 表名;

2 条件查询

select 字段 from 表名 where 条件
条件:
比较运算符
> >= < <= = 【大于 大于等于 小于 小于等于 等于】
<> != 【不等于】
between…and… 【范围内,含最小和最大】
in(值,值,值) 【多选1】
like 占位符 【模糊匹配,_匹配单字符,%匹配任意个字符,占位符要加引号】
is null【空值】
逻辑运算符
and && 【并且】
or || 【或者】
not ! 【非 不是】
如:
条件

3 分组查询

聚合函数 (count统计数量 max求最大值 min avg平均值 sum求和):把一列数据作为一个整体,进行纵向运算
Null值不参与聚合函数的运算。
select 聚合函数(字段列表)from 表名;
如:select count(*) from 表名;

select 字段 from 表名 where 条件 group by 分组的字段名 having 分组后的条件;
where是分组之前的过滤,having是分组后对结果进行过滤
where不能对聚合函数进行判断,而having可以。
执行顺序:where > 聚合函数 > having
分组之后,查询的字段一般为聚合函数和分组字段,其他字段无意义

select 字段,count(*) from 表名 group by 字段;
select
select

4 排序查询

select 字段 from 表名 order by 字段 排序方式,字段 排序方式;
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段排序。
排序方式:asc 升序(默认值)、desc 降序
如:select * from emp order by age asc;

5 分页查询

select 字段 from 表名 limit 起始索引,查询记录数;
起始索引从0开始,起始索引 = (查询页数-1)*每页显示记录数
分页查询的是数据库的方言,不同的数据库有不同的实现,Mysql中是limit
如果查询的是第一页数据,起始索引可以省略,可简写为limit 查询记录数。
如:分页

四、DCL(数据控制control语言)

管理:用户和访问权限
用户都存放在mysql的user表中的。
1 查询用户
use mysql;
select * from user;

2 创建用户
create user ‘用户名’@‘主机名’ identified by ‘密码’;
create user ‘用户名’@‘%’ identified by ‘密码’; #%指访问任意主机

3 修改用户密码
alter user ‘用户名’@‘主机名’ identified with mysql_native_password by ‘新密码’;

4 删除用户
drop user ‘用户名’@‘主机名’;

5 权限控制
all 所有权限
select 查询数据
insert 插入数据
update 修改数据
delete 删除数据

alter 修改表
drop 删除数据库、表、试图
create 创建数据库、表

查询权限:show grants for ‘用户名’@‘主机名’;
授予权限:grant 权限 on 数据库.表名 to ‘用户名’@‘主机名’;
撤销权限:revoke 权限 on 数据库.表名 from ‘用户名’@‘主机名’;

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值