mysql

1.表的关系有一对一,一对多,多对多。

2.在对应mysql中对于对应的数据库的操作,对于对应的表的操作

1、查看所有的数据库

```mysql
show databases;
```

2、创建自己的数据库

```mysql
create database 数据库名;

#创建atguigudb数据库
create database atguigudb;
```

3、删除数据库

```mysql
drop database 数据库名;
```

```mysql
#删除atguigudb数据库
drop database atguigudb;
```

4、使用自己的数据库

```mysql
use 数据库名;

#使用atguigudb数据库
use atguigudb;
```

1、查看某个库的所有表格

```mysql
show tables;  #要求前面有use语句

show tables from 数据库名;
```

2、创建新的表格

```mysql
create table 表名称(
	字段名  数据类型,
	字段名 数据类型
);
```

说明:如果是最后一个字段,后面就用加逗号,因为逗号的作用是分割每个字段。

```mysql
#创建学生表
create table student(
	id int,
    name varchar(20)  #说名字最长不超过20个字符
);
```

3、查看定义好的表结构

```mysql
desc 表名称;
```

```mysql
desc student;
```

4、添加一条记录

```mysql
insert into 表名称 values(值列表);

#添加两条记录到student表中
insert into student values(1,'张三');
insert into student values(2,'李四');
```

5、查看一个表的数据

```mysql
select * from 表名称;
```

6、删除表

```mysql
drop table 表名称;
```

```mysql
#删除学生表
drop table student;
```

### 

3. 

DDL语句:数据定义语句(Data Define Language),例如:创建(create),修改(alter),删除(drop)等

DML语句:数据操作语句,例如:增(insert),删(delete),改(update),查(select)

因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类,DQL(数据查询语言),DR(获取)L

DCL语句:数据控制语句,例如:grant,commit,rollback等

其他语句:USE语句,SHOW语句,SET语句等。这类的官方文档中一般称为命令。

4.运算符使用在对应的where条件之后。

5.常见的函数

  • AVG(x) :求平均值

  • SUM(x):求总和

  • MAX(x) :求最大值

  • MIN(x) :求最小值

  • COUNT(x) :统计记录数

6.count(*)或count(常量值):都是统计实际的行数。
count(字段/表达式):只统计“字段/表达式”部分非NULL值的行数。

7.日期函数,加密函数,条件函数if(value,t,f),IFNULL(value1,value2)

8.关联查询就是左连接包含左表的全部,右连接就是包含右表的全部。

9.union于unionall的区别,unionall会进行合并于去重的处理。

10.sql语句的执行顺序

(1)from:从哪些表中筛选

(2)inner|left|right ... on:关联多表查询时,去除笛卡尔积

(3)where:从表中筛选的条件

(4)group by:分组依据

(5)having:在分组统计结果中再次筛选(with rollup)

(6)order by:排序

(7)limit:分页

11.group by后面可以使用having

12.exists型子查询

(1)exists()中的子查询和外面的查询没有联合的情况下,
如果exists()中的子查询没有返回任何行,那么外面的子查询就不查了。
(2)exists()中的子查询与外面的查询有联合工作的情况下,
循环进行把外面查询表的每一行记录的值,代入()中子查询,如果可以查到结果,
就留下外面查询的这条记录,否则就舍去。

13.char用于CHAR(M)为固定长度的字符串, M表示最多能存储的字符数,取值范围是0~255个字符,如果未指定(M)表示只能存储1个字符。例如CHAR(4)定义了一个固定长度的字符串列,其包含的字符个数最大为4,如果存储的值少于4个字符,右侧将用空格填充以达到指定的长度,当查询显示CHAR值时,尾部的空格将被删掉。

14.varchar用于VARCHAR(M)为可变长度的字符串,M表示最多能存储的字符数,M的范围由最长的行的大小(通常是65535)和使用的字符集确定。例如utf8mb4字符编码单个字符所需最长字节值为4个字节,所以M的范围是[0, 16383]。而VARCHAR类型的字段实际占用的空间为字符串的实际长度加1或2个字节,这1或2个字节用于描述字符串值的实际字节数,即字符串值在[0,255]个字节范围内,那么额外增加1个字节,否则需要额外增加2个字节。

15.Enum与set

字段名ENUM(‘值1’,‘值2’,…‘值n’)

字段名 SET(‘值1’,‘值2’,…‘值n’)

gender enum('男','女'),
hobby set('睡觉','打游戏','泡妞','写代码')

16.时间日期

  • 如果要表示年月日,可以使用DATE类型,格式为“YYYY-MM-DD”,例如“2022-02-04”。

  • 如果要表示时分秒,可以使用TIME类型,格式为“HH:MM:SS”,例如“10:08:08”。

  • 如果要表示年月日时分秒的完整日期时间,可以使用DATATIME类型,格式为“YYYY-MM-DD HH:MM:SS”,例如“2022-02-04 10:08:08”。

  • 如果需要经常插入或更新日期时间为系统日期时间,则通常使用TIMESTAMP类型,格式为“YYYY-MM-DD HH:MM:SS”,例如“2022-02-04 10:08:08”。TIMESTAMP与DATETIME的区别在于TIMESTAMP的取值范围小,只支持1970-01-01 00:00:01 UTC至2038-01-19 03:14:07 UTC范围的日期时间值,其中UTC是世界标准时间,并且TIMESTAMP类型的日期时间值在存储时会将当前时区的日期时间值转换为时间标准时间值,检索时再转换回当前时区的日期时间值,这会更友好。而DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。另外,TIMESTAMP的属性受MySQL版本和服务器SQLMode的影响很大。

17.约束的作用就是保证数据的完整性

  • 键约束:主键约束、外键约束、唯一键约束

  • Not NULL约束:非空约束

  • Check约束:检查约束

  • Default约束:默认值约束

18.事务

原子性不可分割,一致性数据库的状态换到另一个一致状态,隔离性事务之间进行隔离,持久性数据一旦提交数据的改变就是永久性.

19.数据库的并发问题

脏读  一个事务读取另一个事务未提交的数据

不可重复读 一个事务读取同一条数据前后记录不一样

幻读 一个事务读取另一个事务的新增,对应的记录数不一致

20.事务的隔离级别就是事务与事务之间的隔离级别

读未提交  脏读,幻读,不可重复读

读已提交  幻读,不可重复读

可重复读 幻读解决方法使用mvcc

序列化 所有的问题都可以处理但是性能十分低下

21.mysql8的新特性

innodb

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值