本文介绍: 数值类型存在如下8种TINYINT(byte)、SMALLINT(short)、MEDIUMINT、INT(int)、BIGINT(long)、FLOAT(float)、DOUBLE(double)、DECIMAL。对于性别已经确定长度字段我们可以采用char(1)。而MySQL的事务自动提交的,也就是说,每执行一条SQL语句,MySQL会立即隐式提交事务char(n) 和 varchar(n) 中括号中 n 代表字符个数,并不代表字节个数比如 CHAR(30) 就可以存储 30 个字符

目录

关系型数据库

SQL通用语法

数据类型

数值类型

字符串类型


age TINYINT UNSIGNED

score double(4,1)

意思是,最大长度为4,小数点占1位。

此外,char性能varchar更好,但是varchar会更节省存储空间。对于用户名等不确定数据长度的字段我们可以采用varchar(20)。对于性别已经确定长度的字段我们可以采用char(1)。

有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。这些我们通常不会使用,不便管理且效率不高,这类文件我们通常使用专门的文件服务器存储

CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则];

DROP DATABASE[IF EXISTS]数据库名;

USE 数据库名;

SHOW TABLES;

DESC 表名;

SHOW CREATE TABLE 表名;

CREATE TABLE 表名

字段1 字段1类型 [COMMENT 字段1注释],

字段2 字段2类型 [COMMENT 字段2注释],

字段n 字段n类型 [COMMENT 字段n注释]

) [COMMENT 表注释];

  • 指定字段:INSERT INTO 表名(字段1,字段2,…) VALUES (值1,值2,…);
  • 全部字段:INSERT INTO 表名 VALUES (值1,值2,…);
  • 批量添加:
    • INSERT INTO 表名 (字段名1,字段名2,…) VALUES (值1,值2,…),(值1,值2,…);
    • INSERT INTO 表名 VALUES (值1,值2,…),(值1,值2,…);

UPDATE 表名 SET 字段名1=值1,字段名2=值2 [WHERE 条件];

DELETE FROM 表名[where 条件]

SELECT 字段列表 FORM 表明列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列 ORDER BY 排序字段列表 LIMIT 分页参数

  • SELECT 字段1,字段2,…FROM 表名;
  • SELECT*FROM 表名;

SELECT 字段1[AS 别名1],字段2[AS 别名2] FROM 表名;

SELECT DISTINCT 字段列表 FROM 表名;

SELECT 字段列表 FROM 表名 WHERE 条件列表;

SELECT 聚合函数(字段列表)FROM 表名;

SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名 [HAVING 分组过滤条件];

where>聚合函数>having

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

  1. from 找到哪张表
  2. where 条件过滤
  3. group by 对过滤后的数据进行分组
  4. select 查找需要查找的字段
  5. order by 对字段进行排序
  6. limit 返回需要的数据个数

USE mysql;

SELECT *FROM user;

创建用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码' ;

修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

删除用户

DROP USER '用户名'@'主机名';
SHOW GRANTS FOR '用户名'@'主机名';
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

常见的日期函数

create table表名{

字段名 数据类型

[constraint][外键名称]foreign key(外键列名references主表(主表列名

}

alter table 表名 add constraint 外键名称 foreign key (外键列名) references 主表 (主表列名);

alter table 表名 drop foreign key 外键名称;

alter table 表名 add constraint 外键名称 foreign key(外键字段)references 主表名(主表字段名)on update cascade on delete cascade;

  • 内连接:相当于查询a,b交集部分数据
  • 外连接:
    • 左外连接:查询左表所有数据以及两表交集部分数据。实现语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
    • 右外连接:查询右表所有数据以及两表交集部分数据。实现语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
  • 自连接:当前表与自身的连接查询,自连接必须使用表别名实现语法:selec 字段列表 from 表a 别名a join 表a 别名b on 条件;

查询语法如下

select 字段列表 from 表a … union [all] select 字段列表 from 表b…;

实现语法如下

select * from t1 where column1 = (select column1 from t2);

查看/设置事务的提交方式

select @@autocommit;
set @@autocommit = 0; 
//设置手动提交

提交事务命令 commit;

回滚事务命令 rollback;

开启事务命令 start transactionbegin;

  • 赃读:一个事务读到另一个事务还没有提交的数据
  • 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同
  • 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时发现数据已经存在,出现幻影

select @@transaction_isolation;

set [session|global] transaction isolation level {read uncommitted | read committed |repeatable read |serializable}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注