一,常用、简单的SQL操作语句

  1.数据库操作:

    1)创建数据库: create database database_name; 创建并设置字符编码 create database database_name character set utf8;

    2)删除数据库: drop datebase database_name;

    3)查看数据库字符集编码: show variables like 'character_set_database'     如果使用可视化工具要切换到所查数据库,或者使用: use database_name; 命令使用所查数据库

    4)修改数据库字符编码:  alter database_name character set utf8;

  2.数据表的操作:

    1)创建表: create table table_name(field1 int primary key,field2 varchar(20) not null ...)

    2)删除表: drop table table_name

    3)插入表: insert into table_name(field1,field2) values(value1,value2)

    4)查询表: select * from table_name where 查询条件

    5)添加列: alter table table_name add col_name varchar(20) not null

    6)删除列: alter table table_name drop column col_name

    7)修改列: alter table table_name modify column col_name varchar(50)

    8)更新列: update table_name set col1=value1... where 条件...

  3.约束

    1)种类:primary key(主键约束)、default(默认约束)、not null(非空约束)、unique(唯一约束)、foreign key(外键约束)、check(检查约束)

    2)添加约束: alter table table_name add constraint 约束名 约束类型

         比如: alter table student add constraint fk_1 foreign key(class_id) references class(class_id);

    3)删除约束: alter table table_name drop 约束类型 约束名称  注意:删除主键时,应先删除引用了它的外键

         比如: alter table student drop foreign key fk_1

三.常用的查询语句

  1.简单的查询:

    1)无条件查询: select * from table_name;||select col1,col2,... from table_name;

    2)条件查询: select * from table_name where 条件;

    3)排序查询: select col1,col2,...from table_name where 条件 .. order by 列名 desc/asc    desc:从大到小排序。asc:从小到大排序  ,默认是asc

      比如: select s_id,s_name,s_score from student where s_score>=60 order by s_id asc 译:查询出及格的学生,并按学生的id从小到大排序

    4)模糊查询:查询关键字 like 主要使用 % 、 _ 、[ ] 三个字符 ,表示匹配0个或多个字符(通配符),  _  匹配一个字符,[ ]  匹配其中中的一个(类似正则表达式)

      例: select * from student where s_name like '张%' 译:查询学生中姓张的,两个字,三个字的都可以查出来,如:张三、张麻子

      例: select * from student where s_name like '张_' 译:查询学生中姓张的,且只有两个字的,如:张三、张四

      例: select * from student where s_name like '[张李王]三' 译:查询学生中姓名为:张三、李三、王三 的信息

    5)分组查询: select * from table_name group by 列名  关键字 group by ,将统计的列中相同数据进行分组

         比如: select s_score,count(*) '人数' from student group by s_score 译:查询学生中每个分数有多少人,就是对相同的成绩进行了分组

      分组查询常用函数:

        (1)max:求最大值     例: select s_name,max(math_score) from student group by s_name  查询数学成绩最高的学生姓名

        (2)min:求最小值      例: select s_name,min(math_score) from student group by s_name 查询数学成绩最低的学生姓名

        (3)avg:求平均值      例: select class_id,avg(math_score) from student group by class_id  查询每个班的平均数学成绩

        (4)sum:求总数和  例: select sum(s_id) from student   查询表中一共有多少学生

        (5)count:求总行数 

    6)having用法:筛选成组后的各种数据,它可以筛选真实表中没有的数据作为查询条件

            比如: select s_name,sum(s_score) from student group by s_name having sum(s_score)>600  查询总成绩大于600分的学生,但我们表没有总分这个记录

          只有每科的成绩,这时就可以用having了,where就不能来筛选总成绩大于600的学生了。

          having和where的区别:

            having:having对查询结果中的列发挥作用,筛选数据

            wherer:where针对表中的列发挥作用,查询数据

    7)limit用法:limit 主要是用于分页,limit n,m 表示从n+1开始取m条数据

        比如: select * from student limit 2,5  表示去所有信息的 第3条后面的5条记录:3、4、5、6、7

    8)简单的多表查询: select table1.*,table2.* from table1,table2 where 条件

  2.子查询和连接查询

    1)where子查询: 把内层查询结果当作外层查询的比较条件

          比如: select s_name,s_score from student where s_score in (select s_score from student where s_score>=60) 查询成绩及格的学生,后面括号里可以放子查询,也可以放已知的数据。

    2)from子查询:把子查询的结果作为一个表,进行再次查询

          比如: 查询成绩及格学生的姓名个班级,这里将子查询作为一个新表(stu) 再进行查询  ,这里有班级表(calss)和学生表(student)

        select s_name,class_name from class,(select s_name,class_id from student where s_score>=60) as stu where class.class_id = stu.class_id 

    3)exists子查询:把子查询结果拿到内层,看内层的查询是否成立

         比如:查询班级中的学生姓名,

         select class_id,s_name from student where exists(select * from class where class.class_id=student.class_id)

    4)连接查询

      连接查询我们把表的数据给出来,方便对照查看

          

      left join 左连接:以左表为准,去右表找数据,如果没有匹配的数据,则以null补空位

           语法: select col1,col2,col3 from ta left join tb on 条件     on后面放连接的一些条件,跟where后面跟条件一样

             例: SELECT class.*,s_id,s_name FROM class LEFT JOIN student ON class.class_id=student.class_id

            结果:  查询班级里的学生,没有学生的就用 null 补位了

     right join 右连接:以右表为准,去左表找数据,如果没有匹配的数据,则以null补空位  和左连接相反

            语法: select col1,col2,col3 from ta right join tb on 条件

            例: SELECT class.*,s_id,s_name FROM student RIGHT JOIN class ON class.class_id=student.class_id

           结果:   把表的位置换了一下,我们可以看出结果是一样的,左连接和右连接只是连接的方向不同

     inner join 内连接:查询的结果是所连接2个表的交集,

          语法: select ta1.*,ta2.* from ta1 inner join ta2 on 条件

           例: SELECT class.*,s_id,s_name FROM student INNER JOIN class   我们这里不跟条件,查询的就是两个表的所有交集

                

           例: SELECT class.*,s_id,s_name FROM student INNER JOIN class ON class.class_id=student.class_id    有条件后,都满足条件的才会查询出来

              

      欢迎大家来到知了堂社区一起学习成长——传送门:http://www.zhiliaotang.com

转载于:https://www.cnblogs.com/paopaolong/p/7499961.html

【知了堂学习笔记】MySQL数据库常用的SQL语句整理相关推荐

  1. sql依据单个字段去重_小白学习笔记,测试工程师必备SQL语句整理

    作为一个软件测试工程师,我们在测试过程中往往需要对数据库数据进行操作,但是我们的操作大多以查询居多,有时会涉及到新增,修改,删除等操作,所以我们其实并不需要对数据库的操作有特别深入的了解,以下是我在工 ...

  2. 【知了堂学习笔记】java 自定义异常

    [知了堂学习笔记]java 自定义异常 参考文章: (1)[知了堂学习笔记]java 自定义异常 (2)https://www.cnblogs.com/pipixiao/p/7419902.html ...

  3. Mysql学习笔记(基础)基础sql语句详细记录

    数据库学习(基础) // 个人网课学习记录,如果有违规等问题,请联系我删除~ mysql下载安装( 解压版安装配置 下载版安装配置 ) 需求分析:使用cmd命令来创建一个数据库,并对数据库中得一张分类 ...

  4. ​MYSQL中常用的SQL语句​(增删改查)

    MYSQL中常用的SQL语句 一.增删改查 1.新增 指定字段插入: INSERT INTO <表名> (<字段1>, <字段2>, <字段3>) VA ...

  5. 软件创新实验室:MySQL数据库与简单SQL语句使用

    文章目录 前言 简介 特点 SQL DDL:操作数据库.表 DML:增删改表中数据 DQL:查询表中的记录 后记 拓展 范式 第一范式 1NF 第二范式 2NF 第三范式 3NF B+树 节点结构 插 ...

  6. 第二十三章 MySQL数据库 手册2 SQL语句

    第二十三章 MySQL数据库 手册2 SQL语句 实验二:用SQL语句,管理数据库 `危险命令,delete 后不加 where 条件代表删除所有数据 delete.` `更加危险的删除命令trunc ...

  7. [知了堂学习笔记]_设计模式之工厂模式

    介绍: 工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 形态: 简单工厂(Simple Factory)模式,又称静态工厂方法模式 ...

  8. 【知了堂学习笔记】_JavaScript之DOM操作(英语在线翻译)

    请关注"知了堂学习社区",地址:http://www.zhiliaotang.com/portal.php 此案例样式粗糙,主要注重功能实现!! <!DOCTYPE html ...

  9. [知了堂学习笔记]根据银行卡号匹配银行卡类型

    银行卡类型匹配代码 原理:通过银行卡前6或前8位对银行卡类型进行匹配,返回对应的银行类型 代码: package com.finalcial.util;/*** 通过银行的Bin号 来获取 银行名称 ...

最新文章

  1. 基于U-Net系列算法的医学图像分割(课程设计)
  2. mysql读取求和_MySQL从单独的表中获取求和值
  3. 今天开通了自己的博客
  4. EfficientNet 解析:卷积神经网络模型尺度变换的反思
  5. parzen窗估计如何进行结果分析_Parzen窗方法的分析和研究
  6. 201503-1-图像旋转
  7. day20 python常用模块
  8. tomcat/redis/dubbo/netty
  9. 2022电工杯AB题思路分析
  10. 单片机C52系列之(DA)TLC5615
  11. Js封装组件 + Slots插槽
  12. 安装webpack上
  13. 功能升级 | Choerodon猪齿鱼“新”知识管理介绍
  14. 《寻找下一个独角兽》天使投资8字箴言:看势、识人、论术、实战
  15. 台式计算机怎么加一个硬盘,台式电脑硬盘怎么多安装一个?电脑安装多加一块硬盘的方法...
  16. Android Q访问公共外部存储受限
  17. 硕士学位数据分析师工资_值得拥有数据科学方面的硕士学位
  18. oracle静默安装报错,静默安装Oracle11gR2 [FATAL] [INS-32015]报错
  19. 线性代数导论23——微分方程和exp(At)
  20. 智慧医疗服务平台有哪些优势?

热门文章

  1. 图片异步上传,使用ajax上传图片
  2. 简单存取款机的实现---控制输入变量的规则
  3. canvas 在线画图
  4. ChemBioDraw 制作DMT屏保
  5. Delphi7函数大全
  6. Android仿ios二级菜单侧滑,仿IOS的列表项滑动菜单——ListItemMenu
  7. 使用 bat 文件管理计算机服务
  8. Centos7.5 Ambari2.7.4部署
  9. 三维触控测试软件,10 条小技巧,告诉你 iPhone XS Max 的三维触控功能怎么用
  10. 筛选法求1到100以内的素数