mysql操作

mysql中delete、truncate、drop的区别

1.delete和truncate仅删除表数据,drop会将表数据和表结构都删除了;打个比方:delete是单杀,truncate是团灭,drop是将电脑摔了;
2.delete是dml语句,操作完以后如果不想要了,可以回滚,不提交事务;truncate和drop是ddl语句,操作完立刻生效,不可以回滚;
3.执行速度:drop>truncate>delete;

mysql中coalesce()的使用;

select coalesce(userName,"总结") as userName,count(1) from user group by userName with rollup;

image.png

mysql 正则表达式

image.png

查找name字段中以“st”为开头的所有数据;
select name from person_tbl where name regexp '^st';

查找name字段中以“ok”为结尾的所有数据;
select name from person_tbl where name regexp 'ok$';

查找name字段中包含“mar”字符串的所有数据;
select name from person_tbl where name regexp 'mar';

查找name字段中以元音字符开头或以“ok”结尾的所有数据;
select name from person_tbl where name regexp '^[aeiou]|ok$';

mysql alter命令

删除字段:
alter table testalter_tbl drop i;

添加字段:
alter table testalter_tbl add i int;

如果需要指定新增字段的位置,可以使用mysql提供的关键字FIRST(设定为第一列),AFTER(设定为某个字段之后);
first和after关键字可用于add和modify子句,所以如果想重置数据表字段的位置就需要先使用drop删除字段然后使用add来添加字段并设置位置;

alter table testalter_tbl drop i;
alter table testalter_tbl add i int first;
alter table testalter_tbl drop i;
alter table testalter_tbl add i int after c;

如果需要修改字段类型及名称,你可以在alter命令中使用modify或change子句;
将字段c的类型从char(1)修改为char(10),可以执行下面命令:
alter table testalter_tbl modify c char(10);

使用change修改字段的名称和类型;
alter table testalter_tbl change c i char(10);

设置字段的默认值:
alter table testalter_tbl modify i int not null default 100;

alter table testalter_tbl alter i set default 1000;

删除字段默认值:
alter table testalter_tbl alter i drop default;

修改表名:
alter table testalter_tbl rename to alter_tbl;

修改存储引擎:
alter table testalter_tbl engine = innodb;

删除外键约束:keyname是外键名称;
alter table testalter_tbl drop foreign key keyname;

mysql 索引

mysql索引的建立对于mysql的高效运行时很重要的,索引可以大大提高mysql的检索速度;
打个比方说,如果合理的设计且使用索引的mysql是一辆兰博基尼,那么没有设计和使用索引的mysql就是一辆人力三轮车;
索引分为单列索引和组合索引。单列索引,即一份索引包含单个列,一个表可以有多个单列索引,但这不是组合索引,即一个索引包含多个列;
创建索引使,你需要确保该索引是应用在sql查询语句的条件(一般作为where子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但是过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行insert、update和delete。因为更新表时,mysql不仅要保存数据,还要保存一下索引文件;
建立索引会占用磁盘空间的索引文件;

修改表结构(添加索引)
alter table tablename add index indexName(columnName);

创建表的时候直接指定
create table mytable(
id int not null,
username varchar(16) not null,
index [indexName] (username(length)),
unique indexName
)

删除索引的语法
drop index [indexName] on mytable;

唯一索引
create unique index indexName on mytable(username(length))

修改表结构
alter table mytable add unique [indexName] (username(length))

使用alter命令添加索引
alter table tbl_name add primary key(column_list);该语句添加一个主键,这意味着索引值必须是唯一的,且不能为null;
alter table tbl_name add unique index_name(column_list);这条语句创建索引的值必须是唯一的(除了null外,null可能会出现多次);
alter table tbl_name add index index_name(column_list);添加普通索引,索引值可出现多次;
alter table tbl_name add fulltext index_name(column_list);该语句指定了索引为fulltext,用于全文索引;

mysql 临时表

mysql临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间;临时表在mysql3.23版本中添加,如果你的mysql版本低于3.23版本就无法使用mysql的临时表。不过现在一般很少有在使用这么低版本的mysql数据库服务了。
mysql临时表只在当前连接可见,如果你使用php脚本来创建mysql临时表,那每当php脚本执行完成后,该临时表也会自动销毁。
如果你使用了其他mysql客户端程序连接mysql数据库服务器来创建临时表,那么只有在关闭客户端时才会销毁临时表,当然你也可以手动销毁;

mysql 复制表

方式一:
使用 show create table user 命令获取创建数据表(create table)语句,该语句包含了原数据表的结构,索引等;
复制以下命令显示的sql语句,修改数据表名,并执行sql语句,通过以上命令将完全的复制数据表结构;
如果你想复制表的内容,你就可以使用 insert into ... select 语句实现;

方式二:
create table targetTable like sourceTable;
insert into targetTable select * from sourceTable;

方式三:
可以拷贝一个表中其中的一些字段:
create table newadmin as
(
select username,password from admin
)
可以将新建的表的字段改名:
create table newadmin as
(
select username,password as pass from admin
)
可以拷贝一部分数据:(只复制username首字母为s的记录)
create table newadmin as
(
select * from admin where left(username,1)='s'
)
可以在创建表的同时定义表中的字段信息:
create table newadmin
( id integer not null auto_increment primary key)
as
(
select * from admin
)

只复制表结构到新表:
create table newTable select * from oldTable where 1=2;
create table newTable like oldTable;

复制表结构及数据到新表:
create table newTable select * from oldTable;

mysql元数据

获取服务器元数据

msyql序列使用

mysql序列是一组整数:1,2,3,...,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段也实现自动增加,就可以使用mysql序列来实现;

1.使用 auto_increment mysql中最简单使用序列的方法就是使用 mysql auto_increment 来定义列;
2.可以使用last_insert_id()函数来获取最后插入表中的自增列的值;

重置序列
alter table t auto_increment =100;

mysql 导出数据

load data infile是select ... into outfile的逆操作,select语法。为了将一个数据库的数据写入一个文件,使用select ... into outfile,为了将文件读回数据库,使用load data infile;
select ... into outfile 'file_name' 形式的select 可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有file权限,才能使用此语法;
输出不能是一个已存在的文件,防止文件数据被篡改;
你需要有一个登陆服务器的账号来检索文件。否则select ... into outfile 不会起任何的作用;
在unix中,该文件被创建后是可读的,权限由mysql服务器所拥有。这意味着,虽然你就可以读取该文件,但可能无法将其删除;

使用select... into outfile 语句导出数据;
select * from runoob into outfile '/tmp/runoob.txt';

导出表作为原始数据

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个sql脚本,其中包含从头重新创建数据库所必须的命令 create table insert等;

将数据表runoob_tbl 导出到/tmp目录中:
mysqldump -u root -p --no-create-info \ --tab=/tmp runoob runoob_tbl

导出sql格式的数据

mysqldump -u root -p runoob runoob_tbl > dum.txt

导出整个数据库的数据,可以使用一下命令:
mysqldump -u root -p runoob > database_dump.txt

备份所有数据库,可以使用以下命令:
mysqldump -u roo -p -- all-databases >database_dump.txt

--all-databases选项在mysql 3.23.12 及以后版本加入。

将数据表及数据库拷贝至其他主机

如果你需要将数据拷贝至其他的mysql服务器上,你可以在mysql命令中指定数据库名及数据表。
在源主机上执行以下命令,将数据备份至dump.txt文件中:
mysqldump -u root -p database_name table_name >dump.txt

如果你需要将备份的数据库导入到mysql服务器中,可以使用以下命令,使用一下命令你需要确认数据库已经创建;
mysql -u root -p database_name < dump.txt

你也可以使用以下命令将导出的数据直接导入到远程的服务器上,但请确保两台服务是相通的,是可以相互访问的:
mysqldump -u root -p database_name \ | mysql -h other-host.com database_name;
以上命令中使用了管道来将导出的数据导入到指定的远程主机上;

如果需要将远程服务器的数据拷贝到本地,也可以在mysqldump命令中指定远程服务器的ip、端口及数据库名。在源主机上执行以下命令,将数据备份到dump.txt文件中;
mysqldump -h other-host.com -P port -u root -p database_name > dump.txt

mysql函数

mysql字符串函数


字符串函数

mysql 数字函数


数字函数

mysql日期函数


日期函数

mysql 高级函数


高级函数
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,777评论 5 116
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,030评论 0 19
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,415评论 1 8
  • 1、MySQL启动和关闭(安装及配置请参照百度经验,这里不再记录。MySQL默认端口号:3306;默认数据类型格式...
    强壮de西兰花阅读 634评论 0 1
  • 基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下...
    海渊_haiyuan阅读 1,517评论 0 9