数据库笔记

创建数据库

CREATE DATABASE IF NOT EXISTS 数据库名;

删除数据库

-- 直接删除数据库,不检查是否存在
DROP DATABASE 数据库名;
-- 查是否存在
DROP DATABASE IF EXISTS 数据库名;

使用数据库

USE 数据库名;

常用数据类型

数值类型

整数类型,tinyint,smallint,mediumint, int ,bigint , 整数类型声明时可以写宽度

如:int(4), 也可以不写宽度 int

浮点类型,float(M,D) ,real(M,D) double precision(M,D) , decimal(M,D) ,其中M表示总位数,D表示精确到小数点后的位数(会四舍五入)

如:decimal(7,3) 表示总共有7位,小数点后精确到3位 ,如果一个数1234.5678 存入时,表示为1234.568

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

日期和时间类型

date ,日期 ,格式: yyyy-mm-dd,注意取值范围1000-01-01到9999-12-31

time,时间 ,格式:hh:mm:ss , 注意取值范围-838:59:59 到838:59:59

datetime, 时间日期 ,格式: yyyy-mm-dd hh:mm:ss ,注意取值范围1000-01-01 00:00:00 到9999-12-31 23:59:59

类型大小
( bytes)
范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3‘-838:59:59’/’838:59:59’HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

字符串类型

char和varchar , nchar和nvarchar ,blob和text,通常char和varchar后声明存放的字符串最大长度

如:char(4), varchar(20)
char和varchar的区别: char为固定长度,如果字符串长度不足n(0-255),也占据n个字节的空间
varchar为可变长度,以实际长度为准(不超过最大长度n , 0-65535)
如:定义长度char(10), varchar(10) ,字符串’abc’如果以char形式存储,占据10个字节空间,以varchar形式存储,占据3个字节空间

如果字符串长度超过定义最大长度,就会对字符串进行裁剪,如:char(4) ,存放’abcdefg’ ,存放后 变成’abcd’

nchar,nvarchar 用法和char,varchar一样,区别是n 表示非unicode字符重点是固定长度和可变长度,对于一些取值较固定的列可以用固定长度。

如:性别char(2) , 手机号char (11), 其他可以用可变长度的varchar

blob , 二进制字符串,用来存放声音,视频,图像等,不能有默认值

text,非二进制字符串,通常用来存放较长的文本,不能有默认值

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

创建表

使用 CREATE TABLE 命令来创建一个新的表,并定义表的列和数据类型

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型,
    ...
);

删除表

使用 DROP TABLE 命令来删除一个已存在的表

DROP TABLE 表名;

修改表结构

使用 ALTER TABLE 命令来添加、删除或修改表的列。

ALTER TABLE 表名 ADD 列名 数据类型;
ALTER TABLE 表名 DROP COLUMN 列名;
ALTER TABLE 列名 CHANGE 旧列名 新列名 数据类型;

重命名表

使用 RENAME TABLE 命令来更改表的名称。

RENAME TABLE 旧表名 TO 新表名;

插入数据

除了基本的 INSERT INTO,还可以使用 INSERT INTO ... SELECT 从其他表中插入数据

INSERT INTO 表名 (列1, 列2, ...)
    SELECT 列1, 列2, ... FROM 另一个表
    WHERE 条件;

更新数据

UPDATE 命令除了基本的用法,还可以使用 JOIN 来更新多个表中的数据

UPDATE 表1
SET 表1.列1 = 值
FROM 表1
INNER JOIN 表2 ON 表1.共同列 = 表2.共同列
WHERE 条件;

删除数据

DELETE FROM 命令可以与 JOIN 一起使用来删除与另一个表中的数据匹配的记录

DELETE 表1
FROM 表1
INNER JOIN 表2 ON 表1.共同列 = 表2.共同列
WHERE 条件;

授权

使用 GRANT 命令来授予用户或角色对数据库对象的访问权限

GRANT 权限 ON 表名 TO 用户名;

撤销权限

使用 REVOKE 命令来撤销用户的权限

REVOKE 权限 ON 表名 FROM 用户名;

开始事务

使用 START TRANSACTIONBEGIN 命令来开始一个新的事务

START TRANSACTION;
-- 或 --
BEGIN;

提交事务

使用 COMMIT 命令来提交当前事务,使所有自上一个 COMMITROLLBACK 命令以来进行的更改成为永久性的

COMMIT;

回滚事务

使用 ROLLBACK 命令来回滚当前事务,撤销自上一个 COMMITROLLBACK 命令以来进行的所有更改

ROLLBACK;

保存点

使用 SAVEPOINT 命令来设置一个保存点,可以在事务中回滚到该点而不是整个事务的开始

SAVEPOINT 保存点名称;
-- 之后可以使用 ROLLBACK TO 保存点名称 来回滚到该点
ROLLBACK TO 保存点名称;

数据插入(INSERT)

向数据库表中插入数据的基本SQL命令如下:

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

如果想要插入数据到表中的所有列,可以省略列名:

INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);

数据更新(UPDATE)

更新表中的数据可以使用UPDATE命令:

UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE 条件;

数据删除(DELETE)

删除表中的数据可以使用DELETE命令:

DELETE FROM 表名 WHERE 条件;

数据查询(SELECT)

查询表中的数据可以使用SELECT命令:

SELECT 列1, 列2, ... FROM 表名 WHERE 条件;

如果想要查询表中的所有数据,可以省略列名:

SELECT * FROM 表名;

数据排序(ORDER BY)

在查询数据时,可以使用ORDER BY子句对结果进行排序:

SELECT 列1, 列2, ... FROM 表名 ORDER BY 列1 ASC/DESC, 列2 ASC/DESC, ...;

数据分组(GROUP BY)

对查询结果进行分组,并可以结合聚合函数(如SUM, COUNT, AVG等)使用:

SELECT 列1, AVG(列2), COUNT(*) FROM 表名 GROUP BY 列1;

数据连接(JOIN)

查询多个表中的数据,可以使用JOIN操作:

SELECT 表1.列1, 表2.列2, ... FROM 表1 INNER JOIN 表2 ON 表1.共同列 = 表2.共同列;

创建索引

使用 CREATE INDEX 命令来创建索引,以加快数据检索速度

CREATE INDEX 索引名 ON 表名 (列名);

删除索引

使用 DROP INDEX 命令来删除已经存在的索引

DROP INDEX 索引名 ON 表名;

创建视图

使用 CREATE VIEW 命令来创建一个视图,它是一个虚拟表,包含从一个或多个表中派生出的数据

CREATE VIEW 视图名 AS
SELECT 列1, 列2, ... FROM 表名 WHERE 条件;

删除视图

使用 DROP VIEW 命令来删除一个已存在的视图

DROP VIEW 视图名;

创建触发器

使用 CREATE TRIGGER 命令来创建一个触发器,它可以在执行特定的数据库操作(如INSERT、UPDATE、DELETE)时自动执行

CREATE TRIGGER 触发器名
BEFORE/AFTER INSERT/UPDATE/DELETE ON 表名
FOR EACH ROW
开始执行的SQL语句;

删除触发器

使用 DROP TRIGGER 命令来删除一个已存在的触发器

DROP TRIGGER 触发器名;

设置事务隔离级别

使用 SET TRANSACTION 命令来设置事务的隔离级别,以控制事务的并发性能和一致性

SET TRANSACTION ISOLATION LEVEL 隔离级别;

其中隔离级别可以是 READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE

温馨提示:本文最后更新于2024-10-22 13:53:33,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容