0%

SQL数据库基本操作

DDL语句

定义:数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。主要由create(添加)、alter(修改)、drop(删除)和 truncate(删除) 四个关键字完成。主要是对数据库的常规操作、对表结构的常规操作、修改表结构,而不涉及表中数据

对数据库的常规操作

功能 SQL
查看所有数据库 show databases;
创建数据库 create database [if not exists] 数据库名 [charset=utf8];
切换(选择要操作的)数据库 use 数据库名;
删除数据库 drop database [if exists] 数据库名;
修改数据库编码(了解) alter database 数据库名 character set utf8;

[ ]及其内的内容可以省去

添加注释可以用ctrl键+/键也可以在前面加一个#

image-20220113211843753

创建数据库

image-20220113212741828

删除数据库(if exists就是防止报错)

image-20220113213139430

SQLyog同上

对表结构的常规操作

创建表格式

image-20220113213736111

创建表实际上就是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字,以及每一列存储的数据类型。例如

image-20220114222351075

创建完成

image-20220114222510231

数据类型

数值类型

类型 大小 范围 范围(无符号) 用途
TINYINT 1 byte (-2^7,2^7 -1) (0,2^8 -1) 小整数值
SMALLINT 2 bytes (-2^15 ,2^15 -1) (0,2^16 -1) 大整数值
MEDIUMINT 3 bytes (-2^23,2^23 -1) (0,2^24 -1) 大整数值
INT或INTEGER 4 bytes (-2^31,2^31 -1) (0,2^32 -1) 大整数值
BIGINT 8 bytes (-2^63,2^63 -1) (0,2^64 -1) 极大整数值
FLOAT 4 bytes 很大,已够用 此处不再举例 单精度浮点数值
DOUBLE 8 bytes 超级大 此处不再举例 双精度浮点数值
DECIMAL 依赖于M,D的取值 依赖于M,D的取值 小数值

注意无符号数的使用,例如int unsigned

decimal的使用:decimal(M,D) M表示有效数字个数,D表示小数点后数字个数

字符串类型

类型 大小 用途
CHAR 0-2^8 -1 bytes 定长字符串
VARCHAR 0-2^16 -1 bytes 变长字符串
TINYBLOB 0-2^8 -1 bytes 不超过255个字符的二进制字符串
TINYTEXT 0-2^8 -1 bytes 短文本字符串
BLOB 0-2^16 -1 bytes 二进制形式的长文本数据
TEXT 0-2^16 -1 bytes 长文本数据
MEDIUMBLOB 0-2^24 -1 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-2^24 -1 bytes 中等长度文本数据
LONGBLOB 0-2^32 -1 bytes 二进制形式的极大文本数据
LONGTEXT 0-2^32 -1 bytes 极大文本数据

日期类型

类型 大小(bytes) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 -838:59:59/838:59:59 HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 自动填充当前时区的时间 YYYY-MM-DD HH:MM:SS 混合日期和时间,时间戳

对表结构的其他操作

功能 SQL
查看当前数据库的所有表名称 show tables;
查看指定某个表的创建语句 show create table 表名;
查看表结构 desc 表名;
删除表 drop table 表名;

image-20220115161216424

image-20220115161249649

修改表结构

添加列

语法:alter table 表名 add 列名 类型(长度) [约束];

例如,为students表添加一个新的字段为:班级class, 类型为varchar(20)

image-20220115162239940

修改列名和类型

语法:alter table 表名 change 旧列名 新列名 类型(长度) [约束]

例如,为students表的class字段更换为department varchar(30)

image-20220115162949440

删除列

语法:alter table students 列名;

例如,删除students里的department列

image-20220115163321176

修改表名

语法:rename table 旧表名 to 新表名;

例如,将students修改为student

image-20220115163753768

DML语句

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中的表的数据记录进行更新。

关键字:插入(insert)、删除(delete)、更新(update)

数据插入

语法

向表中插入(某些列):insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...),(值1,值2,值3...),...;

向表中插入(所有列):insert into 表 values(值1,值2,值3...),(值1,值2,值3...),...;

注意:varchar的值要用单引号括起来

image-20220115170701105

image-20220115172902200

这里的日期也可以写成 ‘2001-05-20’ 注意要有单引号

数据修改

语法:

修改所有行:update 表名 set 字段名=值,字段名=值,...;

修改特定行:update 表名 set 字段名=值,字段名=值,... where 条件;

image-20220115173828946

image-20220115174031967

where可以很复杂,也可以是范围,例如where sid > 2

数据删除

语法:

删除行(如果没有where限定,则删除所有行):delete from 表名 [where 条件];

truncate table 表名 或者 truncate 表名

区别:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table,可以理解为将整个表删除后,再创建该表。

image-20220115175332867

image-20220115175411829

删除所有行的delete和truncate效果一样

总结

image-20220115175602576