在cmd中进入数据库的操作时mysql -u root -p
选择数据库操作用USE test_db;

相关概念
Sql是操作关系型数据库的编程语言
关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
语法
数据类型
整型
类型 | 字节 | 范围(有符号) | 描述 |
---|---|---|---|
TINYINT |
1 | -128 ~ 127 | 小整数 |
SMALLINT |
2 | -32,768 ~ 32,767 | 较小整数 |
INT / INTEGER |
4 | -2,147,483,648 ~ 2,147,483,647 | 常用整数 |
BIGINT |
8 | ±9.22×10¹⁸ | 超大整数 |
浮点型
类型 | 描述 |
---|---|
FLOAT(M, D) |
单精度浮点数(约 7 位精度) |
DOUBLE(M, D) |
双精度浮点数(约 16 位精度) |
DECIMAL(M, D) |
精确小数(用于财务/货币) |
字符串型
类型 | 描述 | 最大长度 |
---|---|---|
CHAR(n) |
固定长度字符串 | 最多 255 字节 |
VARCHAR(n) |
可变长度字符串 | 最多 65,535 字节(受行限制) |
TEXT |
长文本(不支持默认值) | 最多 65,535 字节 |
日期时间类型
类型 | 格式 | 描述 |
---|---|---|
DATE |
YYYY-MM-DD |
日期 |
DATETIME |
YYYY-MM-DD HH:MM:SS |
日期 + 时间(无时区) |
TIMESTAMP |
YYYY-MM-DD HH:MM:SS |
日期 + 时间(自动时区转换) |
TIME |
HH:MM:SS |
时间 |
YEAR |
YYYY |
年 |
sql语法分类
DDL-数据库操作
- 创建:CREATE DATABASE db_name;
- 创建完整的:CREATE
- 删除:DROP DATABASE db_name;
- 查询所有数据库:SHOW DATABASES ;
- 查询一个:SELECT DATABASE db_name;
DDL-数据表操作
- 查询所有表:SHOW TABLES;
- 查询表结构:DESC table_name;
- 修改表:ALTER TABLE table_name ADD column_name datatype;
- 修改列类型或名称
ALTER TABLE table_name MODIFY column_name new_datatype;
ALTER TABLE table_name CHANGEold_column_name new_column_name datatype; - 删除列
ALTER TABLE table_name DROP COLUMN column_name; - 重命名表
RENAME TABLE old_table_name TO new_table_name; - 删除表:DROP TABLE table_name;
创建表:CREATE TABLE table_name (
column1 datatype [constraints],
column2 datatype [constraints],
);
DML-数据操作(增删改)
- 给指定字段添加数据:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 给字段插入多行数据:INSERT INTO table_name (col1, col2) VALUES (value1_1, value1_2),(value2_1, value2_2);
- 省略字段名添加(字段顺序必须匹配):INSERT INTO table_name VALUES (value1, value2, ...);
- 更新数据:UPDATE table_name SETcolumn1 = value1, column2 = value2 [WHERE condition];
- 不加where限制条件就会修改全部行, 加了限制年龄为36的修改为赵康
- 删除数据:DELETE FROM table_name WHERE condition;不加where是指删了整张表的数据
DQL-数据查询语言
SELECT [DISTINCT] column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column
HAVING condition
ORDER BY column \[ASC\|DESC\]
LIMIT offset, count\]; * 基本查询:查询相关列SELECT column1, column2, ...FROM table_name; 查询全部:SELECT \* FROM table_name; 设置别名查询:SELECT column1 AS 别名1, column2 AS 别名2...FROM table_name; 去掉重复记录查询:SELECT DISTINCT column1FROM table_name;  * 条件查询(WHERE):条件包括 | 操作符 / 关键字 | 含义 | | |-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---| | `=` | 等于 | | | `!=` 或 `<>` | 不等于 | | | `>` / `<` | 大于 / 小于 | | | `>=` / `<=` | 大于等于 / 小于等于 | | | `BETWEEN a AND b` | 在区间内(含边界) | | | **`IN (a, b, ...)`** | **值在集合中,满足其一即可** | | | `NOT IN (...)` | 值不在集合中 | | | `LIKE` | 模糊匹配 | | | `NOT LIKE` | 不匹配 | | | `IS NULL` | 是空值 | | | `IS NOT NULL` | 不是空值 | | | `AND` / `OR` | 逻辑与 / 或 | | | `NOT` | 逻辑非 | | | `EXISTS` / `NOT EXISTS` | 子查询结果存在 / 不存在 | | | `REGEXP` | 正则匹配(大小写敏感) | | | **`LIKE BINARY`** | **严格区分大小写的模糊匹配** | 通配符 | 含义 | 示例说明 | |---------|-----------------------|---------------------------| | **`%`** | **匹配任意数量的任意字符(包括0个)** | **`'a%'`:以 a 开头的任意字符串** | | **`_`** | **匹配任意一个字符** | **`'a_'`:a 开头且后面跟一个任意字符** | | `[]` | 匹配指定范围内的任一字符(仅某些版本支持) | `'[a-c]%'`:以 a、b 或 c 开头的 | | `[^]` | 排除某些字符(仅某些版本支持) | `'[^a]%'`:不以 a 开头的 |   | |  * 聚合参数(count,max,min,avg,sum):SELECT 函数(column1) FROM table_name; * 分组查询(GROUP BY): SELECT column1, column2, ...FROM table_name \[WHERE condition\] GROUP BY 分组字段名 \[HAVING 过滤条件\]; 比如根据性别分组,统计男性和女性的数量,以及平均年龄 !!一般的分组查询select后面跟的都是分组字段和聚合函数 * 排序查询(ORDER BY):SELECT 字段列表 FROM 表明 ORDER BY 字段1 排序方式1,字段2 排序方式2;**支持多字段排序,ASC升序(默认),DESC降序 !!如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序** eg. 根据年龄进行排序 * **分页查询(LIMIT):SELECT 字段列表 FROM 表名 LIMIT 初始索引,查询记录数;**  **查询第一页的10条记录**  查询第一页的5条记录 #### 执行循序 ####  ### DCL-数据控制语言 用来控制数据库的访问权限 ## 约束 约束是作用域表中字段上的规则,限制表中的数据 ####  #### 外键约束:外键是建立两张表的数据之间联系的,保证数据的一致性和完整性 ####  ## 多表查询 * 一对多(多对一):员工和部分的关系,需要建立外键联系 * 一对一:用户与用户详情的关系,多用于单表拆分,在任意一方加入外键,关联另外一方即可 * 多对多:学生和课程的关系,需要建立中间表,中间表至少两个外键,关联两方主键 语法:SELECT 表名1,表明2 WHERE 表名1.xx = 表名2.xx; 分类: * 内连接:查询两表**交集** 部分的数据 查询每一个顾客的信息及关联的订单 * 外连接: 左外连接:查询**左表** 的所有数据,及两表**交集** 部分 查询顾客的所有信息,及对应订单id信息 右外连接:查询**右表** 的所有数据,及两表**交集** 部分 * 自连接:查询当前表与自身的连接查询 查询员工本身的名字及其直系领导的名字 ## 嵌套查询(子查询) SQL语句中嵌套SELECT语句 * 标量子查询:查到的数据是一个值 查询入职日期在房东白之后的员工信息 * 列子查询:是一列 * 行子查询:子查询返回的结果是一行 * 表子查询:返回的结果是多行多列 ## 事务 事务是一组操作的**集合** ,是一个**不可分割** 的工作单位,这些操作**要么全部成功,要么全部失败** 比如,银行转账1000分三个步骤,当这个方法调用时,事务就自动开启了,中间出现任何问题都不会影响事务的自动提交。若李四金额+1000操作前出现了异常,就会导致前两个操作执行,第三个操作没执行,所以可以通过**手动设置开启和提交模式**  > SET AUTOCOMMIT = 0; -- 关闭自动提交 > > SET AUTOCOMMIT = 1; -- 开启自动提交 > > 事务执行逻辑单元。。。。 > > 如果在事务执行过程中发生错误或需要撤销操作,可以使用`ROLLBACK`语句回滚事务,撤销所有未提交的更改。 > > COMMIT; --事务手动提交 ### 四大特性 ACID  ### 并发事务问题 * 脏读:一个事务读到另外一个事务还**未提交的更新数据**。 * 不可重复读:一个事务前后读取同一条记录,两次数据不同 * 幻读:一个事务查询数据时,无该数据,但在插入数据时,又发现这行数据已经存在,出现了幻影 ### 事务隔离级别 :用于解决事务并发问题 越往下隔离级别越高,同时性能也越差