1、mysql限制显示条目数:Limit, offset

 图片网址:https://sqlbolt.com/lesson/filtering_sorting_query_results

实例:
SELECT * FROM movies order by id limit 1 offset 2 ;
SELECT * FROM movies order by id limit 2,1 ;
上面两个语句的效果一样,区别:
如果省略offset关键字,那么limit后面的2个参数中,第一个参数起到offset的作用,偏移,第二个参数限制查询显示的条目数。

2、字符串匹配时,最好使用Like。

like模糊匹配,不区分大小写,比较通用。

等于号(=),精准匹配,区分大小写。

区别:如果能保证需要匹配的字符串、大小写等格式完全无误,那么Like和 = 的效果一样,但如果不确定大小写之类的,使用like比较保险。

Like 模糊匹配,不区分大小写

= 精准匹配,区分大小写,如果能保证字符串匹配时完全无误,like 和 =都可以,但如果不确定大小写之类的,使用Like比较保险。

索引

优点:可以大大提高MySQL的检索、查询速度。

缺点:降低更新表的速度,如对表进行Insert、Update和Delete。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

索引类型:

单列索引:即一个索引只包含单个列,一个表可以有多个单列索引。

组合索引:即一个索引包含多个列。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

普通索引

创建索引的方式

1、create index indexName on mytable(username(length))

2、修改表结构:alter table tablename add Index indexName(columnName)

3、创建表时指定索引:

Create table mytable(

Id int not null,

Username varchar(16) not null,

Index [indexname] (username(length)) 注释:indexname用中括号,说明创建索引时可以命名,也可以不命名

);

唯一索引

创建方式:

1、Create Unique Index indexName on mytable(username(length))

2、修改表结构:alter table tablename Add Unique Index indexName(columnName)

3、创建表时指定索引:

Create table mytable(

Id int not null,

Username varchar(16) not null,

Unique Index [indexname] (username(length)) 注释:indexname用中括号,说明创建索引时可以命名,也可以不命名

);

说明:唯一索引与普通索引的创建方式相同,只是唯一索引需要在普通索引的基础上加上关键字Unique

b.如果想要为唯一索引命名,Constraint 索引名 Unique (添加索引的列)

alter table persons add constraint uc_personId unique (id, lastname)

这是为多列添加索引

删除索引

1、drop Index indexname on mytable;

2、Alter table tablename drop Index indexname;

显示数据表中相关索引信息:show Index from tablename;

使用Alter命令添加和删除主键

1、添加主键

需要确保添加主键的列不能为空。

Alter table tablename Add Primary key (field_name);

2、删除主键

Alter table tablename Drop Primary key;

使用Alter命令添加全文索引

Alter table tablename Add fulltext indexname(field_name);

该语句指定了索引为Fulltext,用于全文索引。

MySQL临时表

临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然你也可以手动销毁。

使用show tables命令不会显示临时表。

创建临时表

CREATE TEMPORARY TABLE SalesSummary (

product_name VARCHAR(50) NOT NULL,

total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00,

avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00,

total_units_sold INT UNSIGNED NOT NULL DEFAULT 0

);

删除临时表

默认情况下,当你断开与数据库的连接后,临时表就会自动被销毁。也可以在当前MySQL会话使用drop table命令来手动删除临时表。

Drop table salessummary;

Mysql复制表

MySQL序列

Auto_Increment自增

问题:如何获取最后插入表中的自增列的值

重置序列

如果删除数据表中的记录,需要重新排列。

方式:先删除自增的列,再重新添加auto_increment和主键primary key

mysql> ALTER TABLE insect DROP id;

mysql> ALTER TABLE insect

-> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, 这里的first是指添加到第一列吗

-> ADD PRIMARY KEY (id);

设置序列的开始值

一般情况下序列开始值为1, auto_increment=100

格式:

Alter table tablename Auto_increment=100;

Mysql重复数据

主键和索引

Insert ignore into

Replace into

过滤重复数据:distinct, group by

删除重复数据2种方式:

1、mysql> CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl GROUP BY (last_name, first_name, sex);

mysql> DROP TABLE person_tbl;

mysql> ALTER TABLE tmp RENAME TO person_tbl;

注意:这里不是创建临时表,前面没有temporary字段

2、当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:

mysql> ALTER IGNORE TABLE person_tbl

-> ADD PRIMARY KEY (last_name, first_name);

 Alter ignore table中的ignore是什么

菜鸟教程,SQL,不是MYSQL

http://www.runoob.com/sql/sql-foreignkey.html

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

Mysql中定义主键,必须在表中字段都定义完成后,另外说明主键

晚上:练习外键、主键、UNIQUE

这三者之间的关系 http://www.runoob.com/sql/sql-constraints.html

Default:

创建表时设置default,不需要加set关键字, default getdate()

修改表时设置default,需要添加set关键字

Set default ‘100’

删除default:alter table persons alter city drop default

Check:

对一列进行check约束:check(id>0)

对多列进行check约束:check(id>0 and city=’beijing’)

主键、外键、unique、check、default中可以使用constraint关键字,但在mysql中删除时,不会使用drop constraint这样的语句

UNIQUE - 保证某列的每行必须有唯一的值。

PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

总结:UNIQUE可以为空,而PRIMARY key不可以为空。

删除主键:drop primary key,后面不加任何东西

删除外键:如果外键有命名,则drop primary key 外键名

创建、更新和删除视图 view

优化/存储过程/授权grant

外键:

只要看到一个外键,就总是能看到与之相关的参照完整性约束。

外键的值必须在主键表中存在对应项,这个规则称为完整性约束。

添加权限

MySQL补充的更多相关文章

  1. python进阶10 MySQL补充 编码、别名、视图、数据库修改

    python进阶10 MySQL补充    编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...

  2. mysql补充(1)校对集utf8_unicode_ci与utf8_general_ci

    创建数据库并设置编码utf-8 多语言(补充1 2) create database mydb default character set utf8 collate utf8_general_ci; ...

  3. 48、mysql补充

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  4. 12、mysql补充

    本篇导航: 视图 触发器 事务 存储过程 函数 流程控制 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可 ...

  5. mysql补充(2)常用sql语句

    补充:MySQL数据库 详解 常用的Mysql数据库操作语句大全 1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后 ...

  6. mysql补充(4)数据完整性

    数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability).(补充mysql数据完整性和约束) 它是应防止数据库中存在不符合语义规定的数据和防止 ...

  7. python操作MySQL与MySQL补充

    目录 python操作MySQL 基本使用 SQL注入问题 二次确认 视图 触发器 事务 存储过程 函数 流程控制 索引 练习 python操作MySQL python中支持操作MySQL的模块很多, ...

  8. Mysql补充部分:SQL逻辑查询语句执行顺序

    一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...

  9. <数据库>MySQL补充( 查询)

    show create table 表名 \G;(查看创建的属性) alter table 表名 auto_increment=xx;(修改自增起始值) set session auto_increm ...

随机推荐

  1. 解决Win10 Git图标不显示问题

    升级系统到win10 1803版本以后发现TortoiseGit的忽略图标不显示了 开始以为是版本问题,将TortoiseGit版本进行了升级还是不行 网上查找以后发现 Windows Explore ...

  2. p1654 OSU!

    期望DP 设\(g[i]\)表示前i个的连续1的期望长度,\(h[i]\)表示前i个连续1的长度的平方的期望,\(f[i]\)表示前i个的期望得分 由期望的线性性质,我们可以考虑统计新增一个对答案的贡 ...

  3. Python实现机器学习算法:AdaBoost算法

    Python程序 ''' 数据集:Mnist 训练集数量:60000(实际使用:10000) 测试集数量:10000(实际使用:1000) 层数:40 ------------------------ ...

  4. 【C#】异步的用法

    1. C#5.0 加入了async, await关键字. async是在声明异步方法时使用的修饰符, 声明放在返回值之前即可,await表达式则负责消费异步操作, 不能出现在catch或finally ...

  5. oogle advertiser api开发概述——速率限制

    速率限制 为了向遍布全球的 AdWords API 用户提供可靠的服务,我们使用令牌桶算法来衡量请求数并确定每秒查询数 (QPS) 速率.这样做的目的是阻止恶意的或不可控的软件大量入侵 AdWords ...

  6. Dispose in c#

    在标准的Dispose模式中,真正的IDisposable接口的Dispose方法并没有做实际的清理工作,它其实是调用了下面的这个带bool参数且受保护的的虚方法: protected virtual ...

  7. Java基础 --Unix与Mac系统 文件路径分隔符(一)

    斜杠‘/’与反斜杠‘\’在不同系统的使用 1)Window平台使用反斜杠'\'作为文件层级分隔符:Windows使用反斜杠作为DOS命令提示符的参数标志,随着发展DOS命令符逐渐被淘汰,大部分情况下斜 ...

  8. H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例

    H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例 (转载:https://blog.csdn.net/weixin_38787928/article/details/86741227 ...

  9. vue--vuex

    https://vuex.vuejs.org/ vuex是专为 vue.js 应用程序开发的 状态管理模式 采用集中式存储管理应用的所有组件状态 并以相应的规则保证状态以一种可预测的方式发生变化 vu ...

  10. BZOJ 3878 【AHOI2014】 奇怪的计算器

    题目链接:奇怪的计算器 如果没有溢出的话,所有的标记都可以在线段树上直接维护,所以一棵线段树就解决问题了. 现在有了溢出,怎么办呢? 发现就算溢出了,各个元素的相对大小关系也是不变的.所以,如果一开始 ...