zoukankan      html  css  js  c++  java
  • mysql基础操作

    Mysql 

    • mysql就是开放源码的关系数据库管理系统
      • 数据库就是按照数据结构来组织,存储和管理数据的仓库
      • 数据库管理系统:操作和管理数据库的大型软件,用于建立、使用和维护数据库
      • 关系型数据库:关系型数据库使用表来保存数据,使用表和表之间的关系来处理数据 还为数据的安全性、完整性、并发控制和数据恢复提供了保证。
    • 关系型数据库的术语
      • 关系: 一张二维表,每个关系必须有一个关系名,也就是俗称的表名
      • 字段/属性:二维表中的一列
      • 记录/元祖:二维表中的一行
      • 超键(super key):在关系中能唯一标识元祖的属性集称为关系模式的超键
      • 候选键(candidate key):不含有多余属性的超键
      • 主键(primary key):用户选作元祖标标识一个候选键
      • 外键:用于关联两张表
      • 范式:符合某一级别的关系模式的集合,构造数据库的表必须遵循一定的规则

    在学习或复习下面的知识点的时候,默认已安装了MySQL,如果没有安装的请参照下面这篇文章进行安装,MySQL的安装还是比较麻烦的,但是并不难。

    https://www.jb51.net/article/179335.htm

    1.1.入门语句 

    连接MySQL : 在cmd(管理员身份)下 运行:  mysql  -uroot -p   然后输入密码 ,即可进入MySQL

    退出mysql语句: exit

    1.2 当我们连接上服务器时,首先面对的是库,库有一个或者多个,可以使用  show databases; 查看我们有哪一些库,没有的话,可以创建数据库,

    创建数据库语句: create database  数据库名  charset 字符集;  字符集建议使用 utf8。 有了数据库,我们便可以对数据库进行操作了,首先选库,

    选库语句: use 库名;   删除数据库: drop database 数据库名; (慎用,笑)

     这里面我之前创建了几个库玩。

    这里新创建了一个数据库demo01

     这里删除了数据库sys

    对于数据库来说,我们可不可以给数据库改名呢,答案是不可以的,所以你在创建数据库的时候命名时候要注意一些。但是表是可以改名的。

    1.3 简单的表操作

    建表语句,创建一个叫做stu的表,首先你要先选库,才能建表

     

     建表语句的主体就是  create table 表名( ......)engine myisam charset utf8;

    其中engine是表引擎,和性能相关,括号中的就是属性,下面会细讲

    修改表,向表内增加新的属性

    alter table 表名

    add   列

    建表完毕后,我们可以给表进行改名操作

    rename table 旧名 to 新名;

     显示数据库中存在多少表 show tables;

    向表内插入数据,下面是一个简单的示例,插入了三条数据

    insert into 表名 values (key,value),(key,value),......,(key,value);

    当然增删改查的增操作肯定不可能如上边这条语句一样死板,还有许多变化,下面会讲

     下面查看我们向这张表中填充的所有数据,使用select语句

    select * from 表名;  *是指所有数据的意思

    清空表数据: truncate 表名;  

    删除表: drop  table 表名;

    truncate相当于删除表再重建一张同样结构的表,操作后得到一张全新的表

    delete是从删除数据行的层面进行操作

    2.1乱码问题

    命令行(cmd)使用的是GBK字符集,而我们数据库存放的是utf8,所以要告诉服务器,客户端使用GBK编码  set names gbk;

    2.2 增删改查(这是针对表来说的)

    首先创建一个薪资表    sex:性别         salary:薪资          fanbu :饭补

    varchar(),  char(), decimal(), smallint()这些都是数据类型,下面会讲

    not_null表示非空,default'' 表示设置默认值

    查看一下表的结构

    desc 表名;

      增  

    insert into 表名(...........向哪一些属性添加数据..........)  values (.....),(.......),......,(.......);

    例如:

    insert into xinzi(id,name,sex,company,salary,fanbu)  values (1,"张三",'男', '百度', 8000.00,200);

    下面向表中添加一些数据

     

     查 

    select * from xinzi; 查看所有行所有列

     查看某一行的所有属性或部分属性

    查看所有行的部分属性

    改操作

    示例

    update xinzi

    set

    name = ‘张飞’,

    company = '蜀中集团'

    where id = 2;

    删 这里的删并不是删除数据表,而是删除整行数据

    delete from 表名 where ..;

     

    至此,一个表的最简单的增删改查就已经学习过了

    下面是对建表时的知识点 列类型的学习  , 重点是学习列类型的 存储范围  和 占据的字节关系

    3.1  整型

    tinyint  占据空间 1个字节 即8位    0-65535

    samllint   2个字节  

    mediuint   3个字节

    int        4个字节

    bigint   8个字节

    3.2 浮点数型

    float(m,d)

    decimal(m,d)

    m代表总位数,d代表小数点后的位数

    3.3 字符串类型

    char   如char(6) 表示定长字符串

    varchar  如 varchar(20) 表示变长字符串

    text  文本类型  可以存储大的文本段  text 不用加 默认值

    blob  是二进制类型,用来存储图像,音频,视频等二进制信息    (对于图像,视频如何以二进制保存,可以去B站或其他地方去看一下科普视频,简直是太有趣了)

     3.4 时间类型

    date  日期          格式: YYYY-MM-DD

    time  时间      格式: HH-MM-SS

    datetime  日期时间   格式   YYYY-MM-DD HH-MM-SS

    year  年份类型    格式: YYYY

    timestamp    自动取系统当前时间

     

    4 重新补充一下对于表的属性的增删改查

    4.1 增

    alter table 表名

    add 列名称 列类型 列参数

    下面创建一个teacher表,包含属性姓名,年龄属性,现在向其新增一个课程属性

     

     4.2 删

     alter table 表名  drop 列名;

     4.3 改

    alter table 表名

    change  旧列名  新列名  新属性 新参数

    5 查 select  的5种字句

    5.1 where  :条件查询

    where常用的运算符

    在某集合内:  <  <=  > >=  = !=  in

    在某范围内:  between

    逻辑非: not 或 !         逻辑或:  or 或 ||      逻辑与: and或&&

    这里要介绍一个方法,模糊查询 , 这里假设我们有一个商品表,表内有一个属性叫做商品名称goods_name,要求查询所有华为开头的商品。

    select  列名

    from   表名

    where   goods_name  like   '华为%';

    其中,%能匹配任何的字符     _匹配单一字符

    5.2 group by  分组

    group by 的常用用法是配合聚合函数    max()  min()  sum()  avg()  count()

    test: 创建一个班级表,查询出班级中的成绩最高者

    (1)创建一个表,列属性有姓名,班级,成绩

     (2) 然后向其添加一些数据

     

    (3)查询各班成绩最好的学生

    5.3  having  筛选

    还是定义一个学生表,内含属性name    chinese(语文成绩)   math(数学成绩)   (english)英语成绩 

    然后向其添加一些数据,查询出总分大于200的 学生

     

     

    5.4 order by  排序

    order by desc;  降序

    order by asc; 升序

    上面的学生表,按语文成绩的升序排序

    5.5 limit 限制条数

    向上面的查询只查后面语文成绩最低的两名

  • 相关阅读:
    Codeforces 1291 Round #616 (Div. 2) B
    总结
    刷新DNS解析缓存+追踪+域名解析命令
    数学--数论--Hdu 5793 A Boring Question (打表+逆元)
    Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析
    LeetCode 117 Populating Next Right Pointers in Each Node II
    LeetCode 116 Populating Next Right Pointers in Each Node
    test test
    LeetCode 115 Distinct Subsequences
    LeetCode 114. Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/zysfx/p/12608278.html
Copyright © 2011-2022 走看看