mysql update语句

第六篇:视图、触发器、事务、存储过程、函数

余生长醉 提交于 2019-12-04 03:31:58
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+ | 1 | 生物 | 1 | | 2 | 物理 | 2 | | 3 | 体育 | 3 | | 4 | 美术 | 2 | +-----+--------+------------+ 4 rows in set (0.00 sec) mysql> select * from teacher; +-----+-----------------+ | tid | tname | +-----+-----

第四篇:记录相关操作

放肆的年华 提交于 2019-12-04 03:30:52
阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及。 ======================================================== 本节内容包括: 插入数据 更新数据 删除数据 查询数据 二 插入数据INSERT 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3…值n); 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); 3. 插入多条记录 语法: INSERT INTO 表名 VALUES (值1,值2,值3…值n), (值1,值2,值3…值n), (值1,值2

初识数据库

扶醉桌前 提交于 2019-12-04 03:29:49
阅读目录 一 数据库管理软件的由来 二 数据库概述 三 mysql介绍 四 下载安装 五 mysql软件基本管理 六 初识sql语句 一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个 文件仅仅只能存在于某一台机器上 。 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。 很不幸,这些假设都是你自己意淫出来的,上述假设存在以下几个问题。。。。。。 1、程序所有的组件就不可能运行在一台机器上 #因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。#于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。 2、数据安全问题 #根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。 #于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理

ecs mysql8

让人想犯罪 __ 提交于 2019-12-04 02:28:33
给了我提醒,是不是mysql8.0以上的版本密码策略和更改语法不对了。 重新操作一遍: #vim /etc/my.cnf 【mysql】 添加skip-grant-table #systemctl stop mysqld.service #systemctl start mysqld.service #mysql –u root [敲回车进入] mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> alter user 'root'@'localhost'IDENTIFIED BY 'MyNewPass'; ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements mysql> alter user 'root'@'localhost'IDENTIFIED BY 'MyNewPass@123'; ERROR 1396 (HY000): Operation ALTER USERfailed for 'root'@'localhost' mysql> alter user'root'@'%' IDENTIFIED BY 'MyNewPass@123'; 【mysql8

mysql ERROR 1114 (HY000): The table 't_bigtable' is full

≯℡__Kan透↙ 提交于 2019-12-04 01:52:42
在测试环境中造了一个大表,因为环境配置了gtid的复制方式,索引使用create table t_bigtable select * from information_schema.tables;的方式提示错误。 ERROR 1786 (HY000): CREATE TABLE … SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1. 所以采用了先创建表结构,然后在插入数据的方式。 create table t_bigtable like information_schema.tables; insert into t_bigtable select * from information_schema.tables; insert into t_bigtable select * from t_bigtable; 多次执行上面的语句后提示表t_bigtable满了,库的配置中使用了单独的表空间,而且检查数据所在的磁盘空间空闲也很多,不是磁盘空间满导致的,别的表在添加数据的时候是正常的。这个时候看了下表的建表语句。 ABLES | CREATE TEMPORARY TABLE `TABLES` ( `TABLE_CATALOG` varchar ( 512 ) NOT NULL DEFAULT '' ,

数据的添加更新删除

房东的猫 提交于 2019-12-04 01:41:32
1.添加数据 在添加新记录之前需要先创建一个数据库itcast,创建数据库的SQL语句如下所示: mysql> CREATE DATABASE itcast;Query OK, 1 row affected 选择使用数据库itcast,SQL语句如下: mysql> USE itcast; Database changed 在数据库中创建一个表student1_tb用于存储学生信息,创建student_tb表的SQL语句如下所示: mysql> CREATE TABLE student1_tb -> ( -> id INT(20) PRIMARY KEY, -> name VARCHAR(20) NOT NULL, -> sex VARCHAR(10) UNIQUE, -> grade FLOAT -> ); Query OK, 0 rows affected 查看student1_tb中的内容 mysql> DESCRIBE student1_tb; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id |

PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例

假如想象 提交于 2019-12-04 00:48:18
我们经常需要在关系型数据库中保存一些树状结构数据,比如分类、菜单、论坛帖子树状回复等。常用的方法有两种: 1. 领接表的方式; 2. 预排序遍历树方式; 假设树状结构如下图: 领接表方式 主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自动,parent_id 为上级节点的 id。一目了然,“Java”是“Language”的子节点。 我们要显示树,PHP 代码也可以很直观,代码如下: <?php /** * 获取父节点下的所有子节点 * @since 2011-05-18 * @param $parent_id 父节点 id,0 则显示整个树结构。 * @param $level 当前节点所处的层级,用于缩进显示节点。 * @return void */ function show_children ($parent_id = 0, $level = 0){ // 获取父节点下的所有子节点 $result = mysql_query('SELECT id, name FROM tree WHERE parent_id=' . intval($parent_id)); // 显示每个子节点 while ($row = mysql_fetch_array($result)) { // 缩进显示 echo '<div style=

mysql - 表锁,行锁

五迷三道 提交于 2019-12-04 00:13:17
MyISAM存储引擎:开销小,加锁快,无死锁。锁定粒度大,并发度低,容易发生锁冲突。 不支持事务。 采用表锁 (操作时对操作的表上锁) 基本不用了 innoDB存储引擎:开销大,有死锁,锁定粒度小,不容易发生冲突。 采用行锁(每句sql执行时对操作行上锁),但是也支持表锁 mysql默认引擎 问题:库存超卖 库存1,结果两个人同时购买,第一个人判断后还有1个剩余,于是执行 update 操作, 这时第二个人开始判断,此时update还没结束,剩余还是1,于是也开始进update操作,导致库存变为-1. 1. 悲观锁,在判断的select语句中加入行锁,与update语句互斥,保证第1个人提交事务前,第2个人不能操作这个货物。 2.乐观锁,添加版本字段,查询时更新版本字段,版本字段变化时,不能更新。 select num, version from warehouse where id = 商品编号; 查询数量同时查出版本,比如111 update warehouse set num = num - 1, version = version + 1 where version = 111; 这样假如warhouse在查询后这个商品被更改过,这条将不会更改任何字段。如果成功了版本同时改变为112。 reference: http://www.zsythink.net/archives

MySQL_约束

时间秒杀一切 提交于 2019-12-03 23:27:36
MySQL中约束的作用是对表中的数据进行限定,保证数据的正确性,完整性,有效性。 分类:(1)主键约束 primary key(2)非空约束 not NULL (3)唯一约束 unique (4)外键约束 foreign key     1.非空约束:限定数据非空,如果为空则不可以添加数据。 添加语法:(1)在创建表的时候添加: 列名 数据类型 NOT NULL 发现可以插入id为空的数据,但在现实生活中id不为空 那么就要去限定id:id INT NOT NULL, (2)表已经创建完成时的非空约束:用到以前的修改语句,对name来进行限定非空 删除非空约束语法:与第二个创建方法类似,倒过来用就对了 发现姓名可以为空了。     2.唯一约束:限定列值不能重复 添加语法与之前的非空约束一样,但是删除不一样,语法为 alter table drop index 列名,之前的删除方法没有用,虽然执行成功了,但是还是唯一的 注意:NULL值表示不确定,因此唯一约束限定的列值可以有多个NULL。 3.主键约束:就是非空且唯一。并且一个表只能有一个主键列,主键是表中记录的唯一标识,同样添加方法同上,但是删除不同。 语法:alter table 表名drop primary key;那么问题来了,为什么删除不指定哪个列呢,那是因为之前说过,主键只有一个,不用去区分。

MySQL之视图

好久不见. 提交于 2019-12-03 22:57:45
1、概念: 视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全。 2、语法 创建方法: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 删除视图: DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE] 3、优缺点 优点:   简单化,数据所见即所得   安全性,用户只能查询或修改他们所能见到得到的数据   逻辑独立性,可以屏蔽真实表结构变化带来的影响 缺点:   性能相对较差,简单的查询也会变得稍显复杂   修改不方便,特变是复杂的聚合视图基本无法修改 4、举例 查看主表信息 mysql > SELECT