MySQL:众多关系型数据库中的一种
仓库 --数据库
箱子 --表
数据库:
进入mysql 命令行: mysql -uroot -p
查看所有数据库: show databases;
创建数据库: create database niu charset utf8;
删除数据库: drop database niu;
选择数据库: use databases;
查看所有表: show tables;
查看创建数据库的语句:show create database databasename;
查看创建表的语句:show create table tablename;
查看表结构:desc tablenmae;
表:
约束
#自增长
auto_increment
#非空
not null
#默认值
default 'xx'
#唯一
unique
#指定字符集
charset
#主键
primary key
#外键
增加两个表之间的联系
增:
#学生表
create table students(
id int auto_increment primary key,
name varchar(10) not null,
sex varchar(3) default '女',
address varchar(50),
phone int not null unique,
age,
);
#成绩表
create table scores(
id int auto_increnent primary key,
s_id int not null,
grade float not null,
);
删:
drop table tablename;
truncate tablename;#快速删除表
改:
alter table oldtable rename newtable; #改表名
alter table tablename modify name varchar(20);#改表结构
alter table tablename change name newname varchar(20);#改表结构
alter table tablename add age float after name;#新增字段的位置

查:
show create table tablename ;#查看新建表语句
desc table;#查看表结构
show tables ;#查看所有表

数据:

insert into student (name,money,sex,phone) values ('hk',10000,'男',188);
insert into student values('','小明',100,'',120);

turncate tablename; #删除整表数据,自增长id从头再来,快速,从磁盘直接删除,不可恢复
delete from student; 
#删除整个表的数据,自增长继续

update student set money=100;#不指定条件,修改所有
update student set money=110 where name='hk';#只改hk
自动提交
取消自动提交   set @@autocommitt=0;
                select @@autocommitt=0;
#自动提交取消后,当前会话显示已经成功执行,其实后台并没有执行

查:
select * from students limit 1,5; #从第几条开始,下面的x条,不包含开始的那一条
SELECT * from students limit 5;查询5条
SELECT id,stu_name,sex,money,phone from students;#指定查询的字段
SELECT * from students;#查询所有的数据
SELECT * from students where sex='男';#指定条件
SELECT * from students where sex='男' and money>100; #多个条件,必须同时满足
SELECT * from students where sex='男' or sex='未知' ; #多个条件,有一个满足即可
SELECT * from students where sex !='男'; #<>也是不等于
SELECT * FROM students where addr like '%东京%';#模糊匹配,%代表的是通配符,必须得用like
SELECT * from students a where a.stu_name like '姚_';#_通配符表示任意一个单字符,姚字后面只能跟一个字
SELECT a.stu_name '学生名称',a.phone '学生电话' from students as a where a.stu_name='姚远';#给表起别名,as可以省略
SELECT * from students a where a.stu_name in ('牛牛','林倩','林远');# in
SELECT * from students a where a.money BETWEEN 1000 and 10000;#在什么什么之间的数据
SELECT * from students ORDER BY money desc;
#order by xxx desc,根据哪个字段继续排序,默认是升序,
降序是desc,升序asc
SELECT * from students a where a.addr = '' or a.addr is null; #查询字段为空的数据
SELECT DISTINCT a.money from students a ;#去重
SELECT COUNT(*) '学生人数' from students where sex='女'; #统计行数
SELECT MAX(a.money) 钱最多 from students a; #最大值
SELECT min(money) 钱最少 from students;#最小值
SELECT AVG(a.money) 平均多少钱 from students a; #平均数
SELECT sum(a.money) 总共多少钱 from students a;#总和
SELECT sex 性别,count(*) 人数 from students GROUP BY sex; #分组
SELECT
sex 性别,
count(*) 人数,
a.stu_name 名字

FROM
students a  WHERE a.money > 300 GROUP BY a.id HAVING a.stu_name LIKE '姚%';
#如果group by后面有条件的话,必须得用having子句,having子句里面用到的字段必须出现在select后面,如果group by和order by一起用的话,order by必须写在group by后面
SELECT *,COUNT(*) from students GROUP BY sex,class; #多个字段进行分组

SELECT id,stu_name from students UNION SELECT id,t_name from teacher;
#用来合并两条select语句的结果,两条select语句字段数量要一致,并且数据类型也要一致
union和union all的区别就是一个会去重一个不会

多表关联:
SELECT * FROM USER a, accounts b WHERE
a.id = b.user_id
AND a.username = 'niuhy';
-- SELECT * from students a ,scores b where a.id=b.s_id; -- 多表关联
-- 两个表里面都存在的数据查出来
SELECT * from students a LEFT JOIN scores b on a.id=b.s_id;
-- LEFT JOIN会把左边表所有的数据都查出来,右边表有匹配的就查出来
SELECT * from students a RIGHT JOIN scores b on a.id=b.s_id;
-- RIGHT JOIN会把右边表所有的数据都查出来,左边表有匹配的就查出来
SELECT * from students a inner JOIN scores b on a.id=b.s_id;
-- INNER JOIN两边表里都匹配的数据才查到
子查询:
把一条sql的结果,作为另一条sql的条件
SELECT * from scores a where a.s_id = (SELECT id from students where stu_name='牛牛');

把子查询当成一个表
SELECT
a.grade 成绩,
b.stu_name 学生名称,
b.id 学号
FROM
scores a,
( SELECT id,stu_name FROM students WHERE stu_name = '牛牛') b
WHERE
a.s_id = b.id;
数据库权限:
mysql数据的权限实质上都是在user表里控制的
1、grant
#所有的权限 所有数据库下面的所有表 用户 用户ip 
grant all on *.* to 'andashu'@'localhost' IDENTIFIED BY '123456' with grant option;
密码 #有执行grant语句的权限
grant all on *.* to 'andashu'@'%' IDENTIFIED BY '123456' with grant option;
取消授权:
Revoke select on *.* from dba@localhost;
Revoke all on *.* from andashu@localhost;

2、修改user表的数据
对user表进行增加、修改和删除
flush privileges;#刷新权限
备份数据库:
mysqldump -uroot -p123456 db > db.sql
mysqldump -uroot -p123456 -A > all.sql
恢复数据:
mysql -uroot -p123456 db < db.sql
存储过程:
批量的造数据
delimiter $$; #为了改结束符
CREATE PROCEDURE big_data1(num int)#代表要造多少条数据 100
BEGIN
DECLARE i int;
set i=0;
WHILE i<num do
insert into students (stu_name,money) VALUES (CONCAT('小明',i),20000);
#CONCAT的作用是连接不同类型的数据
#把字符串和数字拼接到一起
set i=i+1;
end WHILE;
End
$$;
delimiter;

call big_data1(500); #调用

MySQL 增删查询相关推荐

  1. mysql 执行计划不对_关于mysql主从查询执行计划不一致问题的分析

    最近面试过程中被面试官抛了一个问题,说曾经有一个线上出现的奇怪的问题,主库和从库各种配置是一致的,当数据量比较大的时候,某些时候同样的查询,在从库里的执行计划执行成功了,而主库里没有执行这个执行计划, ...

  2. Mybatis、SpringBoot入门实战(微型项目) -- Mysql增删查改、写接口、测试接口

    Mybatis入门实战(微型项目) – Mysql增删查改.写接口.测试接口 开发环境: 1.Window10 v1909 2.idea 2019 3.jdk 1.8 4.mybatis 3.5.5 ...

  3. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

  4. mysql 查看当前事务id,MySQL 如何查询当前最新事务ID

    写在前面:在个别时候可能需要查看当前最新的事务 ID,以便做一些业务逻辑上的判断(例如利用事务 ID 变化以及前后时差,统计每次事务的响应时长等用途). 通常地,我们有两种方法可以查看当前的事务 ID ...

  5. 分享一个mysql 复杂查询的例子

    发布:脚本学堂/MySQL  编辑:thebaby   2013-08-23 09:37:37  [大 中 小] 有关mysql复杂查询的一个例子,正在学习mysql的朋友,可以作为一个参考. 在my ...

  6. 浅谈 MySQL 子查询及其优化

    2019独角兽企业重金招聘Python工程师标准>>> 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动 ...

  7. mysql慢查询开启及分析方法

    最近服务维护的公司的DB服务器,总是会出现问题,感觉需要优化一下了,登陆上去,发现慢查询日志都没有开,真是惭愧, 故果断加上慢查询日志,经过分析sql记录,发现问题很多,开发人员很多没有对sql优化, ...

  8. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

  9. MySQL慢查询日志分析(一)

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

最新文章

  1. PHP的学习--PHP的引用
  2. C 语言Hello world
  3. Mqtt paho 回调函数触发机制跟踪
  4. 计算机专业论文关于天气预报的,关于天气预报论文范文写作 天气预报相关论文写作资料...
  5. 老师说过链表是分水岭,至少得会这些题目
  6. nginx 配置图片服务器 文件大小,nginx 配置图片服务器 文件大小
  7. VC++的链接错误LNK2001zz
  8. ReactNative之基本组件
  9. html相册魔方代码,魔方相册制作方法现成的魔方相册代码:
  10. QTalk 基于Qt的局域网聊天软件(beta 0.1.0)
  11. Linux系列之Linux安装及源配置(软件源)的介绍
  12. JavaScript绘制矢量图
  13. VIP专区_读书_腾讯网
  14. Error inflating class androidx.constraintlayout.widget.ConstraintLayout
  15. 英语语音篇 - 自然拼读
  16. 目标跟踪 OP,CLE,DP,AUC的概念和计算
  17. Chat-REC、InstructRec(LLM大模型用于推荐系统)
  18. git pull时提示错误:warning: ignoring broken ref refs/remotes/origin/HEAD的解决办法
  19. AI将光子时间转换成3D图像,通过时间来可视化世界
  20. 什么是OID(全局对象标识符)

热门文章

  1. 零基础学算法100天第1天——Dijkstra(图解最短路算法)
  2. Linux locate模糊查询,linux命令: 两个查找工具 locate,find(示例代码)
  3. 想转行学习3D建模,到底是游戏建模赚钱还是影视动画建模赚钱?
  4. Android 7.0(华为荣耀2平板)蓝牙与蓝牙模块4.0通信
  5. Python列表推导式
  6. “菩提本无树,明镜亦非台,本来无一物,何处惹尘埃”的出处
  7. 【Puppet】安装配置Puppet
  8. ASP源代码后台+小程序开发(一)
  9. WRF进阶:撰写Vtable文件添加气象场数据源:以JRA55积雪数据为例
  10. cc和毫升换算_毫升学生两个样本配对样本t检验不