1.基础知识数据库是存储和管理数据的仓库。数据库管理系统操纵和管理数据库的大型软件。SQL操作关系型数据库的编程语言定义了一套操作关系型数据库统一标准。我们使用MySQL社区版进行学习2.MySQLMySQl连接语法mysql –u用户名 –p密码 [-h数据库服务器 IP地址 -P端口号]数据模型关系型数据库:建立在关系模型基础上由多张相互连接的二维表组成的数据库。特点使用表存储数据格式统一便于维护。使用SQL语言操作标准统一使用方便可用于复杂查询。数据在数据库中存储数据库-表-数据(记录)3.SQL语句分类DDL--数据库查询所有数据库show databases;查询当前数据库select database();使用/切换数据库use数据库名;创建数据库create database [if not exists] 数据库名 [default charset utf8mb4]删除数据库drop database [if exists] 数据库名;注语法中的database也可以替换成schema。如create schema db01; MySQL8版本中默认字符集为utf8mb4。同一个数据库服务器中数据库的名字不可以相同DDL--表结构创建表create table tablename(字段1字段类型[约束][comment字段1注释],......字段2字段类型[约束][comment字段2注释])[comment表注释];约束作用于表中字段上的规则用于限制存储在表中的数据。目的保证数据库中数据的正确性、有效性和完整性。示例实现主键自增的效果定义主键的时候指定关键字auto_increment一个字段上可以添加多个约束多个约束之间使用空格分开常见问题数值类型在定义的时候后面加了unsigned关键字是什么意思unsigned表示无符号类型表示只能取0及正数不加默认是signed表示可以取负数char与varchar的区别是什么什么时候用char什么时候用varcharchar是定长字符串varchar是变长字符串如果一个字段的长度是固定的建议使用char如身份证号、手机号如果一个字段的长度不是固定的建议使用varchar如用户名、姓名查询当前数据库的所有表show tables查询表结构desc表名查询建表语句show create table表名添加字段alter table表名add字段名 类型(长度)[comment注释][约束];、修改字段类型alter table表名modify字段名 新数据类型(长度)修改字段名与字段类型alter table表名change旧字段名 新字段名 类型(长度)[comment注释][约束];删除字段alter table表名drop column字段名;修改表名alter table表名rename to新表名;删除表drop table [if exists]表名;DML--增删改增insert指定字段添加数据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修改数据update 表名 set 字段名1 值1 ,字段名2 值2 , ....[ where条件];注修改语句的条件可以有也可以没有如果没有条件则会修改整张表的所有数据。删delete删除数据delete from表名[where条件];注DELETE语句的条件可以有也可以没有如果没有条件则会删除整张表的所有数据DELETE语句不能删除某一个字段的值(如果要操作可以使用UPDATE将该字段的值置为NULL)。DQL--查slect基本查询select...from... 条件查询where 分组查询group by排序查询order by 分页查询limit4.查询select基本查询查询多个字段select字段1,字段2,字段3 from表名;查询所有字段(通配符)select * from表名;为查询字段设置别名as关键字可以省略select字段1 [as别名1],字段2 [as别名2] from表名;去除重复记录select distinct字段列表from表名;注*号代表查询所有字段在实际开发中尽量少用不直观、影响效率条件查询条件查询select字段列表from表名where条件列表;分组查询分组聚合聚合函数将一列数据作为一个整体进行纵向计算。注null值不参与所有聚合函数的运算统计数量可以使用count(*)count(字段)count(常量)推荐使用count(*)分组查询select 字段列表 from 表名 [where条件列表] group by 分组字段名 [having分组后过滤条件];where与having的区别1.执行时机不同where是分组之前进行过滤不满足where条件不参与分组而having是分组之后对结果进行过滤。2.判断条件不同where不能对聚合函数进行判断而having可以。注分组之后查询的字段一般为聚合函数和分组字段查询其他字段无任何意义执行顺序:where聚合函数 having排序查询排序查询select 字段列表 from 表名 [where条件列表] [group by分组字段名having分组后过滤条件] order by排序字段排序方式;排序方式升序asc降序desc默认为升序asc是可以不写的分页查询分页查询select 字段 from 表名 [where条件] [group by分组字段having过滤条件] [order by排序字段] limit起始索引,查询记录数;