zoukankan      html  css  js  c++  java
  • MySql(一):基本操作

      sql语句其实不难,尤其对于那些英语稍好一些的人来说!

    最最最重要的就是搞清楚sql语句的执行顺序!!!数据就像沙子, 语句就是筛子, 沙子按照顺序经过给定的筛子,留下来的就是你要的!!!

    并不是写在前面的就先执行!!! 如下:

    SELECT *, SUM(pnum) '商品总数量' (4)

    FROM products (1)

    GROUP BY con (2)

    HAVING SUM(pnum) > 200; (3)

    这句sql语句其实是先执行 (1) FROM products 从products表中筛选所有数据

    再执行(2) GROUP BY con 将数据按照con字段进行分组

    再执行(3) HAVING SUM(pnum) > 200 筛选出pnum总数大于200的分组

    最后执行(4) SELECT * , SUM(pnum) 将层层过滤的数据显示出来

    注意: 顶哥较懒, 下文的sql语句统统小写啦

    如遇诸如 : Incoreect string value : ..... 之类的报错请通过以下sql语句查看自己的数据库默认编码是否和输入环境的编码一致:

    SHOW VARIABLES LIKE 'character%';

    l 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库, 表, 列等. 关键字: create , alter , drop 等

    l 数据操作语言:简称 DML(Data Manipulation Language), 用来对数据库中表的记录进行更新. 关键字:insert , delete, update等

    l 数据控制语言:简称 DCL(Data Control Language), 用来定义数据库的访问权限和安全级别,及创建用户

    l 数据查询语言:简称DQL(Data Query Language), 用来查询数据库中表的记录. 关键字:select, from, where 等

    DDL --database相关操作

    create database demo; # 创建名为demo的数据库(默认编码)

    create database if not exists demo; # 不存在则创建demo数据库

    create database demo character set ‘gbk’; # 创建名为demo gbk编码的数据库

    ​ show databases; # 列出mysql服务器中所有的数据库

    ​ show create database demo; # 查看demo数据库的定义信息

    ​ crop database demo; # 删除数据库demo

    ​ select database(); # 查看正在使用的数据库

    ​ use demo; # 使用demo 数据库

    DDL—table相关操作

    ​ create table demo( # 创建demo表, 指定 id 字段为主键约束,

    id int primary key, # name 字段为非空约束

    name varchar(12) not null

    );

    create table demo1 like demo; # 创建demo1表,表结构和demo表相同

    show tables ; # 查看数据库中所有的表

    desc demo; # 查看demo表的结构(Tips:为何是desc? describe是秒速的意思!

    drop table demo; # 删除demo表

    drop table if exists demo; # demo表存在则删除

    alter table demo add address varchar(20); # 为demo表增加地址字段

    alter table demo modify address varchar(30); # 修改表中字段的类型长度

    alter table demo change address addr varchar(30); # 修改表中字段名

    alter table demo drop addr; # 删除表中的字段

    rename table demo to dmeo1; # 将demo表重命名为demo1

    alter tabel demo1 character set 'gbk'; #将demo1表的编码修改为gbk

    DML 相关操作

    插入表记录: insert

    insert into demo(id, name) values(1, "song");

    insert into demo(id) values(2); # 无数据字段会使用null

    更新表记录:update

    update demo set id = 1, name = 'song'; # 将demo表中记录全部更新

    update demo name = 'hui' where id = 2; # 将id为2的记录名字更新为hui

    删除表记录

    delete from demo; # 删除demo表中的所有数据

    delete from demo where name = 'song'; # 删除demo表中name为song的记录

    truncate table demo; # 摧毁demo表并重建同结构的表

    DQL 相关操作

    select * from demo ; # 查询demo表中所有的数据

    select id, name from demo; # 查询demo表中id 和 name 列的数据

    select id as 编号, name as 姓名 from demo as 学生表; # 使用别名,as 可以省略

    select distinct name, age from demo; # 去除重复值

    select math + english 总成绩 from student; # 从学生表中查询熟悉和英语的总分并使用别名

    select name , age + 10 from student; # 查询姓名年龄,并将每个人的年龄增加10岁

    select * from student where math > 100 or english > 100; # 查询任意一科超过100的学生

    select * from student where name like '_宋%宝'; # 查询所有名字第二个字是宋且以宝结尾的学生

    select * from student where age > 12 order by id asc, age desc; # 查询年龄大于12的按照id升序排序显示,id一样时按照年龄降序排序

    select max(age) from student; # 查询学生表中年龄最大的

    select * from student where age > 18 group by sex having name is not null; # 查询 年龄大于18的按照性别进行分组,且姓名不为空的记录

    Tips: having 和where的区别:

    having 是在分组后对数据进行过滤

    where 是在分组前对数据进行过滤

    having 后面可以使用聚合函数

    where 后面不可以使用聚合函数

    select * from student limit 0, 3 ; # 查询索引从0开始,共3条记录

    Tips: 起始索引 = (当前页页码数 -1 ) * 每页显示条数

    #查询第一页的数据信息

    select * from sudent limit 0, 3;

    #查询第二页的数据信息

    select * from student limit 3, 3;

    可关注公众号,随时随地查阅相关文章

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/dintalk/p/10844362.html
Copyright © 2011-2022 走看看