创建数据库
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
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 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) | 单精度 浮点数值 |
DOUBLE | 8 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) | 范围 | 格式 | 用途 |
---|---|---|---|---|
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 | ‘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:07 | YYYY-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,非二进制字符串,通常用来存放较长的文本,不能有默认值
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-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 TRANSACTION
或 BEGIN
命令来开始一个新的事务
START TRANSACTION;
-- 或 --
BEGIN;
提交事务
使用 COMMIT
命令来提交当前事务,使所有自上一个 COMMIT
或 ROLLBACK
命令以来进行的更改成为永久性的
COMMIT;
回滚事务
使用 ROLLBACK
命令来回滚当前事务,撤销自上一个 COMMIT
或 ROLLBACK
命令以来进行的所有更改
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 UNCOMMITTED
、READ COMMITTED
、REPEATABLE READ
或 SERIALIZABLE
暂无评论内容