collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准 现在创建一张表user1: mysql> create table if not exists user1(...affected (0.00 sec) mysql> 创建表user2: mysql> create table if not exists user2( -> id int, -...修改表alter 在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。...xingming varchar(60) DEFAULT NULL; 向表中插入数据insert into values mysql> insert into user values (1,'张三...修改指定列的属性 例如表中的某一列长度更改为60 原先的表: alter table user modify name varchar(60); 修改后的表: comment直接没了,把新的属性全部覆盖掉老的
MySQL基本查询 表的增删改查:CRUD Create(创建)包含insert Retrieve(读取)包含select Update(更新) Delete(删除) 一.增加数据Create 主要是...,但冲突数据的值和 update 的值相等 1 row affected: 表中没有冲突数据,数据被插入 2 row affected: 表中有冲突数据,并且数据已经被更新 此外,通过 MySQL...exam_math; 3.查询字段为表达式 在MySQL数据类型的介绍中,select可以执行相应的各种表达式,函数。...实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚。...都是对表进行各种的增删查改,尤其对于查找,表与表之间因外键的联系等。
MySQL表的增删改查(基础) 据库最主要的操作就是增(create)删(update)改(retrieve)查(delete)。(CURD) 注意:进行增删改查操作的时候,请务必选中数据库。...其他的没有字符类型的编程语言,基本上也都是单引号双引号都行的) 如果是这种情况,说明当前数据库的字符集是有问题的。...如果在一些场景中,把某个资源吃光了,就会导致程序出现很严重的问题。 指定列查询 select 列名 from 表名; 通过指定列查询,相比于上面的select*查询是会精简不少的。...如果想要降序,那么手动指定desc(descend 降序)注意和上文desc(describe)表名区别。 MySQL中数据量是非常大的,因此有可能采用的是归并排序。...先把数据库中保存的数据,进行查询,查的时候,每次得到一行,就带入到条件中。 加入or就可以带上空值了。很多sql字句都是可以相互组合的。 这里是两个列进行比较。
引擎创建的表会生成 两个文件 注意: comment '内容' 表示注释,通常用来注明该字段的含义及用途 在 MySQL 中定义无符号类型的数据,需要把 unsigned 放在类型之后修饰 1.1.创建时指定属性...三个文件 2.查看表 身处某个数据库中,可以通过 show tables 查看当前数据库中有哪些表 mysql> show tables; 当前数据库中就只有之前创建的两张表 2.1.查看表结构 知道有哪些表后...,还需要进一步了解表的 结构 信息,比如有哪些字段,才能知道如何使用这张表,查看表的详细信息语法为 DESC tablename 分别查看刚才创建的两张表的 结构 信息 mysql> desc person...,包括注释 修改 name 的类型为 varchar(32),修改 age 的类型为 int,因为此时是空表,所以可以随便修改 mysql> alter table person modify name...删除 goods 表 mysql> drop table goods; 当然,删除成功后,Linux 中对应的文件也被删除了 写在最后:「修改字段、删除字段、修改字段名、修改表名、删除表」这些都是敏感操作
用例:创建一张学生表 -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student ( id INT, sn INT comment...VARCHAR(20) comment '姓名', qq_mail VARCHAR(20) comment 'QQ邮箱' ); 单行数据+全列插入 -- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致...指定列查询 -- 指定列的顺序不需要按定义表的顺序来 SELECT id, name, math FROM exam_result; ?...别名: 为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法: SELECT column [AS] alias_name [...]...[LIMIT ...] -- 删除表中某一数据 DELETE FROM 数据表名 WHERE 条件; -- 删除整表数据 DELETE FROM 数据库名; ?
正因为主键和unique都有先查询的过程,MySQL就会默认给primary key和unique 这样的列,自动添加索引,来提高查询速度。...注意: 实际开发中,大部分的表,一般都会带有一个主键,主键往往是一个整数表示的id 在mysql中,一个表里,只能有一个主键,不能有多个 虽然主键不能有多个,mysql允许把多个列放到一起共同作为一个主键...(联合主键) 主键另外一个非常常用的方法,就是使用mysql自带的“自增主键”作为主键的值。...mysql的数据量比较小,所有的数据都在一个mysql服务器上,自增主键是可以很好地工作的,如果mysql的数据量很大,一台主机放不下就需要进行分库分表,使用多个主机来进行存储。...针对这种关系: student(id,name); class(class,name,studentIds); 注意:这种在MySQL中不可行,因为MySQL中没有一个像数组这样的类型。
确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。...CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。...,语法: foreign key (字段名) references 主表(列) 用例: -- 创建班级表,有使用MySQL关键字作为字段时,需要使用``来标识 DROP TABLE IF EXISTS...联合查询 实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积: ?...如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。
ALTER TABLE 旧表名 RENAME 新表名; 此语句可以修改表的名称,其实一般我们在终端中使用,有可视化工具完全没必要用命令。...增加字段 ALTER TABLE stu ADD demo VARCHAR(10) NOT NULL ; -- ALTER TABLE 表名 ADD 要加的字段名 数据类型 [属性(可不写)] ; 删除字段...但是最好按规范来,pk+下划线+表名,如:PK_STU`。...表里面,外键表是result,不要搞反了。...外键名规范是FK_表1_表2。 小知识 我们发现,我们上面的语句常用ALTER TABLE这个关键字。 我们可以常识查看帮助文档。 如果英语不咋地,就老老实实搜浏览器吧。
大家好,又见面了,我是你们的朋友全栈君。...打开数据库: 步骤:新建查询(Ctrl+Q)→写SQL语句→运行→刷新→创建表成功 ①新建查询(Ctrl+Q) ②写SQL语句: 创建表的SQL语句一般格式: CREATE TABLE...( [列级完整性约束定义] {, [列级完整性约束定义] … } [,表级完整性约束定义] ) 下面来举个列子来说明一下就更清晰了,比如我需要创建一个...tinyint, Sdept char(20) ) 顺便把图也附上: ③运行,然后刷新 最后运行,再刷新一下,表就出来了。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
下面以一张学生表为例; 2.1 单行数据 + 全列插入 -- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致 INSERT INTO student VALUES (100...查询 首先创建一张表,并插入一些数据作为案例; -- 创建考试成绩表 DROP TABLE IF EXISTS exam_result; //如果之前创建过这个名字的表就删除掉 CREATE...SELECT * FROM exam_result; 3.2 指定列查询 -- 指定列的顺序不需要按定义表的顺序来 SELECT id, name, english FROM exam_result...UPDATE exam_result SET chinese = chinese * 2; 下面这个出错是因为在前面chinese DECIMAL(3,1) 我们在创建表的时候decimal 中的...drop关键字,删除的是整张表,而用delete关键字,删除的是表的内容,表的结构还在.
在上一小节中介绍了 MySQL 数据库的一些最最最基础的入门级也是必须要掌握的10条语句,本节将继续深入学习 MySQL 的增删改查语句。本节讲的增删改查是相对于表 而言的。...1、准备工作 想要对表进行增删改查,首先应该有张表,假设我们要统计大学同学工作之后的工作情况,建立了如下表格: 姓名 性别 公司 工资 准备工作: mysql> create...2.1 添加所有列的数据 下面向该表中添加几条数据: mysql> insert into class (id,name,gender,company,salary) -> values (1,...06.插入数据多条记录 3、delete 删除记录 要从表中删除数据,请使用MySQL delete语句。...12.查询指定行的指定列 至此数据库的增删改查的基本语法都已介绍了,当然增删改查还有高级的用法,以后有机会讲到。
每个字段由若干按照某种界限划分的相同数据类型的数据项组成,这里指的数据表中的列,一列就是一个字段 1.1增 1.1.1列表的创建: create table 表名(字段名 列约束 [可选的参数] ,...方式一 show tables;查看该数据库内所有的列表 方式二 show create table 表名;查看具体表结构的详细信息 mysql> show create table hello; +...;查看具体表结构的详细信息然后手动复制过来,在创建新表。...方式二 create table 新表名 like 被复制的表名;需要强调的是,这里的复制仅仅是复制表的结构,而不复制表的内容,新表示一个空表。...3.2.1删除表内具体的数据 delete from 表名 where 条件; 这里的条件可以是与或非和比较运算的组合。
write.下边分别介绍: 1. lock table 读锁定 如果一个线程获得在一个表上的read锁,那么该线程和所有其他线程只能从表中读数据,不能进行任何写操作。...0 rows affected (0.00 sec) mysql> 对user表加读锁定。...表,第6时刻将不会被阻塞,这是因为INNODB表是事务型的,对于事务表,例如InnoDB和BDB,–single-transaction是一个更好的选项,因为它不根本需要锁定表 2. lock table...写锁定 如果一个线程在一个表上得到一个 WRITE 锁,那么只有拥有这个锁的线程可以从表中读取和写表。...其它的线程被阻塞。 写锁定的命令:lock tables user write.user表为Myisam类型的表。
今天有一个朋友问我一个MySQL的建表问题,问题的现象是创建表失败,根据他的反馈,问题比较奇怪, CREATE TABLE XXX ..此处省略260多个字段 `xxxxIsAllowIn` varchar...*'/,/g' 所以省事了不少,我就来继续分析这个问题。一般来说这个错误看起来是单行的数据超出限制了,因为MySQL里面每行的数据有一个65535的限制,想必是这个原因吧。...共享表空间的格式为Antelope,在5.5中默认就是这个格式。 解决方式2; 这个问题我做了一些测试。对比了字符集,row_format的设置。...在创建表,更改表和创建索引时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮里。 当然这个里的这个问题现象确实比较纠结。...解决方法3: 从表结构设计入手,尽可能拆分这个表的逻辑,把它拆分为多个表。一个表的字段数尽可能不要太多。
前言 前面我们学习了MySQL数据库和数据表的创建、删除。接下来我们就需要将数据保存在数据表中。今天我们就来学习数据表的增删查改(CRUD)。...新增(Create) 一旦创建数据库和数据表,下一步就是向数据表中添加数据。MySQL 通过 insert 语句来添加一条或多条数据。...查询(Retrieve) MySQL 通过 select 语句来查询数据,查询结果通常会生成一个临时表。...遍历表 代入条件 计算列名中的表达式(定义别名) 排序/聚合等操作 示例: 语句1中:遍历表的时候没有总成绩这个列名直接报错。...where 条件则修改表中的所有记录. 4.
背景 将测试环境的表同步到另外一个数据库服务器中,但有些表里面数据巨大,(其实不同步该表的数据就行,当时没想太多),几千万的数据!! 步骤 1....那么问题来了,是不是死锁了呢?那怎么判断死锁呢? SHOW PROCESSLIST; ? 执行这个命令可以查看数据库当前的进程 3....查看当前的事物 #当前运行的所有事务 mysql> SELECT * FROM information_schema.INNODB_TRX; #当前出现的锁 mysql> SELECT * FROM...可以通过kill命令来干掉一些数据库的进程 ? kill 2; 这样既可,这样只是解决了卡死的问题,执行同样的命令还是会卡死的 ; 5. 那就想想为什么会卡死呢 ?...那么就比较下 drop,truncate,delete的区别吧 a. drop是整个表都没有了的,表结构也没没有了的,truncate和delete的表结构还在; b. delete可以指定where
null 和unique 的结合,确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。...foreign key:外键约束,保证一个表中的数据匹配另一个表中的值的参照完整性。...测试:插入 id 为空的记录是否能成功插入 insert into student values (null,'张三',18); 3. unique 唯一 创建表的时候,指定某类的值不能重复。..., foreign key (classId) references class(id)); 在这个语句中, 定义一个外键的实际作用是,在这条语句执行后,确保 MySQL 插入外键中的每一个非空值已经在被参照表中作为主键出现...这意味着,对于student 表中的每一个 classId ,都执行一次检查,看这个编号是否出现在 class 表的 id 列(主键)中。如果不存在,则出现出错信息。
本页目录 库语句 建库 修改库字符集 指定库排序规则 当前库状态的建表语句 删除库 Navicat编辑数据库时执行的SQL 表语句 建表 添加字段 修改表 修改字段 修改表字符集、排序规则 截断表 删除表...添加索引 一直都是用MySQL可视化工具,几乎没碰过建库、表等语句了。...库语句 建库 -- 数据库配置文件default-character-set是utf8_mb3,则会导致创建的表是utf8mb3。...我们无法人为控制,只能建库完毕后执行修改库字符集或者建库前修改MySQL配置 CREATE DATABASE IF NOT EXISTS `school` DEFAULT CHARACTER SET...`school` 删除库 -- 删除数据库 DROP DATABASE `school表名错误就无法删除了`; Navicat编辑数据库时执行的SQL -- 查看库的字符集,这是Navicat点击"编辑数据库
家人们,小编上期期讲解了关于增删查改的基础操作~~~,关于数据库表的增删查改有了一定的认知,小编这期就将深入讲解另一部分内容,即关于数据库增删查改的进阶操作之约束条件,大家准备好了吗~~~; 讲解内容:...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录 FOREIGN KEY: 保证一个表中的数据匹配另一个表中的值的参照完整性 看不懂???...SQL执行语句: create table 表名(列名 类型,列名 类型 default '默认的内容'); 我们在不添加约束条件,查看表的结构: mysql> create table student...和名字如上; 然后我们安排几个学生,那么此时学生的班级id就只能是上述班级其中之一,即这两个表位父子关系,那么此时我们就要使用foreign key约束条件,进行两个表的联系; 代码如下: mysql>...,插入和修改会被父类约束,但是其他的列,可以随意修改和插入; 3.在删除时,由于父类时子类表的参考,所以无法先删除父表,得先删除子类的表后,然后再次删除父类这个表。 ️
在一个业务功能中要求先清空一张基础表(user表)再插入一批新数据。 在删除过程中报错为其它表有外键引用,无法删除。 于是,查询库中哪些表引用了 user 表中的主键为外键。...从 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 表中查。...select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME='被引用表的表名' 如图 红色框中是当前连接中的数据库...,黄框中的是引用了 user 表为外键的其它表,蓝色框中的是黄框中表的外键字段。...要想删除 user 表中的数据,就要先删除后面 2 个框中的外键引用。
领取专属 10元无门槛券
手把手带您无忧上云