zoukankan      html  css  js  c++  java
  • sql:基础总结

    数据库:存储数据的仓库。sql语句作用就是为了操作数据库的数据,其操作分为:增删改查

    注意事项:

    1、标点符号用英文输入法

    2、多个值或者多个字段间用逗号,  分隔

    3、每个Sql语句用分号 ;  结尾

    ——增(创建表):

    创建 表 表名 (
    字段名 数据类型 是否为空 字段备注 , 字段名 数据类型 是否为空 字段备注 , 字段名 数据类型 是否为空 字段备注 );

    create table `student` (
    `id` int(11) not null auto_increment primary key comment '主键',
    `studentNo` varchar(10) not null comment '学号',
    `age` int(11) not null comment '年龄',
    `address` varchar(50) default null comment '地址'
    );

    注:

    数据类型:包含汉字(字符串)和数字(数值)两种,除数字以外都可以用字符串,字符串类型的值需要用 '单引号'

    NOT NULL / NULL:代表字段的值是否可以为空null,NOT NULL代表不能为空,DEFAULT NULL代表默认为空null

    auto_increment:代表这个字段的值不用管,自己会增长值,一般用在主键字段上

    primary key :标识当前这个字段为主键,主键的作用是为了区分每行数据的

    ——增(新增数据):

    插入 到 表名 值列表 (值1,值2,值3);    --给所有字段赋值,除主键列(自动增长)
    insert into student values ('001',18,'北京');

    插入 到 表名 (字段列表) 值列表 (值1,值2,值3);    -- 给指定字段赋值
    insert into student (studentNo,age) values ('002',15);

    注:

    如果插入数据时给表中所有字段赋值,可以省略字段列表,值的顺序要和表中字段排列的数据一致

    如果插入数据时给表中指定字段赋值,需要写上字段列表,值的顺序要和字段列表的顺序一致

    值列表中,汉字(字符串)类型的要用 '单引号' ,数字(数值)类型的不用

    多个字段和多个值用逗号 分隔

    ——删(删除表):

    1、删表及数据:

    删除 表 表名;
    drop table student;

     2、删所有数据,不能与where一起使用,不可以后悔(操作后不能恢复)

    截断 (表) 表名;
    truncate table student;

     3、删指定数据,可以后悔(操作后能恢复)

    删除 来自 表名 (条件);
    delete from student where studentNo='001';

    注:条件可选,不写条件是删除表中所有数据,写条件是删除符合条件的数据

    ——改(修改表):

    修改 表名 设置 
    字段名=新值,
    字段名=新值,
    字段名=新值
    (条件);

    update student set    -- 修改单个字段值
    age=18
    where studentNo='001';

    update student set    -- 修改多个字段值
    age=18,
    address='北京'
    where studentNo='001';

    注:

    修改多个字段时,使用逗号 ,  分隔

    条件可选,不写条件是修改所有数据,写条件是修改符合条件的数据

    ——查(单表查询):

    查询 字段列表 来自 表 (条件);
    select * from student where studentNo='001';    -- 查询所有字段 select age,address from student where studentNo='002';    --查询指定字段

    注:

    字段列表为 *  时,代表查询表中所有字段。多个字段中间用逗号 ,  分隔 (列)

    条件可选,不写条件是查询所有数据,写条件是查询符合条件的数据 (行)

    select与from关键词之间的 -- 限定列:

    1、 *  号与字段列表

    2、聚合函数:

    count(字段名):统计记录数
    sum(字段名):求字段的总和
    max(字段名):求字段的最大值
    min(字段名):求字段的最小值
    avg(字段名):求字段的平均值

     注:

    count(*)是对行数目进行计数
    count(字段名)是对字段中不为空的行进行计数

    where后面的关键词 -- 限定行: 

    1、基础语法

    where 字段名 符号 值;   -- 基础语法
    where 字段名 符号 值 and 字段名 符号 值;   -- 多个条件同时满足:and 连接
    where 字段名 符号 值 or 字段名 符号 值;   -- 多个条件满足一个:or 连接

    -- 查询年龄在15到17的学生;

    where age >=15 and age <=17;
    where age >14 and age <18;
    where age =15 or age =16 or age =17;

    2、范围查询

    where 字段名 in (值1,值2,值3);    -- 查询字段的值在括号中的
    where 字段名 bweteen 值1 and 值2;  -- 查询字段的值在值1与值2之间的

    --查询年龄在15到17岁的学生;
    where age in (15,16,17);
    where age between 15 and 18;

    3、分组

    分组 根据 字段名
    group by address;

    注:分组的意思就是以哪个字段为单位去区分数据

    4、排序

    排序 根据 字段名 (排序方式);  
    order by age asc;  -- 按年龄升序
    order by age dese;  -- 按年龄降序

    注:

    排序方式可选,不写默认为asc

    根据哪个字段排序,字段名就写那个字段

    5、分页

    限制 数字;    
    limit n;    -- 等价于 limt 0,n; 返回n条数据;

    限制 从几开始,取几条数据(不包含x)
    limit x,n;    -- 返回从x+1开始,之后的n条数据


    limit 1;    -- 返回表中第1条数据
    limit 5;    -- 返回表中前5条数据
    limit 1,3;    --表中第2条数据开始,返回往后数3条内的数据

     ——查(单多表查询):

    1、子查询:

    有两个select关键词,第二查询语句需要用到第一个查询的返回结果

    2、自连接查询: 一个表自己关联自己

    3、多表连接查询:

    全连接:inner join 取两个表的交集 --左右两表匹配上的数据

    左连接:left join --左边所有数据+右表能与左表匹配上的数据

    有连接:reight join --右表所有数据+左表能与右表匹配上的数据

    △写sql语句方法总结:

    1、先找关键词,搭好Sql的框架

    新增/增加:表操作--create table,数据操作--insert table

    删除:表操作--drop table,数据操作--truncate table 或 delete

    修改/更新:数据操作--update

    查询/查找:数据操作--select

    2、区分哪些是条件

    不分组条件关键词用where 

    分组后条件关键词用having

    3、区分哪些是结果

    聚合函数、字段列表或 *  

    ——sql语句练习:

    1、查询女学生人数;
    查询 -- select
    人数 -- count()        ~结果
    女生 -- sex ='女'        ~条件
    整理sql:
    select count(*) from student where sex='女';
    
    2、查询年龄最大的女生住址;
    查询 -- select
    年龄最大 -- max()        ~条件
    女生 -- sex ='女'        ~条件
    住址 -- address        ~结果
    整理sql:
    -- 1、按年龄倒序排序,第一条数据是年龄最大的
    select address from student where sex ='女' order by age desc limit 1;
    -- 2、子查询,先查询年龄最大的,然后查询年龄=最大的年龄 select address from student where age =(select max(age) from student where sex ='女');
    -- 3、分组查询,按照性别分组,聚合匹配年龄=最大年龄 select address,sex from student group by sex having age=max(age);
  • 相关阅读:
    10000000000
    vue生命周期
    react基础
    第一个react
    vuex状态管理2
    vue配合UI组件
    vuex
    vue-router配合vue-cli的实例
    vue-router2.0
    父子组件2.0
  • 原文地址:https://www.cnblogs.com/fangyanr/p/12180607.html
Copyright © 2011-2022 走看看