一,常用、简单的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    有条件后,都满足条件的才会查询出来

              

mysql简单的sql操作语句的更多相关文章

  1. mongodb 操作语句与sql操作语句对比

    上行:SQL 操作语句 下行:Mongo 操作语句 CREATE TABLE USERS (a Number, b Number) db.createCollection("mycoll&q ...

  2. SQL操作语句

    SQL语句与Mysql的语句大体上比较相似.以下是sql server的一套练习题,是很好的数据库操作语句学习资料,学校的学习资料,在此整理了以下. 数据库exam:这是一个模拟电子商务,网上直销的数 ...

  3. mysql系列-⼀条SQL查询语句是如何执⾏的?

    ⼀条SQL查询语句是如何执⾏的? ⼤体来说,MySQL 可以分为 Server 层和存储引擎层两部分 Server 层 Server 层包括连接器.查询缓存.分析器.优化器.执⾏器等,涵盖 MySQL ...

  4. Microsoft SQL - 操作语句

    操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create &l ...

  5. Java连接MySQL数据库和Oracle数据库并进行简单的SQL操作的一次尝试

    MySQL和Oracle的JDBC的maven dependency如下: <!-- mysql --> <dependency> <groupId>mysql&l ...

  6. mysql 常用sql操作语句

    获取数据库里所有表 SELECT TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='数据库名' 获取表里 ...

  7. 《Mysql 一条 SQL 更新语句是如何执行的?(Redo log)》

    一:更新流程 - 对于更新来说,也同样会根据 SQL 的执行流程进行. -  - 连接器 - 连接数据库,具体的不做赘述. - 查询缓存 - 在一个表上有更新的时候,跟这个表有关的查询缓存会失效. - ...

  8. 一条简单的 SQL 查询语句到底经历了什么?

    一.MySQL 基础架构   整体来说 MySQL 主要分为两个部分,一个部分是:Server 层,另一部分是:存储引擎层. 其中 Server 层包括有连接器.查询缓存.分析器.优化器.执行器等,存 ...

  9. python爬取信息到数据库与mysql简单的表操作

    python 爬取豆瓣top250并导入到mysql数据库中 import pymysql import requests import re url='https://movie.douban.co ...

随机推荐

  1. 【转载】Android App应用启动分析与优化

    前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动  当启动应用时,后台没有该应用 ...

  2. Nginx之HTTPS

    Nginx之HTTPS 1. HTTPS安全证书基本概述 为什么需要使用HTTPS,因为HTTP不安全,当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的 ...

  3. oracle12.2RAC之OGG安装配置(一)

    前面配置了ACFS用于ogg目录. 上传软件并解压安装: unzip 123014_fbo_ggs_Linux_x64_shiphome.zip cd fbo_ggs_Linux_x64_shipho ...

  4. Centos下,Docker部署Yapi接口管理平台

    前言介绍 Yapi 由 YMFE 开源,旨在为开发.产品.测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建.发布.维护 API. 项目地址:https://github.com/YMFE/ya ...

  5. maven clean插件使用进阶

    maven clean插件使用进阶 参考 Maven clean 插件 Maven删除外部文件 查看命令帮助 mvn clean:help mvn clean:help -Ddetail=true - ...

  6. Go 字节 (byte) & 文字符号 (rune)

    byte 通过 byte 定义一个字节,字节必须使用单引号包起来,直接打印字节输出的是 ascii 码,需要通过格式化输出 byte 是 uint8 的别称,使用 byte 主要是为了区分字节和无符号 ...

  7. RabbitMQ默认情况下不保证每次都把消息传递

    有意思,RabbitMQ默认情况下是不保证每次都把消息传递的,很多情况下我们都是这样发送数据的,    channel.BasicPublish(QUEUE_NAME, String.Empty, n ...

  8. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2

    18.2  PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如 ...

  9. 拎壶学python3-----(3)python之while循环用法

    一.下边我们看一个简单的while循环 那怎么计数呢就让输入三次三次后退出: 二. 关于计数这个问题我们一起看一下 (1)关于计数如下: 我们发现这个计数根本停不下来,怎么才能搞成我们想要的计数次数呢 ...

  10. laravel中select2多选,初始化默认选中项

    项目中有发送消息功能,需要能通过搜索,多选用户,来指定发送人.使用 select2 插件来完成. select2 的 html 代码如下: <div class="form-group ...