MySql基本操作语句

本文详细介绍了SQL语言的基础语法、分类(DDL、DML、DQL、DCL)、数据定义与操作,包括创建数据库、修改表结构、数据增删改查、复杂查询与分组等。涵盖了MySQL的特性和常用的注释方法,是数据库管理与操作的实用手册。
摘要由CSDN通过智能技术生成
1.SQL:
1.Structured Query Language:接构化查询语言,每一种数据库的操作方式存在不一样
2.SQL通用语法:
1.SQL语句可以单行或多行书写,以分号结束。
2.可使用空格和缩进来增强语句的可读性
3.MySql数据库的sql语句不区分大小写,关键字建议大写
4.三种注释:
   单行:--或#
   多行:/*  */
3.SQL分类:
1.DDL(Data Definition Language)数据定义语言
  用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等
2.DML(Data Manipulation Language)数据操作语言
  用来对数据库中表的数据进行增删该查。关键字:insert delete update等
3.DQL(Data Query Language)数据控制语言
  用来查询数据库中表的记录。关键字:select where等
4.DCL(Data Control Language)数据库控制语言
  用来定义数据库的访问权限核安全级别,及创建用户。关键字:GRANT,REVOKE等
4.DDL:数据定义语言
1.操作数据库:CRUD
   1.C(Create):创建
     *创建数据库:create database 数据库名称;
     *创建指定字符集的数据库:create database 数据库名称 character set 字符集名称(gbk,utf8);

   2.R(Retrieve)查询
     *查询所有数据库名称:show databases;
     *查询某个数据库的字符集:show create database 数据库名称;

   3.U(Update)修改
     *修改数据字符集:alter database 数据库名称 character set 字符集名称;

   4.D(Delete)删除
     *删除数据库:drop database (if exists) 数据库名称;

   5.使用数据库
     *查询当前正在使用的数据库名称:select database();
     *使用数据库:use 数据库名称;
2.操作表
   1.C(Create):创建
     *create table 表名(
         列名1 数据类型,
         列名2 数据类型,
         ...
         列名n 数据类型
         );

      *复制表:create table 表名 like 被复制表名;
      *常用数据类型:
      1.int
      2.double(5,2)共5位,小数点后有2位
      3.date:日期,yyyy-MM-dd
      4.datetime:日期,yyyy-MM-dd HH:mm:ss
      5.timestamp:时间错类型 yyyy-MM-dd HH:mm:ss如果将来不给这个字段复制,或复制为null
       则默认使用系统当前时间,来自动赋值。
      6.varchar:字符串
         varchar(20):表示最大20个字符
      例:
      create table student(
           id int,
           name varchar(32),
           age int,
           score double(4,1),
           birthday date,
           insert_time timestamp
           );

   2.R(Retrieve)查询
     *查询某个数据库中所有表的名称:show tables;
     *查询表结构:desc 表名称;
   3.U(Update)修改
     *修改表名
      alter table 表名 rename to 新的表名;
     *修改表的的字符集
      alter table 表名 character set 字符集名称;
     *添加一列
      alter table 表名 add 列名 数据类型;
     *修改列名称 类型
       alter table 表名 change 列名 新列明 新数据类型;
       alter table 表名 modify 列名 新数据类型;
     *删除列
       alter table 表名 drop 列名;
   4.D(Delete)删除
      * drop table 表名;
      * drop table if exists 表名;
5.DML:增删改表中数据
 1.添加数据:
    insert into 表名(列名1,列名2,...列名n) values(值1,值2...值n);
    insert into 表名 values(值1,值2...值n);

 2.删除数据:
  *删除某一字段:alter table 表名 drop column 字段名;
  *删除记录:delete from 表名 where 条件(id=2等);(不加条件将删除所有记录)
  *删除表:truncate table 表名 (删除表,然后再创建一个一模一样的空表)
 3.修改数据:
  *update 表名 set 列名1=值1,列名2=值2,列名3=值3 where 条件;
6.DQL:查询表中记录
  select * from 表名;(查询所有记录)
1.语法:
  select
        字段列表
  from
        表名列表
  where
        条件列表
  group by
        分组字段
  heving
        分组自后的条件
  order
        排序
  limit
        分页限定
2.查询基础:
  1.多个字段的查询
   例:查询 姓名和年龄:select name,age from 表名;
  2.去除重复
   例:去除address:select distinct address from 表名;
  3.计算列
   例:计算math和english分数字和:select name,math,english,math+english from 表名;
      如果有null参与的运算,计算结果都为null
      解决办法:
        select name,math,english,ifnull(math,0)+ifnull(english,0) from 表名;
  4.起别名
    select name,math 数学,english 英语,ifnull(math,0)+ifnull(english,0) as 总分 from 表名;
3.条件查询:
 1.where子句后跟条件
 2.运算符
    > < <= >= = <>
    between...and
    in(集合)
    is null
    or 或 ||
    not 或 !
    例:查询年龄大于20:select * from 表名 where age>20;
       查询年龄不等于20:select * from 表名 where age<>20;
       查询年龄大于20小于30:
       select * from 表名 where age>20 && age<30;
       select * from 表名 where age>20 and age<30;
       select * from 表名 where  age between 20 and 30;
       查询年龄15,17,18岁的信息:
       select * from 表名 where age=15 or age=17 or age=18;
       select * from 表名 where age in(15,17,18);
       查询英语成绩为null:
       select * from 表名 where english=null;这是不正确的
       select * from 表名 where english is null;正确
       查询英语成绩不为null:
       select * from 表名 where english is not null;
      模糊查询:
       查询姓马的有哪些? like
       select * from 表名 where name like '张%';
       查询第二个字是‘小’的人:
       select * from 表名 where name like '_凤%';
       查询姓名是3个字的人:
       select * from 表名 where name like '___';
       查询姓名中包含‘三’的人:
       select * from 表名 where name like '%三%';
4.排序查询:
 order by 排序字段1 排序方式1,排序字段2 排序方式2...
 排序方式:
    ASC:升序,(默认)
    DESC:降序
  例:按数学成绩升序查询:
    select * from 表名 order by math ASC;
    如果数学成绩一样,按照英语成绩排序:
    select * from 表名 order by math ASC,english DESC;
   注:如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
5.聚合查询:将一列数据作为一个整体
  1.count:计算个数
  2.max:计算最大值
  3.min:计算最小值
  4.sum:计算和
  5.avg:计算平均值
6.分组查询:
1.语法:group up 分组字段
  注:分组之后查询的字段:分组字段、聚合函数
   where和having的区别:
   where在分组之前进行限定,如果不满足条件,则不参与分组,having在           分组之   后进行限定,如果不满足结果,则不会被查询
2.例:按性别分组,分别查询男女同学的平均分,人数
     select sex,avg(math),count(id) from 表名 group by sex;
     按性别分组,分别查询男女同学的平均分,人数,要求:分数低于70的人不参与分组。
     select sex,avg(math),count(id) from 表名 where math>70 group by sex;
      按性别分组,分别查询男女同学的平均分,人数,要求:分数低于70的人不参与分组,分组之后人数要大于2
      SELECT sex,AVG(math),COUNT(id) FROM person WHERE math>70 GROUP BY sex HAVING COUNT(id)>=2;
      SELECT sex,AVG(math),COUNT(id) 人数 FROM person WHERE math>70 GROUP BY sex HAVING 人数 >=2;
7.分页查询:
1.语法:limit开始的索引
2.例:
  SELECT * FROM person LIMIT 0,3;#第一页
  SELECT * FROM person LIMIT 3,3;#第二页
3.公式:开始的索引=(当前的页码-1)*每页显示的页数
  分页操作是一种"方言"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值