mysql数据库基础知识总结

mysql数据库基础知识总结mysql数据库基础知识总结一、基础常用命令1.创建命令createuser‘用户名’@‘ip’identifiedby‘密码’;创建用户dropuser用户名@ip删除用户showdatabases;查数据库showtables;看表createdatabase数据库名defaultcharsetutf8;创建数据库createtable表名(列名数据类型约束···,列名数据类型约束···)engine=in

大家好,又见面了,我是你们的朋友全栈君。

mysql数据库基础知识总结

一、基础常用命令
1.创建命令

create user ‘用户名’ @‘ip’ identified by ‘密码’; 创建用户
drop user 用户名@ip 删除用户
show databases; 查数据库
show tables; 看表
create database 数据库名 default charset utf8; 创建数据库
create table 表名(列名 数据类型 约束···,列名 数据类型 约束···)engine=innodb default charset=utf8 创建表
其中数据类型种类 数字(int,tinyint,smallint,float,double),字符串(char(个数)varchar(个数))时间(DATE,TIME,DATETIME),枚举enum(值只能是枚举中的元素),集合set(值只能是结合元素的组合)

2.查表命令
条件查询

select * from 表名;
select 列名···from 表名;
select 列名 from 表名 where 列名(id等) >/</!= value;
select 列名,常量 from 表名; 增加一个常量列
select 列名 from 表名 where 列名 in/not in/between and value;
select 列名 from 表名 where 条件1 and 条件2;
特殊的:select 列名 from 表名 where 列名 in (select 列名(只能一列) from 表名);
select 列名 from 表名 where 列名 like ‘xx%’/’%xx’/“xx_”; 查询以xx开头/xx结尾 ,%代表任意位,_代表一位
select xx,(select xx from …) from … 查询条件做常量值

分页

select 列名 from 表名 limit num; 显示num个
select 列名 from 表名 limit num1,num2;从num1后取num2行数据,num1是起始位置,num2是个数
select 列名 from 表名 limit num1 offset num2;从num2后取num1行数据,num2是起始位置,num1是个数

排序

select * from 表名 order by 列名 asc;升序
select * from 表名 order by 列名 desc;降序
select * from 表名 order by 列名1 desc 列名2 asc; 首先遵循列1降序,遇到相同数据时,升序
select count/sum/max/min/avg(列名1),列名2 from 表名 group by 列名(通常是列名2);

分组

select count/sum/max/min/avg(列名1),列名2 from 表名 group by 列名(通常是列名2)having 条件;分组操作后筛选

连表

select * from 表1 left join 表2 on 表1.列名=表2.列名; 左连接
select * from 表1 right join 表2 on 表1.列名=表2.列名; 右连接
select * from 表1 inner join 表2 on 表1.列名=表2.列名; 内连接
注意:如果超过3个表联合操作,如果其中两个表操作时已经改变了表结构,应该将这两个表操作的结果作为一个临时表再与第三个表联合操作。

3.删除,修改,插入命令
插入

insert into 表名(列名1,列名2···) values(值1,值2···),(值1,值2···),(值1,值2···); 插入值
insert into 表名1(列名) select 列名 from 表2; 在表1中插入表2中数据

修改

update 表名 set 列名1=value1,列名2=value2 where 条件1 [and/or 条件2];

删除

delete from 表名; 清除表(如果有自增id,id 不会重新开始)
delete from 表名 where 条件; 清除特定数据
truncate table 表名;清除表(如果有自增id,id 会重新开始)

4.修改表结构

alter table 表名 auto_increment=value;设置自增键起始值;
alter table 表名 drop 列名;删除列
alter table 表名 add 列名 数据类型 约束; 增加列
alter table 表名 change 旧列名 新列名 数据类型; 修改字段类型
alter table 表名 modify 列名 数据类型; 修改数据类型
alter table 旧表名 rename 新表名; 修改表名
alter table 表名 drop primary key; 删除表中主键
alter table 表名 add 列名 数据类型 primary key;添加主键
alter table 表名 add primary key(列名);设置主键
alter table 表名 add column 列名 数据类型 after 列名;在某一列后添加主键

二.mysql进阶
1.外键

外键适用于一对多,一对一,多对多三种情况

一对多

典型案例员工与部门,一个部门对应于多个员工,一个员工对应于一个部分,所以要在员工表中设置部门id列,并设置为外键,与部门表id关联。

一对一

案例博客园用户与博客,不是每个用户都写博客,写博客的用户与拥有的博客地址一一对应,所以在博客用户表user中设置blog_id,设置成外键和唯一索引,与博客表blog中id关联

create table user(id int not null auto_increment primary key,name char(10), blog_id int,unique uq1(blog_id),constraint fk_user_blog foreign key(blog_id) references blog(id))engine=innodb default charset=utf8;

多对多

典型案例电脑与用户,一个用户可以使用多台电脑,一台电脑对应多个用户,多对多,此时一般选择新建一个表contact,在其中设置两个外键,同时关联用户表id与电脑表id

create table contact(id int not null auto_increment primary key,user_id int,computer_id int,unique uq2(user_id,computer_id),constraint fk_user foreign key(user_id) references user(id),constraint fk_user foreign key(computer_id) references computer(id))engine=innodb default charset=utf8;

可以看情况决定要不要把两个外键弄成联合唯一索引。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153373.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • littlevgl移植_嵌入式ubuntu系统

    littlevgl移植_嵌入式ubuntu系统总述Littlevgl相比较于安卓、QT,占用资源少、使用简单,所以在linux系统下使用Littlevgl优势也比较明显。移植准备工作源码:lvgl:https://github.com/littlevgl/lvgl驱动:lv_drivers:https://github.com/littlevgl/lv_drivers例子:lv_examples:https://github.com/littlevgl/lv_examples下载慢可以将上面链接先导入到码云上再下载。配置工作源码

    2022年9月2日
  • kali笔记(八)burpsuite抓包、截包、改包

    kali笔记(八)burpsuite抓包、截包、改包抓包如上篇所说将burpsuite和浏览器都设置好后截包打开截取即interceptison按Forward向前寻找,Drop丢掉你不想要的包,找到你想改的包改包如图我找到我要改的包,并且改掉了它的参数然后关掉,就会发送你改过之后的包然后你的浏览器就将会收到你改过之后的内容在抓过的包中可以看到你改过的包…

    2022年5月27日
  • mqtt服务器数据存储位置,mqtt服务器 数据库[通俗易懂]

    mqtt服务器数据存储位置,mqtt服务器 数据库[通俗易懂]mqtt服务器数据库内容精选换一换云服务器备份:云服务器备份可以对普通服务器进行整机备份或部分磁盘备份,不适用于部署了数据库等应用的服务器。支持备份弹性云服务器ECS和裸金属服务器BMS,成本相对于VBS较高,适合对需要备份整个服务器和快速发放服务器的场景。可以使用备份恢复至原服务器,或者使用备份创建镜像,也可以将备份复制至其他区域。云硬盘备份:云硬盘备份仅针对磁盘进行备用户在部署MySQL或…

    2022年5月8日
  • QCustomPlot使用手册(一)

    QCustomPlot使用手册(一)QCustomPlot是一个基于Qt的画图和数据可视化C++控件。QCustomPlot致力于提供美观的界面,高质量的2D画图、图画和图表,同时为实时数据可视化应用提供良好的解决方案。

    2022年10月16日
  • 博客系统开发日记[通俗易懂]

    博客系统开发日记[通俗易懂]前端开发问题:设置div默认百分百比例,一定要设置html和body: html,body,.main,.sidebar{height:100%;} 如何去除Bootstarp栅格系统默认的15px的padding:https://blog.csdn.net/TsuiXh/article/details/93891357 要想兼容手机端一定记得加: <metaname=”viewp.

    2022年6月5日
  • shell for循环、循环变量值付给其他shell脚本

    shell for循环、循环变量值付给其他shell脚本本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数。

    2022年7月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号