如何降低网站的权重,网站设计标注图用什么做的,石家庄做网站的有哪些公司,华为云建设网站需要域名吗目录 sql语句 DDL——数据库定义语言#xff08;定义库#xff0c;表#xff0c;字段#xff09; 数据库操作#xff1a; 表操作#xff1a; DML 增删改语句 DQL 语法编写顺序#xff1a; 条件查询 DCL 用户管理#xff1a; 权限管理#xff1a; 函数 常见字符串内置函… 目录 sql语句 DDL——数据库定义语言定义库表字段 数据库操作 表操作 DML 增删改语句 DQL 语法编写顺序 条件查询 DCL 用户管理 权限管理 函数 常见字符串内置函数 常见数值内置函数 常见日期内置函数 常见流程内置函数 约束 外键约束 多表查询 连接查询 内连接相当于查询AB交集部分数据 外连接 自连接 联合查询 子查询 标量子查询子查询结果为单个值 列子查询子查询结果为一列 行子查询子查询结果为一行 表子查询子查询结果为多行多列 事务 概念 操作 事务四大特性ACID 并发事务问题 事物的隔离级别 隔离操作 部分图片截取自【黑马程序员 MySQL数据库入门到精通从mysql安装到mysql高级、mysql优化全囊括】https://www.bilibili.com/video/BV1Kr4y1i7ru?p62vd_source4aa5c9ca48e929b37821b89859f00208 仅供学习使用感谢 sql语句 DDL——数据库定义语言定义库表字段 数据库操作 查询 查询所有数据库 Show databases; 查询当前数据库 Select database(); 创建 Create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则] 删除 Drop database [if exists] 数据库名 使用 Use 数据库名 表操作 查询 查询当前数据库中所有表 Show tables 查询表结构 Desc 表名 查询指定表的建表语句 Show create table 表名 修改 添加字段 Alter table 表名 add 字段名 类型 [comment 注释] [约束] 修改数据类型 Alter table 表名 modify 字段名 新数据类型 修改字段名和字段类型 Alter table 表名 change 旧字段 新字段 类型长度[约束] 修改表名 Alter table 表名 rename to 新表名 删除 删除表 Drop table [if exists] 表名 清空表 Truncate table 表名 DML 增删改语句 添加数据 Insert into 表名[字段名1[字段名2…]] values (值1值2…) [, (值1值2…)]; 修改数据 Update 表名 set 字段名1值1字段名2值2….[where 条件] 删除数据 Delete from 表名 [where 条件] 注意当添加一个字段需要给原先的列中添加该字段的值时需要用update设置这个值而不是用insert插入这个值 insert插入的是整体字段的值而不能插入单独一个字段的值。 DQL 语法编写顺序 Select [distinct] 字段1[as 别名] [字段2….] from 表名列表 [where 条件列表] [group by 分组字段列表] [having 分组后条件列表] group by分组之后的条件过滤用having [order by 字段1 排序方式1字段2 排序方式2] 排序方式ASC升序默认值DESC降序注意多字段排序当第一个字段值相同时才会根据第二个字段进行排序 [ limit 起始索引查询记录数] 起始索引从零开始起始索引查询页码-1*每页显示记录数 条件查询 注意“link 占位符 ”中“_”的个数表示匹配的具体个数“%”表示匹配到任意多个 多字段排序当第一个字段值相同时才会根据第二个字段进行排序 IN中的元素需要用“”进行隔离 DCL 用户管理 查询用户 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 ‘用户名’‘主机名’ 函数 常见字符串内置函数 注意mysql的start位置最小为1 常见数值内置函数 案例随机生成六位验证码 SELECT ROUND(RAND()*1000000); 常见日期内置函数 常见流程内置函数 案例 约束 补充mysql中的主键自增auto-increment 注意约束是作用于表中的字段上的可以在创建表/修改表的时候添加约束。 如果定义not null一定要给定义默认值放置严格模式无法正常插入 外键约束 外键的作用外键是用来让表与表之间建立连接从而保证数据的一致性和完整性。 添加外键 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 行为 on delete 行为 常用行为级 联cascade 删除后值设置为空set null 多表查询 多表查询分类 注意·关联匹配条件是到笛卡尔积里面筛选的条件 连接查询 内连接相当于查询AB交集部分数据 隐式内连接select 字段列表 from 表1表2 where 关联匹配条件 显示内连接select 字段列表 from 表1 [inner] join 表2 on 关联匹配条件推荐使用 外连接 左外连接查询左表所有数据以及两张表交集部分数据 右外连接查询右表所有数据以及两张表交集部分数据 Select 字段列表 from 表1 left/right [outer] join 表2 on 关联匹配条件 自连接 当前表与自身的链接查询子链接必须使用表别名 联合查询 unionunion all 对于union查询就是把多次查询的结果合并起来形成一个新的查询结果 Select 字段列表 from 表A……. Union Select 字段列表 from 表B….. 注意对于查询多张表的列数必须保持一致字段类型也需要保持一致 Union all会将全部的数据直接合并在一起union会对合并之后的数据去重 子查询 概念SQL语句中嵌套select语句称为嵌套查询又称子查询。 语法select 字段列表 from 表 where 字段名select 字段列表 from 表……..; 子查询外部的语句可以是insert/update/delete/select中的任意一个。 根据子查询结果不同分为 标量子查询子查询结果为单个值 列子查询子查询结果为一列 行子查询子查询结果为一行 常用操作符,IN,NOT IN 表子查询子查询结果为多行多列 根据子查询位置分为where之后from之后select之后。 事务 概念 事务是一组操作的集合它是一个不可分割的工作单位事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求及这些操作要么同时成功要么同时失败。 例如银行转账要么成功要么失败 默认mysql的事务是自动提交的也就是说当执行一条dml语句mysql会立即隐式的提交事务。 操作 查看/设置事务提交方式1为自动提交0为手动提交 Select autocommit Set autocommit0 开启事务不用更改事务提交方式 Start transaction 或 begin 提交事务 commit 回滚事务 rollback 注意开启事务或者设置为手动提交时rollback才生效 事务四大特性ACID 原子性事务是不可分割的最小操作单元要么全部成功要么全部失败。 一致性事务完成时必须使所有的数据都保持一致状态 隔离性数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环境下运行。 持久性事务一旦提交或回滚它对数据库中的数据的改变是永久的。 并发事务问题 事物的隔离级别 注意“×”是可以解决相关问题“√”反之无法解决。 repeatable read可重复读serializable串行。 隔离操作 查看事务隔离级别 select transaction_isolation 设置事务隔离 set [session|global] transaction isolation level [read uncommitted | read committed | repeatable read(默认) | serializable] 注意事务隔离级别越高数据越安全但是性能越低。 Read commited 解决了脏读问题当一方提交了另一方才会查询得到。一方提交 Repeatable read 解决了不可重复读问题当一方提交了另一方查询不到只有另一方自身也提交了才会查询得到需要双方都提交 Serializable 串行操作一方执行完另一方才可以执行