zoukankan      html  css  js  c++  java
  • 数据库01 数据库基本操作

    数据库的类型

    RDBMS即关系数据库管理系统(Relational Database Management System)

    关系型数据库:数据库里面的数据全部存在数据表中,而这些表在存储的过程中,各自之间有内在联系。因为这种联系,我们称这样的数据库叫"关系型数据库"   

    代表:oracle、mysql、ms sql server、sqlite

    优点:

      容易理解,二维表结构

      使用方便,通用的SQL语言使得操作关系型数据库非常方便,便于复杂的查询

      支持事务等复杂的数据操作功能

    非关系型数据库(NoSQL)

    MongoDB,Redis

    优点:

    数据之间无关系,易扩展

    结构简单,具有非常高的读写性能,在大数据量下,同样表现优秀

    无需事先建立字段,随时可以存储自定义的数据格式

     

    1 关系型数据库核心元素

    • 数据行(记录)

    • 数据列(字段)

    • 数据表(数据行的集合)

    • 数据库(数据表的集合)

    mysql常用入门的操作命令

    mysql -uroot -p密码              登录
    status;                               查看数据状态信息
    exit,quit                               退出
    show databases;                显示所有数据库
    create database data charset=utf8    创建一个数据库
    use  数据库名:     选择要编辑的数据库
    select database();    查看当前在哪个数据库下
    show tables;     查看当前数据库下所有表
    source 数据库文件名.sql;  导入数据库到mysql中
    desc   ‘表名’         查看表结果信息

    SQL语句主要分为:

    • DQL:数据查询语言,用于对数据进行查询,如select

    • DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete

    • DDL:数据定义语言,进行数据库、表的管理等,如create、drop

    • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback

    • DCL:数据控制语言,进行授权与权限回收,如grant、revoke

    • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor

    查询 SELECT

    select  字段1,字段2, ......  from 表名  where  条件;

    逻辑运算符
    运算符含义
    AND 并列,如果组合的条件都是TRUE,返回TRUE
    OR 或者,如果组合的条件其一是TRUE,返回TRUE
    NOT 取反,如果条件是FALSE,返回TRUE
    范围运算符 (BETWEEN...AND... )

    判断字段值是否在指定区间内

    当然,反过来查的话,查询18-22岁以外的学生
    SELECT class,name,age,sex FROM student WHERE NOT age BETWEEN 18 AND 22;
    比较运算符
    运算符含义
    = 等于,判断字段名的值是否等于指定值
    <>、!= 不等于
    <= 小于或等于
    >= 大于或等于
    < 小于
    > 大于

     

    IN运算符(多条件值查询)

    IN 运算符 允许在 WHERE 子句中规定多个值。

    查询304,305和306班级的学生信息
         select name,class,age from student where class IN (304,305,306)
    模糊查询

    LIKE 运算符 允许我们针对只知道部分字符串的情况下,查找所有的字符串,进行模糊查找

    % 匹配任意多个字符 陈% 

    _ 匹配任意一个字符 陈__

    查询姓陈的学生
        SELECT * FROM student WHERE name LIKE '陈%';
       查找名字以风字结尾的学生
        select * from student WHERE name LIKE '%风';
    聚合运算

      AVG 返回指定列的平均值

      COUNT 返回指定列中非NULL值的个数

      MIN 返回指定列的最小值

      MAX 返回指定列的最大值

      SUM 返回指定列的所有值之和

    查询所有学生中最小的年龄
       SELECT MIN(age) FROM student;
       
    3、查询302班中所有学生的平均年龄。
       select AVG(age) from student where class=302;
    分组查询

    GROUP BY子句, 可以对表进行分组,常常与聚合函数一起使用

    GROUP BY 字段名,当前这个字段名在表中出现多少个不同的字段值,那么查询结果就会有多少个组。

    查询表中有多少男女学生
       SELECT sex,count(sex) FROM student GROUP BY sex;
    2、查询学生表中各个年龄段的学生数量
       SELECT age,COUNT(name) FROM student GROUP BY age;
    3、查询各个班级的人数各是多少
       select class,COUNT(id) FROM student GROUP BY class;
    结果排序

      ORDER BY 子句,对查询结果排序

      ASC表示升序(从小到大),为默认值,

      DESC为降序(从大到小)

    对309班级的学生的年龄进行倒叙排序
       select name,age,sex from student where class=309 order by age desc;
    补充:
    
    结果排序可以多个字段排序
    例如:对学生的年龄进行降序排列。
    
    select id,name,sex from student order by age desc,id asc limit 10;
     
     # 上面就有2个排序的字段,
     # 系统会优先针对 age 进行降序排列,
     # 当age的值一致的时候,系统会按照id进行升序排列。
    结果限制

    LIMIT 子句,可以对查询出的结果进行数量限制,往往我们不想一次取出所有的数据

    limit有两个使用方式:

      limit后面跟着 一个参数 表示限制结果的数量

      limit后面跟诊 两个参数,第一个参数表示取数据的开始下标[在表中下标从0开始],第二个参数表示限制结果的数量。

    查询出年级最大的10个学生
        select * from student order by age desc,id asc limit 10;
    2、从所有学生中,查询年级最大的下标从10-19的学生出来。
           select id,name,age from student order by age desc,id asc limit 10,10;

    ps:  limit 主要用于在项目开发中的分页功能实现。

    DML

    添加数据(INSERT )
    INSERT INTO 表名 (字段1,字段2,字段3,....) VALUES (字段值1,字段值2,字段值3,....);
    insert into student (id,name,sex,class,age,description) values (101,'刘德华',1,508,17,'给我一杯忘情水~');
    
    # 上面的字段,如果是全部字段,那么字段这一块内容可以省略不写。
    # 例如,我们再次添加一个学生,如果省略了字段名,那么填写数据的数据项必须和表结构的字段数量保持一致。
    insert into student values (102,'张学友',1,508,17,'爱就像头饿狼~',0,0,0);
    
    
    添加多名学生
    INSERT INTO student(name,sex,class,age,description) VALUES ('周润发',1,508,17,'5个A~'),('周杰伦',1,508,17,'给我一首歌的时间~');
    
    
    注: 自动增长跟有默认值的字段可以不写。
    更新数据(UPDATE)

    UPDATE 表名 SET 字段1=字段值1,字段2=字段值2 WHERE 条件
    # 更新操作会影响数据的不可逆操作,所以更新的时候,一定要谨慎,添加条件。如果没有条件,
    # 或者条件的判断结果一直是True,则整个表所有的记录都会被更新。

    修改学生的姓名,年龄
    UPDATE student set age=8 where id=104;
    删除数据(DELETE)

    DELETE FROM 表名 WHERE 条件

    DELETE FROM table 删除整个表的内容[没有条件则表示删除整个表所有数据]

    删除一个学生
    DELETE FROM student WHERE id=104;

    注: 修改跟删除数据都要记得加条件。

    DDL

    DROP TBALE 表名   删除整个表

    删除学生表
    DROP TABLE student;

    TRUNCATE table   清空/重置表[表还在数据被清空了]

    create database 数据库名 charset=utf8;    创建数据库

  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/echo2019/p/10491758.html
Copyright © 2011-2022 走看看