SQL语言基础
SQL全称:
sql的意思是:结构化查询语言。
SQL是用来访问和处理数据库的标准的计算机语言。
SQL的特点:
- 具有综合统一性,不同数据库支持的sql稍有不同
非过程话语言
语言简捷,用户容易接受
以一种语言结构提供两种使用方式
SQL对关键字的大小写不敏感
- 建议:关键字
大写,表名,字段名小写;
SQL语句可以单行或多行书写,以分号;符结束
SQL的注释:
- 单行注释
-- 空格或# - 多行注释
/* 文本 */
MYSQL语法示例:
-- 查询有哪些数据库:
show databases;
-- 指定操作数据库:
use 数据库名字;
-- 查看数据库中有哪些表:
show tables;
-- 查看表结构:
desc 表名;
-- 查看表数据库:
select * from 表名;
mysql需要掌握的知识点
- 基本操作
- 单表操作
- 多表操作
- 窗口函数
- 视图
- 索引
- 存储过程
- 触发器
- 事务
- 索引
- 锁机制
- 日志
- 存储引擎
- SQL优化
- JDBC
- Pymysql
一.为什么要使用数据库
-
- 为了方便查询数据
-
- 为了持久保存数据
二.数据库的相关概念
- DB 数据库,保存数据的容器
- DBMS 数据管理系统.
- 银行业一般使用Oracle和DB2.
- DB2 是IBM的数据库产品.
关系型数据库中的关系是什么意思
数据库关系就是个二维表
什么是表?
—表就是类
类里的每一行就是实体(实例化);
字段就是列;
记录就是行;
实体还是行。
实体有多少个属性?
https://www.formysql.com/wenti/lanwei-shuxing.html
三.数据库存储数据的特点
一个系统有多个数据库,一个数据库里有多张表。
表是放在数据库里面的;
数据是存放在表里面的;
一个数据库里面的表名是唯一的;
数据里面列名称之为字段;
表中数据是以行的形式存放;
数据类型:
https://www.jianshu.com/p/672049b65691
数据类型的区别就是取值范围.
支付类项目必须关注小数点精确度.
普通支付项目中float 类型就可以了.
定义数据类型可以过大,但不能过小,
在选择数据类型时应当考虑冗余.
实际项目中手机号码使用VARCHAR(M) 类型;
示例:
| 字段名称 | 数据类型 | 备注 |
|---|---|---|
| 姓名 | varchar(20) 或char(16) | 可变字符串–20位 |
| 地址 | varchar(200) | 可变字符串–200位 |
| 电话号码 | varchar(11) | 可变字符串–11位 |
| 年龄 | int(3) | 整数–3位 |
| 出生日期 | date | 日期 |
| 照片 | image | 二进制数据 |
| 薪水 | money 或decimal/numeric(12,2) | 普通项目用flot类型;DECIMAL定点小数类型 ;numeric精确数字数据类型,指定精确到多少位 |
# id 整数
# name 名字 字符串16位
# age 年龄 整数
# gender 性别 字符串10位
# birthday 生日 日期
# city 城市 16位
create table user(id int,name char(16), age int, gender char(10), birthday date, city varchar(16));
DECIMAL定点小数类型
参考:https://www.yiibai.com/mysql/decimal.html
-- 精确
-- DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。
DEC(P,D)
amount DECIMAL(有效数字位数,小数位数);
数字类型:有符号和无符号
在MySQL中,数字类型的默认类型是有符号的。
无符号数字:不能是负数
在MySQL中,数字类型可以是有符号或无符号的。有符号的数字类型可以表示正数、负数或零,而无符号的数字类型只能表示非负数或零。
下面是MySQL中常用的数字数据类型及其表示范围:
| 数字类型 | 有符号的范围 | 无符号的范围 |
|---|---|---|
TINYINT | -128到127 | 0到255 |
SMALLINT | -32768到32767 | 0到65535 |
MEDIUMINT | -8388608到8388607 | 0到16777215 |
INT | -2147483648到2147483647 | 0到4294967295 |
BIGINT | -9223372036854775808到9223372036854775807 | 0到18446744073709551615 |
创建一个有符号的 INT 列:
当您创建表时,必须指定数字列的数据类型和是否为有符号或无符号。例如,
CREATE TABLE mytable (
id INT SIGNED
);
创建一个无符号的 BIGINT 列:
当您创建表时,必须指定数字列的数据类型和是否为有符号或无符号。例如,
CREATE TABLE mytable (
id BIGINT UNSIGNED
);
数据库引擎
MYSQL默认的数据库引擎就是InnoDB;
https://blog.youkuaiyun.com/omaidb/article/details/130206111
数据库的标识符
数据库中所有涉及到人工命名的都是标识符。
比如: 数据库名、表名、索引名、列名、别名、视图名、存储过程名、分区名、表空间名、都是标识符
数据库名、表名和列名都不能以空格结束- 标识符可以使用
引号引起来,也可以不用引起来,但是如果包含特殊字符和关键字,必须使用引号引起来,标识符的引用符是反引号('')`
-- 创建一个名为select的表
-- select是系统默认关键字,向创建这个表,需要使用双引号因起来
CREATE TABLE "select"(id INT, name VARCHAR(10));
-- 向select表中插入数据
-- select是系统默认关键字,使用这个表名要使用反引号引起来
insert into `select` values(1,'a');
数据库schema和catalog简介
数据库 schema 和 catalog 是数据库中两个不同但相关的概念。
Schema:指数据库中包含的一组表或对象的集合,用于将数据库中的不同数据部分进行逻辑上的分组。一个数据库可以包含多个schema,每个schema可以包含多个表、视图、存储过程等。- 在
MySQL8中,Catalog是用来存储数据库元数据(metadata)的地方,也就是说,Catalog是一个信息库,它存储了关于整个数据库(包括其中的schema)的信息,如表的数量、列的数量、索引的数量以及其他统计信息等。 - 在
MySQL8中,每个schema都有一个相应的Catalog,用于存储其元数据。
在简单的术语中,schema 就像一个文件夹,其中包含许多文件(即表);而 catalog 就像一个目录,其中包含有关这些文件(即对象)的详细信息。
从概念上来说:
一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表,视图,字段等),反过来讲一个数据库必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称,从而解决命名冲突等问题了,例如数据库对象的完全限定名称就可以表示为:
Catalog名称.Schema名称.表名称
注意:SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就像一个IP可以绑定多个域名。
从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,针对具体问题需要参考具体的产品说明书,比较简单而常用的方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:
| 产品名 | Catalog支持 | Schema支持 |
|---|---|---|
| Oracle | 不支持 | Oracle User ID |
| MySQL | 不支持 | 数据库名 |
| MS SQL Server | 数据库名 | 对象属性名,2005版开始有变 |
| DB2 | 指定数据库对象时,Catalog部分省略 | Catalog属主名 |
| Sybase | 数据库名 | 数据库属主名 |
| Infomix | 不支持 | 不需要 |
| PointBase | 不支持 | 数据库名 |
1096





