SQL(structured Query Language)结构化查询语言
DDL(数据定义语言):创建删除修改各种对象-->create/drop/alter
DML(数据操作语言):插入,删除,修改数据-->insert/delete/update
DQL(数据查询语言):检索(查询)数据-->select
DCL(数据控制语言):授予或者召回用户权限-->grant/revoke
SQL是不区分大小写的编程语言
- 查看所有数据库
show databases;
- 创建数据库
create database <数据库名称> default charset utf8mb4;
- 删除数据库
drop database if exists <数据库名称>;
- 查看创建数据库的过程
show create database <数据库名称>;
- 切换到指定的数据库
use <数据库名称>;
- 显示数据库中所有的表
show tables;
- 创建二维表
create table student ( stu_id int unsigned not null comment '学号', stu_name varchar(20) not null default ' ', stu_sex boolean default 1 comment '性别,默认1为男', stu_birth date comment '出生日期', primary key (stu_id) )engine = innodb comment '学生表';
主键(primary key):能够唯一确定一条记录的列。
数据类型:
整数:int(integer) / bigint / smallint / tinyint --> unsigned
小数:float / double / decimal
时间日期:time / date / datetime / timestamp
字符串:char / varchar
大对象:longtext / longblob --> 4G
设计表
ER图 ---> Entity Relationship Diagram
实体:矩形框 ---> 表
属性:椭圆形 ---> 列(字段、属性、特征)
关系:菱形框
重数:一对一(1:1),一对多(1:n),多对多(m:n)
EER图 ---> Extend ER图
正向工程:先设计EER图,然后根据EER图生成数据库和表
反向过程:用设计好的数据库和表生成EER图
DQL数据查询语言
结构:
select ..., ..., ...
from ..., ...
where ... and ... or ...
group by ..., ...
having ...
order by ... asc, ... desc
limit ... offset ...
窗口函数
专门解决topN的问题
row_number() 相当于行号
select row_number() over (order by ...) as rn from ...;
rank() 同号跳号
select rank() over (order by ...) as rk from ...;
dense_rank() 同号不跳号
select dense_rank() over (order by ...) as drk from ...;
row_number() over (partition by ... order by ...) ---> OLAP查询