Sql knowledge
- 数据库的名字只能用小写
CREATE DATABASE **shop**
数据管理系统(DBMS):管理数据库的的计算器 (mysql oracal postgrels)
dbms为什么重要
通过文本文件也可以管理数据,但有缺点:
- 协作编辑不便
- 无法提供大数据格式
- 读写自动化需要编程
- 安全性角度
数据的类型
关系型、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:取消用户的操作权限
基本规则
- 分号结束
- 不区分大小写
● 关键字大写 ● 表名的首字母大写 ● 其余(列名等)小写
- 查询的字符串用单引号
- 各个RDMS的类型差异比较大
主键
就是可以通过该列筛选出想要的数据
操作
1.改名
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 最常用也最重要
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 < 条件表达式 >;
计算值
- null不参与计算,进行计算的where不会把null晒出来(只能用 is null)
- 字符串类型的对比,是根据存储字典的位置进行对比的
- null参与计算的话就是 is null 、is not null
汇总操作
COUNT :计算表中的记录数(行数)
SUM : 计算表中数值列中数据的合计值
AVG : 计算表中数值列中数据的平均值
MAX : 求出表中任意列中数据的最大值
MIN : 求出表中任意列中数据的最小值
count(*)会返回所有数据行数,count(列名)会返回不包含null的行数
但是只有count才能支持入参为 * 其他不支持
sum只能支持数字类型,但是max,min可以比较字符串