前言
SQL基本语句篇幅较长,本篇记录数据库和数据库中表的定义、表中数据的增删改部分
以下语法中 [ ] 内容可写可省
目录
关系型数据库
概念:建立在关系模型基础上,多张相互连接的二维表组成
优点:
使用表存储数据,格式统一,便于维护
使用SQL语言操作,标准统一,使用方便
SQL通用语法
1. SQL可以单行或多行书写,以分号结尾
2. SQL语句可以空格、缩进增强语句可读性
3. SQL语言不区分大小写,关键字建议大写
4. 注释
单行注释
-- 注释内容
# 注释内容(MySQL特有)
多行注释:/ * 注释内容 * /
DDL:数据定义语言
数据库操
1. 查询所有数据库
show databases;
2. 查询当前数据库
select databases();
3. 创建一个数据库
create database [if not exists] 数据库名 [default char set 字符集] [collate 排序规则];
[if not exists]:数据库不存在就创建,存在不执行
[default char set 字符集]:指定使用字符集
[collate 排序规则]:指定排序规则
4. 删除一个数据库
drop database [if exists] 数据库名;
[if exists]:如果存在则删除
5. 使用某个数据库
use 数据库名;
表操作(需要在一个数据库内部)
1. 查询当前数据库所有表
show tables;
2. 查询表结构
desc 表名;
3. 查询指定表
show create table 表名;
4. 创建表
create table 表名(字段1 字段1类型 [comment 字段1注释], 字段2 字段2类型 [comment 字段2注释]) [comment 表注释];
[comment 字段n注释]:字段n添加注释*
类型 | 函数 | 大小 | 说明 |
---|---|---|---|
数值类型 | tinyint | 1 byte | 小整数值 |
smallint | 2 bytes | 大整数值 | |
mediumint | 3 bytes | 大整数值 | |
int、integer | 4 bytes | 大整数值 | |
bigint | 8 bytes | 极大整数值 | |
float | 4 bytes | 单精度小数 | |
double | 8 bytes | 双精度小数 | |
decimal | 小数 | ||
字符串类型 | char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 | |
tinyblob | 0-255 bytes | 二进制数据字符串 | |
tinytext | 0-255 bytes | 短文本字符串 | |
blob | 0-65535 bytes | 二进制长文本数据 | |
text | 0-65535 bytes | 长文本数据 | |
mediumblob | 0-16777215 bytes | 二进制中长文本数据 | |
mediumtext | 0-16777215 bytes | 中长文本数据 | |
longblob | 0-4294967295 bytes | 二进制极大文本数据 | |
longtext | 0-4294967295 bytes | 极大文本数据 | |
日期类型 | date | 3 bytes | 日期值(年月日) |
time | 3 bytes | 时间值或持续时间(时分秒) | |
year | 1 byte | 年份值 | |
datetime | 8 bytes | 混合日期和时间值 | |
timestamp | 4 bytes | 混合日期和时间值,时间截 |
5. 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
[comment 字段n注释]:添加注释
6. 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
7. 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
[comment 字段n注释]:添加注释
8. 删除字段
alter table 表名 drop 字段名;
9. 修改表名
alter table 表名 rename to 新表名;
10. 删除表
drop table [if exists] 表名;
[if exists]:存在表则删除,不存在也不报错
11. 删除表,并重新创建该表
truncate table 表名;
DML:数据操作语言
添加表中数据(insert)
1. 指定字段添加数据
insert into 表名(字段名1, 字段名2, ...) values(值1, 值2, ...);
说明:值1对应赋值给字段1、值2对应赋值给字段2...
2. 全部字段添加数据
insert into 表名 values(值1, 值2, ...);
注:值会按表的字段定义顺序赋值给对应字段
说明:值1、值2对应赋值给表的字段定义顺序
3. 指定字段批量添加数据
insert into 表名(字段名1, 字段名2, ...) values(值1, 值2, ...), (值1, 值2, ...), ...;
说明:第1对值对应赋值给字段1、第2对值对应赋值给字段2...
4. 所有字段批量添加数据
insert into 表名 values(值1, 值2, ...), (值1, 值3, ...), ...;
注:值会按表的字段定义顺序赋值给对应字段
说明:第1对值、第2对值对应赋值给表的字段定义顺序
修改表中数据(update)
修改字段对应值
update 表名 set 字段名1=值1, 字段名2=值2, ... [where 条件];
[where 条件]:只修改这个条件的对应值,不加where条件相当修改所有字段的值
删除表中数据(delete)
删除指定数据
delete from 表名 [where 条件];
[where 条件]:删除这个条件的所有目标,不加where条件相当删除表中所有值
记录
2022 - 06 - 07