美文网首页
mysql 常用基础

mysql 常用基础

作者: Canes | 来源:发表于2020-04-10 13:06 被阅读0次

    mysql语法规范

    1. 关键字大写,表名、列名小写
    2. 命令结束符默认为分号结尾
    3. 注释
      • 单行注释:#注释文字
      • 单行注释:-- 注释文字
      • 多行注释:/* 注释文字 */

    mysql常用语句

    1. 操作数据库
      create database 库名;
      show databases;
      use db_name;
      drop database 库名;
    2. 查看当前数据库中的所有表
      show tables;
    3. 查看表结构
      desc tb_name;
    4. 创建表
      create table tb_name(column1 type1,column2 type2,...);
      DROP TABLE [IF EXISTS] studentinfo;
    CREATE TABLE IF NOT EXISTS stuinfo(
        stuId INT,
        stuName VARCHAR(20),
        gender CHAR,
        bornDate DATETIME
    
    1. 查看mysql版本
    • mysql -V
    • select version();
    1. 查看表中数据
      select * from tb_name;
      select * from tb_name where condition1 and condition2;
      select * from tb_name where column1 like 'a%';
    2. 排序
      select 查询项 from 表名 where 条件 order by 排序字段 [desc|asc ]
    3. 分组
      select 查询项 from 表名 group by 分组字段

    分组前筛选: 原始表 group by的前面 where
    分组后筛选: 分组后的结果集 group by的后面 having

    1. 分页
      select * from 表 limit (page-1)*sizePerPage,sizePerPage

    起始索引(从零开始),选择个数

    多表查询

    • 交叉连接
      生成笛卡尔积,即表1(4条数据),表2(8条数据)每个项都匹配,返回(32条数据)
      select * from 表1,表2;
    • 自连接
      对同一张表进行操作
      select * from students as s1 inner join students as s2 on 条件(s1.字段=s2.字段)
    • 内链接
      只连接匹配的行
      select * from students inner join scores on 条件(表1.字段=表2.字段)
    • 外连接( left join,right join)
      优先显示左表全部记录 left join
      select * from students left join scores on 条件(表1.字段=表2.字段)
    • 联合查询
      union and union all
      select * from courses union all select * from scores;
      select * from courses LEFT JOIN scores on (courses.cno = scores.cno)
      UNION
      select * from courses RIGHT JOIN scores on (courses.cno = scores.cno);
    

    1、多条查询语句的查询的列数必须是一致的
    2、多条查询语句的查询的列的类型几乎相同
    3、union代表去重,union all代表不去重

    子查询

    一条查询语句中又嵌套了另一条完整的select语句

    • 子查询根据返回结果分为两类
      1. 单行子查询
        结果集只有一行
        一般搭配单行操作符使用:> < = <> >= <=
        非法使用子查询的情况:
        a、子查询的结果为一组值
        b、子查询的结果为空

      2. 多行子查询
        结果集有多行
        一般搭配多行操作符使用:any、all、in、not in
        in: 属于子查询结果中的任意一个就行
        any和all往往可以用其他查询代替

    插入数据

    insert into 表名(字段名,...) values(值1,...);

    更新数据

    update 表名 set 字段=新值,字段=新值 [where 条件]
    update 表1 别名1,表2 别名2 set 字段=新值,字段=新值 where 连接条 and筛选条件

    删除数据

    • delete
      delete from 表名 [where 筛选条件]
    • truncate
      truncate table 表名

    1 truncate不能加where条件,而delete可以加where条件
    2 truncate的效率高一丢丢
    3 truncate 删除带自增长的列的表后,如果再插入数据,数据从1开始; delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始
    4 truncate删除不能回滚,delete删除可以回滚
    总之:当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete

    修改表

    ALTER TABLE 表名 ADD|MODIFY|DROP|CHANGE COLUMN 字段名 【字段类型】;

    ALTER TABLE stuinfo RENAME  aaa;  #修改表名
    ALTER TABLE aaa CHANGE  gender sex CHAR; #旧字段名,新字段名,新字段类型
    ALTER TABLE aaa MODIFY  sex varchar(2);
    ALTER TABLE aaa ADD COLUMN std_level varchar(10);
    ALTER TABLE aaa DROP std_level;
    

    相关文章

      网友评论

          本文标题:mysql 常用基础

          本文链接:https://www.haomeiwen.com/subject/ezfrmhtx.html