Sql knowledge

Andy,Sql
CREATE DATABASE **shop**

数据管理系统(DBMS):管理数据库的的计算器 (mysql oracal postgrels)

dbms为什么重要

通过文本文件也可以管理数据,但有缺点:

  1. 协作编辑不便
  2. 无法提供大数据格式
  3. 读写自动化需要编程
  4. 安全性角度

数据的类型

关系型、xml型、kv型...

RDBMS结构

可以分布到多个机器上,协同工作,提高性能

有密码的

一个数据中可以存多张表

根据 SQL 语句的内容返回的数据同样必须是二维表的形式

横竖

**字段:**也就是二维表中的列,他比excel中的列更为严格,因为只能它有类型限制

**记录:**也就是二维表中的行

**单元格:**交叉的数据

关系型数据库必须以行为单位进行数据读写

单元格只能是一个数据

SQL语句和种类

公式

关键字、表名、列名 组合

种类

DDL(Data Definition Language 数据定义语言):CREATE,DROP,ALERT

DML(Data Manipulation Language 数据操纵语言)90%:SELECT,INSERT,UPDATE,DELETE

DCL(Data Control Language 数据定义语言): 好像不忒常用

COMMIT : 确认对数据库中的数据进行的变更 ROLLBACK :取消对数据库中的数据进行的变更 GRANT : 赋予用户操作权限 REVOKE:取消用户的操作权限

基本规则

● 关键字大写 ● 表名的首字母大写 ● 其余(列名等)小写

主键

就是可以通过该列筛选出想要的数据

操作

1.改名

Untitled

2.创建

create table Addressbook(
    regist_no integer not null,
    name VARCHAR(128) not null,
    address VARCHAR(256) not null,
    tel_no CHAR(10) ,
    mail_address CHAR(20) ,
    PRIMARY key (regist_no)
);

3.增加列

alter table Addressbook2 add column postal_code char(8) not null;

4.增加行

insert into Addressbook values(0002,'andy','xiangfuli','1234567890','1234567897890','12345678');

查询

select 最常用也最重要

Untitled

select 基本用法

select <列名> from <表名>

多列用,隔开;顺序也是这个顺序

1.格式,子语句单独一行展示

2.as语句:注意如果是中文得用双引号(不是单引号)

3.查询的时候可以固定写死列(没明白啥场景)

→用于创造一个计算列,比如展示一个价格*2的叫xx的列

select 
'写死的' as ding,
38 as number2,
regist_no as 序号,
name,
mail_address as email
from 
Addressbook;

4.删除重复行:增加 DISTINCT 标志段, null也会变合并成一条记录

如果查询多个列用distinct那会合并多个列值都完全重复的行

DISTINCT 关键字只能用在第一个列名之前。 因此,请大家注意不 能写成 regist_date , DISTINCT product_type

where的用法

SELECT < 列名 >, …… FROM < 表名 > WHERE < 条件表达式 >;

计算值

汇总操作

COUNT :计算表中的记录数(行数)

SUM : 计算表中数值列中数据的合计值

AVG : 计算表中数值列中数据的平均值

MAX : 求出表中任意列中数据的最大值

MIN : 求出表中任意列中数据的最小值

count(*)会返回所有数据行数,count(列名)会返回不包含null的行数

但是只有count才能支持入参为 * 其他不支持

sum只能支持数字类型,但是max,min可以比较字符串