zoukankan      html  css  js  c++  java
  • SQL基本语法备忘

    注:以下演示是在mysql命令行下的操作

    数据库相关操作

    create database mytest;   --创建数据库      
    create database if not exists mytest;   --如果mytest不存在就创建
    create database `create`;   --加反引号创建名字为关键字的数据库
    create database mytest charset=utf8;   --指定创建mytest的字符集为utf8
    
    alter database mytest charset=gbk;  --改变mytest的字符集为gbk
    
    show databases;   --显示所有的数据库
    show create database mytest;   --查询mytest的字符集
    
    use mytest;  #使用当前数据库
    
    drop database mytest;   --删除mytest数据库
    drop database if exists mytest;   --如果mytest存在就删除
    

    注意:SQL语句对大小写不敏感

    数据表的 创建、删、查

    一些概念

    行也叫记录,一行就是一条记录;
    列也叫字段,一列是一个字段,

    常用操作

    /*创建数据表*/
    create table teacher(
        id int(4) not null primary key auto_increment,   #not null 不为空; primary key 主键(写了主键可以不写not null);  auto_increment自动增长
        name char(20) not null,
        sex char(10) not null,
        addr char(20) not null default '地址不详'   --default 默认值  这里的数据库字符集必须为gbk或utf8
    );
    
    /*查看所有数据表*/
    show tables; 
    /*查看创建表*/
    show create table teacher;
    show create table teacher G;   -- 加上G参数看上去清晰些
    
    /*显示表结构*/
    describe teacher; 
    desc teacher;  --简写
    
    /*删除表*/
    drop table teacher;
    drop table teacher1, teacher2, teacher3;  --删除三个表
    

    数据的操作

    
    /*插入数据(增)*/
    insert into 表名(字段名1, 字段名2) values(值1, 值2);
    -----------
    insert into teacher(id, name, sex, addr) values(1, 'Leo', 'Male', 'beijing');  --常规插入
    insert into teacher(name, sex, addr) values('LiHua', 'Male', 'hangzhou');  --自增插入
    insert into teacher(sex, name, addr) values('Female', 'Able', 'shanghai');   --插入字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致
    insert into teacher values(3, 'ZhangSan', 'Male', 'guangzhou');  --插入字段是可以省略的,插入的值和数据表的字段顺序以及个数都一致
    insert into teacher values(null, 'LiBai', 'Male', 'guangzhou');  --自动增长的省略插入
    insert into teacher values(null, 'DuFu', 'Female', default);  --默认值的省略插入
    
    /*删除数据(删)*/
    delete from 表 [where 条件]
    -----------
    delete from teacher where name='LiBai';  --删除李白老师的数据
    delete from teacher;  --将teacher表中的数据全部删除
    
    /*更新数据(改)*/
    update 表名 set 字段1=值1, 字段2=值2 where 条件
    -----------
    update teacher set name = 'ivan' where id = 1;
    
    /*查询数据(查)*/
    select 列名 from 表 [where 条件] [order by 排序字段 asc|desc] [limit 起始位置,获取的记录数]
    -----------
    select * from teacher;  --查询所有老师的所有字段
    select id, name from teacher;  --查询id和name列的数据
    select * from teacher where sex='Male';  --查询性别是男的老师
    select * from teacher where sex='Male' and addr='shanghai';  --查询所有上海的男老师
    select * from teacher where sex='Female' or (sex='Male' and addr='shanghai');  --查询所有女老师或上海的男老师
    select * from teacher where addr='shanghai' or addr='guangzhou';  --查询所有上海和广州的老师
    select * from teacher where id>=3;  --查询所有id号大于等于3的老师
    select * from teacher order by id desc;  --按id由高到低排列
    select * from teacher where sex='Male' order by id desc;  --男老师按id由高到低排序
    select * from teacher limit 3;  --取前三条数据
    select * from teacher limit 0,3;  --从零开始取,取三条数据,效果同上句  (零是第一条数据)
    select * from teacher order by id desc limit 3;  --取出倒数三个老师的数据
    

    其他补充

    where 句子

    select 你要的信息 from 数据表(或多个) where 满足的条件(条件判断)
    注:where可以用于select,update或delete中

    order by 句子

    order by 数字 --按第几列排序。

    ASC默认升序,可以不写。反之,DESC是降序。

    技巧:可以使用order by "数字" , 判断数据表的字段长度。

    union句子

    select 你要的信息 from 数据表1 union select 你要的信息 from 数据表2

    聚合函数

    sum():求和
    select sum(id) from teacher;  --求teacher表中id和
    
    avg():求平均值
    select avg(id) from teacher;  --求teacher表中id平均值
    
    max():最大值
    select max(id) from teacher;  --求teacher表中最大id
    
    min():最小值
    select min(id) from teacher;  --求teacher表中最小id
    
    count():记录数
    select count(*) from teacher;  --求teacher表总记录数
    select count(id) from teacher;  --求teacher表总记录数,同上
    select count(*) from teacher where sex='Male';  --求男老师人数
    
    

    MySQL注释

    /**/能够插在句子中间的注释,
    #句子末尾直到该行结束,
    --句子末尾直到该行结束
    注:重复的姓名要显示,使用union all

    数据类型

    bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
    int 整形 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节
    smllint  从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
    tinyint  从 0 到 255 的整型数据。存储大小为 1 字节。
    decimal(3,1)   小数;3是总位数,1是小数位数
    char(10) 定长
    varchar(10) 可变长度
    text 大段文本
    

    Mysql中常见的内置函数

    select database();  #打印当前数据库名称
    select current_user; #打印当前用户
    select load_file('C:\Windows\System32\drivers\etc\hosts'); #打印一个文件内容
    select version(); 数据库版本
    

    小技巧:into + outfile 写入文件

  • 相关阅读:
    温故vue对vue计算属性computed的分析
    bootStrap Table 如何使用
    css 的一些知识点的整理
    css 宽高自适应的div 元素 如何居中 垂直居中
    BOM,Dom 回顾
    DOM
    字符串的一些常用方法 string
    js if for 详解 获取元素方式 及一些js 基础知识
    Java入门1
    python字符串
  • 原文地址:https://www.cnblogs.com/flatcc/p/7580235.html
Copyright © 2011-2022 走看看