2022年8月9日

MySQL: 索引

索引分类 (1)普通索引(Key Indexes) (2)唯一索引(Unique Indexes) (3)主键索引(Primary Key Indexes) (4)组合索引(Composite Index) (5)前缀索引( Prefix Indexes) (6)全文索引(Full-Text Indexes) (7)哈希索引(Hash Indexes) (8)空间索引(Spatial Indexes) 普通索引 普通索引是最基本的索引,没什么限制,根据创建时机不同,主要有两种方式: (1)在创建表时同时创建普通索引 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name( col_name column_definition, INDEX|KEY [index_name] [index_type] (col_name […
2022年8月9日

MySQL: 约束命名的作用

给约束取名字,   目的是将来你可以比较容易的删除掉. 否则你要自己去查询数据字典表.   例如下面的例子. 唯一约束的名字,  是  t_123,  那么当我不需要这个约束的时候 如果我知道名字, 那么可以直接去删除掉.   -- 创建测试表. CREATE TABLE test_123 (   id   INT,   value  VARCHAR(10) ); GO -- 创建 UNIQUE 约束. ALTER TABLE test_123   ADD CONSTRAINT t_123 UNIQUE (value); GO -- 删除  UNIQUE 约束. ALTER TABLE [test_123]      DROP CONSTRAINT [t_123]; GO   如果我不知道约束的名字, 那么我需要去查询数据…
2022年8月3日

MySQL: 实时查看日志

1. /etc/mysql/mysql.conf.d$ vim mysqld.cnf # # * Logging and Replication # # Both location gets rotated by the cronjob. # # Log all queries # Be aware that this log type is a performance killer. general_log_file = /var/log/mysql/query.log general_log = 1 2. $ tail -f /var/log/mysql/query.log…
2022年7月3日

MySQL: WITH ROLLUP + HAVING的结果分析

MySQL> select * from stu; +----+--------+-----+--------+--------+---------+-------+--------+ | id | name | age | height | weight | gender | class | del | +----+--------+-----+--------+--------+---------+-------+--------+ | 1 | Tom | 23 | 175.00 | 63.00 | male | cls1 | 0 | | 2 | Bonnie | 26 | 167.00 | 49.00 | female | cls2 | 0 | | 3 | Edith | 27 | 165.00 | 51.00 | female | cls3 | 0 | | 4 | Bert | 52 | | 52.00 | unknown | cls1 | | | 5 | Ken | 27 | | 55.…
2022年7月3日

MySQL: Failed to add the foreign key constraint. Missing index for constraint 'xxx_ibfk_1' in the referenced table 'xxx'

原因: 关联表的关联属性没有建立索引值。 创建外键约束的要求有以下几点: -- 1、父表和子表必须使用相同的存储引擎,而且禁止使用临时表 --具有外键列的表称为子表;子表所参照的表称为父表 -- 2、数据表的默认引擎只能为InnoDB -- 3、外键列和参照列必须具有类似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度可以不同 -- 加FOREGIN KEY 关键字的列称为外键列 外键列所参照的列称为参照列 -- 4、外键列和参照列必须建立索引。如果外键列不存在索引的话,MYSQL将自动创建索引。如果参照列不存在索引的话,MySQL不会自动创建索引 -- MySQL会为主键自动创建索引…
2022年7月2日

MySQL: 注释

MySQL注释符有三种: 1、#注释内容,表示单行注释 2、"-- 注释内容" (注意--后面有一个空格) 3、/*注释内容*/ 另外,需要注意以下几点: /* .... */ 在大部分编程语言中都是注释,这个注释之中的语句是不被执行的。但是,在MySQL中为了保持兼容,比如从mysqldump导出的SQL语句能被其它数据库直接使用,它把一些特有的仅在MySQL上的语句放在 /*! ... */ 中,这样这些语句如果在其它数据库中是不会被执行,但在MySQL中它会执行。在这里,*和!之间不能有空格。 语句例如“/*!50701 select * from test */;”,这里的50701表示假设数据库服务器是5.7.01以上版本,该语句才会被执行。 示例如下所示: MySQL [(none)]> /*!select count(*) from mysql…
2022年7月2日

MySQL: 练习 SQL语句

########################################################################## Show databases; create database `students` charset='utf8'; use `students`; select database(); show create database `students`; ########################################################################## show tables; create table `student`( id int unsigned primary key auto_increment not null, name varchar(20) not null…
2022年7月2日

MySQL: mycli 命令自动补全 语法高亮 auto-completion and syntax highlighting

Quick Start If you already know how to install python packages, then you can simply do: $ pip install mycli If you're on macOS you can install it via homebrew. $ brew update && brew install mycli If you're having trouble with the quick start, check the install page for detailed instructions. Usage $ mycli --help Usage: mycli [OPTIONS] [DATABASE] Examples: - mycli my_database - mycli -u my_user -h my_host.com my_databas…
2022年7月1日

MySQL: 数据库中视图和表的区别

数据库中视图和表的区别 视图是已经编译好的sql语句,而表不是; 视图没有实际的物理记录,而表有; 表是内容,视图是窗口; 表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能用创建的语句来修改; 表是三级模式结构中的概念模式,视图是外模式; 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合,从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构; 表属于全局模式中的表,是实表,视图属于局部模式的表,是虚表; 视图的建立和删除只影响视图本身,不影响对应的基本表; 不能对视图进行update或者insert into操作。   数据库中视图和表的联系 1、视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自…
2022年7月1日

MySQL: 常用SQL语句

目录: 1.数据库的相关操作 1.1 连接数据库 1.2 创建数据库 1.3 查看数据库有哪些 1.4 查看指定的数据库 1.5 删除指定的数据库 1.6 使用数据库(很重要) 1.7 用户的创建和删除 1.8 授权 1.9 收权 1.10 视图的创建与删除 1.11 断开服务器的连接 2.表的相关操作 2.1 创建表 2.2 查看表的结构 2.3 查看表的详细信息 2.4 查看某个数据库中有哪些表 2.5 删除指定的表 2.6 字段名的数据类型 2.7 添加主键约束 2.8 添加外键约束 2.9 添加常用约束 3.数据库和表的基本操作 3.1 修改表名 3.2 修改字段名和字段的数据类型 3.3 添加和删除字段 3.4 修改字段的排列位置 3.5 删除表的外键约束 3.6 插入数据(INSERT INTO , VALUES) 3.7 查看数据是否成功插入表中 3.8 更新数据(UPDATE , SET) 3.9 删除数据(DELETE , T…
ajax-loader