MySQL
MySQL的数据模型
基于表存储的数据库叫做关系型数据库
SQL
SQL通用语法
- 通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- SQL语句可以使用空格/缩进来增强可读性(空格缩进数量不限)
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
- 有多种注释
SQL语句的分类
语句分类
DDL
- 查询
- 查询所有数据库 show databases;
- 查询当前数据库 select database();
- 创建
- create database 数据库名;
- 创建表:
create table 表名1
2
3
4
5
6create table 表名(
字段1 字段类型 comment '注释内容',
字段2 字段类型 comment '注释内容',
字段3 字段类型 comment '注释内容',
字段n 字段类型 comment '注释内容' (注意最后一条注释没有逗号)
)comment '表注释';
varchar() 变长字符串 char() 定长字符串 - 查看创建的表:
- show tables;
- desc 表名;
- 查看表的创建信息:
- show create table 表名;
- 删除
- 数据库删除
drop database 数据库名; - 表字段删除
alter table 表名 字段名; - 表删除
drop table 表名;
- 数据库删除
- 使用
- use 数据库名
- 表修改操作
- 修改(增加)
alter table 表名 add 字段名 字段类型 comment ‘’; - 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度) - 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) comment ‘’; - 修改表名
alter table 表明 rename to 新表名;
- 修改(增加)
DML (data manipulation language)
- 添加数据(insert)
- 修改数据(update)
update em set name = ‘itheima’ where id = 1;
update em set entrytime = ‘2008-01-01’; 如果不带where代表要执行整张表的数据 - 删除数据(delete)
DQL (data query language) 用来 查询数据 的,设计的关键字select
- 基本查询
- 条件查询(加where)
- 查询没有身份证的员工select * from em where idcard is null; (使用is null)
- 查询有 is not null
- 查询姓名为两个字的员工,用like + 两个占位符__ select * from em where name like ‘__’;
- 查询身份证最后一个位是X select * from em where idcard like ‘%X’;
- 聚合函数(将一列数据作为一个整体,进行纵向计算)
- 分组查询
注意:先where,然后在where里分组后执行聚合函数,然后再执行having,分组之后,查询的字段一般为分组字段和聚合函数,查询其他的是没有意义的
- 分组性别统计数量 select gender,count(*) from em group by gender ;
- 分组性别统计年龄 select gender,avg(age) from em group by gender;
- 年龄小于45 根据工作地址分组 获取员工数量大于3的地址
select workaddress,count(*) from em where age <45 group by workaddress having count(*)>=3;
先写年龄小于45,然后再写分组,然后再挑数量,想要知道数量前面是谁?加上你选择分组的东西,最后再额外条件。
排序查询
分页查询
DCL (Data Control Language数据控制语言) 有哪些用户可以访问服务器,控制每一个用户的访问权限
- 管理用户
- 授予权限
函数
字符串函数
数值函数
select lpad(round(rand()*1000000,0),6,’0’); 实现六位数的随机验证码
日期函数
select name,datediff(curdate(),entrydate) ‘entrydays’ from em order by entrydays;
流程函数
约束
create table user(
id int primary key auto_increment comment ‘主键’,
name varchar(10) not null unique comment ‘姓名’,
age int check ( age > 0 && age < 120 ) comment ‘年龄’,
status char(1) default (1) comment ‘状态’,
gender char(1) comment ‘性别’
)comment ‘用户表’;
这些都是约束
多表查询
事务
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
比如银行转账。如果出错就要执行rollback回滚,设置为手动提交,autocommit = 0,commit
事务的四大特性:
- 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
- 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Explainfuture's Blog!