zoukankan      html  css  js  c++  java
  • MySQL补充

    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

    外键:
    只要看到一个外键,就总是能看到与之相关的参照完整性约束。
    外键的值必须在主键表中存在对应项,这个规则称为完整性约束。

    添加权限

  • 相关阅读:
    大数据的道理你都懂,但是这道应用题你敢不敢做?
    ffmpeg+SDL2实现的音频播放器V2.0(无杂音)
    ffmpeg+SDL2实现的音频播放器V2.0(无杂音)
    ffmpeg+SDL2实现的音频播放器V2.0(无杂音)
    ffmpeg+SDL2实现的音频播放器V2.0(无杂音)
    基础知识:计算机网络资料速查
    基础知识:计算机网络资料速查
    基础知识:计算机网络资料速查
    全球30%服务器被闲置 等于浪费300亿美金
    详观商业巨头如何走出经济“寒冬”,迎来初春
  • 原文地址:https://www.cnblogs.com/bravesunforever/p/10195684.html
Copyright © 2011-2022 走看看