mysql添加字段

mysql中group by分组

萝らか妹 提交于 2019-11-26 16:41:15
为了测试group by语句,我们首先创建一个表: 然后向表内添加数据: 然后我们查看一下表的内容 接着我们分别按照性别和年龄对这个表进行分组; 我们可以看到表内的数据没有原表的多了,原因就是分组有去重的功能,他会把一个字段内相同的内容给合并成一个 group by 操作: group by 字段名; 将查询结果按照1个或多个字段进行分组,字段值相同的为一组 group by 可用于单个字段分组 ,也可用于多个字段分组 select gender,group_concat(name) from student group by gender; group_concat(字段名) 可以作为一个输出字段来使用,表示分组之后,根据分组结果,使用group_concat()来防止每一组的某字段的值得集合 select gender,count(*) from students group by gender having count(*) > 2; group by 可以加where条件,where条件必须加以group by 前面 having 条件表达式:用来分组查询后指定一些条件来输出查询结果 having作用和where一样,但having只能用于group by 来源: https://www.cnblogs.com/dashenisme/p/bulabula.html

MYSQL数据库约束类型

拜拜、爱过 提交于 2019-11-26 16:31:34
07.14自我总结 MYSQL数据库约束类型 一.主键约束(primary key) 主键约束要求主键列的数据唯一,并且不能为空。主键分为两种类型:单字段主键和多字段联合主键。 1.单字段主键 写法 创建列表数据时 create table a( ​ name char(9) primary key, ​ age int ); 创建列表数据结束后完毕后 create table a( ​ name char(9) , ​ age int, ​ primary key(name) ) 创建表格完后 alter table test add primary key (name); 2.多字段联合主键 主键由多个字段联合组成。语法规则:Primary Key[字段1,字段2,....,字段n] 2.自动增长 只能与primary key 联用 语法:字段 数据类型 primary key auto_increment n #n为起始位置,可以不填不填默认从1开始 二.外键约束(foreign key) 外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。一个表的外键可以为空,若不为空,则每一个外键值必须等于另一个表中主键的某个值。 外键的作用:保证数据应用的完整性。 ​ 主表(父表):对于两个具有关联关系的表而言,相关联字段中的主键所在的那个表即是主表

MySQL的约束

廉价感情. 提交于 2019-11-26 16:30:37
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性,如果有相互依赖数据,保证该数据不被删除,因此约束也叫完整性约束。 什么是完整性?完整性是指数据库中存放的数据是有意义的、正确的。 什么是约束?为了保证数据的正确性和相容性,对关系模型提出来的某些约束条件或者规则。 1.默认值(default) :当用户向表中插入数据时,指定了该字段的那么就插入该值,否则就插入默认值。 mysql> create table test(id int(6) primary key auto_increment,name varchar(10) not null default '未知',addr varchar(24) not null default '未知'); Query OK, 0 rows affected (0.07 sec) mysql> desc test; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+----

MySQL约束

≡放荡痞女 提交于 2019-11-26 16:30:16
主键约束(PRIMARY KEY)   主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则: 每个表只能定义一个主键。 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。 一个列名只能在复合主键列表中出现一次。 复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。 语法格式: 创建表时:  单一主键 <字段名> <数据类型> PRIMARY KEY 复合主键 PRIMARY KEY [字段1,字段2,…,字段n] 外键约束(FOREIGN KEY) 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表。  定义一个外键时,需要遵守下列规则: 父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。 必须为父表定义主键。 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

详解 MySQL 中的 explain

你说的曾经没有我的故事 提交于 2019-11-26 14:14:18
知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。 explain 返回了一行记录,它包括了 select语句中用到的各个表的信息。这些表在结果中按照mysql即将执行的查询中读取的顺序列出来。mysql用一次扫描多次连接(single- sweep,multi-join)的方法来解决连接。这意味着mysql从第一个表中读取一条记录,然后在第二个表中查找到对应的记录,然后在第三个表 中查找,依次类推。当所有的表都扫描完了,它输出选择的字段并且回溯所有的表,直到找不到为止,因为有的表中可能有多条匹配的记录下一条记录将从该表读 取,再从下一个表开始继续处理。 在mysql version 4.1中,explain输出的结果格式改变了,使得它更适合例如 union语句、子查询以及派生表的结构。更令人注意的是,它新增了2个字段: id和 select_type。当你使用早于mysql4.1的版本就看不到这些字段了。 explain结果的每行记录显示了每个表的相关信息,每行记录都包含以下几个字段: id 本次 select 的标识符。在查询中每个 select都有一个顺序的数值。 select_type select

MYSQL 之EXPLAIN 语法

梦想与她 提交于 2019-11-26 14:13:27
EXPLAINtbl_name 或者: EXPLAIN SELECTselect_options EXPLAIN 语句可以被当作 DESCRIBE 的同义词来用,也可以用来获取一个MySQL要执行的 SELECT 语句的相关信息。 EXPLAIN tbl_name 语法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name一样。 当在一个 SELECT 语句前使用关键字 EXPLAIN 时,MYSQL会解释了即将如何运行该 SELECT 语句,它显示了表如何连接、连接的顺序等信息。 本章节主要讲述了第二种 EXPLAIN 用法。 在 EXPLAIN 的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让 SELECT 运行更快。 如果由于不恰当使用索引而引起一些问题的话,可以运行 ANALYZE TABLE 来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。详情请看"ANALYZE TABLE Syntax" 。 您还可以查看优化程序是否以最佳的顺序来连接数据表。为了让优化程序按照 SELECT语句中的表名的顺序做连接,可以在查询的开始使用 SELECT STRAIGHT_JOIN 而不只是SELECT。 EXPLAIN 返回了一行记录,它包括了 SELECT 语句中用到的各个表的信息

MySQL数据库(一)

拟墨画扇 提交于 2019-11-26 13:46:12
如何删除安装好的数据库? 删除程序。进入控制面板->在程序和功能选项卡中找到 MySQL,右键卸载。 删除安装文件夹下的所有内容。找到 MySQL 的安装路径,然后删除路径下所有文件 删除注册表。Windows+R 打开运行命令框,输入 regedit 回车,删除以下 3 个地方的 注册文件: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录 删除 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录 删除 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录删除 最重要的一点:进入 C 盘,选中查看->勾选“隐藏的项目”,然后下面就出来隐藏目 录(ProgramData)了,进入其中,删除 MySQL 文件夹。这样才算是完整卸载干净了,最后就可以重新安装 Mysql 了 SQL(Structured Query Language):结构化查询语言   DDL(数据定义语言):定义和管理数据对象,如数据库、数据表等:CREATE、DROP、ALTER   DML

mysql常用基本命令

倾然丶 夕夏残阳落幕 提交于 2019-11-26 11:21:37
测试数据库test 测试数据库表user: 字段名 数据类型 是否主键 是否为空 描述 id int 是 no id nickname char(20) no 昵称 查看当前版本: select version(); 1. 数据库相关 创建数据库 CREATE DATABASE test; 使用数据库 USE test; 删除数据库 DROP DATABASE test; 2.表结构相关 创建表 CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL); 删除表 DROP TABLE user ; 查看表结构 DESC user; 查看所有表 SHOW TABLES; 修改表 修改表名 //ALTER TABLE 当前表名 RENAME TO 期望表名; ALTER TABLE user RENAME TO users; 添加表字段 //ALTER TABLE 表名 ADD 字段名 字段描述; ALTER TABLE user ADD age INT; 删除表字段 //ALTER TABLE 表名 DROP 字段名; ALTER TABLE user DROP age; 修改表字段 //修改表字段 ALTER TABLE user MODIFY id INT; //替换表字段

python、第三篇:表相关操作

落花浮王杯 提交于 2019-11-26 10:09:59
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见: https://www.cnblogs.com/Forever-x/p/11317479.html 二 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行内容称为一条记录 三 创建表 #语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); #注意: 1. 在同一张表中,字段名是不能相同 2. 宽度和约束条件可选 3. 字段名和类型是必须的 MariaDB [(none)]> create database db1 charset utf8; MariaDB [(none)]> use db1; MariaDB [db1]> create table t1( -> id int, -> name varchar(50), -> sex enum('male','female'), -> age int(3) -> ); MariaDB [db1]> show tables; #查看db1库下所有表名 MariaDB [db1]> desc t1; +-------+-----

Mysql学习笔记(2)--DDL语句

微笑、不失礼 提交于 2019-11-26 04:08:13
mysql学习笔记(1) https://blog.csdn.net/Fhujinwu/article/details/81517046 1、SQL语句主要划分为三个类别: ①DDL语句:数据定义语言,这些语句定义了不同的数据段、数据库、表‘、列、索引等数据库对象,常用的语句关键字主要包括create、drop、alter等; ②DML语句:用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括insert、delete、select等; ③DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要语句关键字包括grant、revoke等; 2、在mysql>提示符后面输入所要执行的SQL语句,每个SQL语句以分号(;)或者“\g”结束,按回车键执行; 3、创建一个新的数据库test1: create database test1; 显示系统中已经存在的所有数据库:show databases; 查看已存在数据库中的所有数据表: use test (回车) show tables;(回车) 删除已存在的数据库:drop databses test; 4、在数据库中创建一张表的步骤:首先选定数据库 use databasename,回车,之后输入信息,格式如下所示: CREATE