zoukankan      html  css  js  c++  java
  • 数据库开发——MySQL——基本操作

    一、SQL语句

    有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写。

    mysql服务端软件帮我们管理好文件夹以及文件,前提是作为使用者需要下载mysql的客户端,或者其他模块来连接到mysql,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。

    该语法即sql(Structured Query Language 即结构化查询语言),SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。

    SQL语言分为3种类型:

    1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    
    2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    
    3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
    

    MySQL中建立的库其实就是文件夹。

    语法(help create database)

    CREATE DATABASE 数据库名 charset utf8;
    

    数据库的命名规则

    可以由字母、数字、下划线、@、#、$
    
    区分大小写
    
    唯一性
    
    不能使用关键字如 create select
    
    不能单独使用数字
    
    最长128位
    

    练习

    create database testdb charset utf8;
    

    在这里插入图片描述
    可以发现,在MySQL的安装路径中的data目录里,多了一个文件夹:
    在这里插入图片描述

    drop database testdb;
    

    在这里插入图片描述
    可以发现,data目录下的相应文件夹也不见了:
    在这里插入图片描述

    更改库的编码:

    alter database testdb charset gbk;
    

    在这里插入图片描述

    查看当前创建的库:

    show databases;
    

    在这里插入图片描述
    可以看到当前有五个数据库,但是我们看见data目录下只有四个文件夹,这是因为除了咱们创建的testdb之外的四个数据库都是系统数据库

    information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
    
    performance_schema:MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
    
    mysql:授权库,主要存储系统用户的权限信息
    
    sys:mysql5.7增加了sys系统数据库,通过这个库可以快速的了解系统的元数据信息,这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助
    

    查看数据库详情:

    show create database testdb;
    

    在这里插入图片描述

    切换数据库操作:

    use testdb;
    

    在这里插入图片描述

    表介绍

    表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。

    在这里插入图片描述

    学号、姓名、专业、生日和手机号称为字段,其余的,一行内容称为一条记录。

    创建表语法:

    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    

    注意:

    1. 在同一张表中,字段名是不能相同
    2. 宽度和约束条件可选
    3. 字段名和类型是必须的
    create table people(id int, name char);
    

    在这里插入图片描述

    复制表

    复制表结构+记录 (key不会复制: 主键、外键和索引)

    create table new_service select * from service;
    

    只复制表结构

    select * from service where 1=2;        //条件为假,查不到任何记录
    
    create table new1_service select * from service where 1=2;  
    
    create table t4 like employees;
    

    drop table people;
    

    在这里插入图片描述

    alter table people modify name char(3);
    
    alter table people change name nickname char(5);
    

    在这里插入图片描述
    修改表结构

    1. 修改表名
          ALTER TABLE 表名 
                              RENAME 新表名;
    2. 增加字段
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…],
                              ADD 字段名  数据类型 [完整性约束条件…];
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
    3. 删除字段
          ALTER TABLE 表名 
                              DROP 字段名;
    4. 修改字段
          ALTER TABLE 表名 
                              MODIFY  字段名 数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    

    show tables;
    

    在这里插入图片描述

    查看表的数据类型

    desc innodb_t1;
    

    在这里插入图片描述

    记录

    insert into people values(1, "Alex"),(2, "Coco"),(3, "Bei");
    

    在这里插入图片描述

    delete from people where id=3;
    

    在这里插入图片描述

    update people set nickname="Baby" where id=3;
    

    在这里插入图片描述

    select * from people;
    

    在这里插入图片描述

    示例

    创建数据库

    mysql> use db1;
    Database changed
    

    创建表

    mysql> create table t1(
        -> id int,
        -> name varchar(50),
        -> sex enum("male", "female"),
        -> age int(3)
        -> );
    Query OK, 0 rows affected (0.55 sec)
    

    查看表描述

    mysql> desc t1;
    +-------+-----------------------+------+-----+---------+-------+
    | Field | Type                  | Null | Key | Default | Extra |
    +-------+-----------------------+------+-----+---------+-------+
    | id    | int(11)               | YES  |     | NULL    |       |
    | name  | varchar(50)           | YES  |     | NULL    |       |
    | sex   | enum('male','female') | YES  |     | NULL    |       |
    | age   | int(3)                | YES  |     | NULL    |       |
    +-------+-----------------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    

    插入数据

    mysql> insert into t1 values
        -> (1, "Alex", "male", 19),
        -> (2, "Coco", "female", 19);
    Query OK, 2 rows affected (0.17 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    

    查询表内容

    mysql> select * from t1
        -> ;
    +------+------+--------+------+
    | id   | name | sex    | age  |
    +------+------+--------+------+
    |    1 | Alex | male   |   19 |
    |    2 | Coco | female |   19 |
    +------+------+--------+------+
    2 rows in set (0.00 sec)
    

    只插入id数据并查询

    mysql> insert into t1(id) values
        -> (3),
        -> (4);
    Query OK, 2 rows affected (0.07 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from t1;
    +------+------+--------+------+
    | id   | name | sex    | age  |
    +------+------+--------+------+
    |    1 | Alex | male   |   19 |
    |    2 | Coco | female |   19 |
    |    3 | NULL | NULL   | NULL |
    |    4 | NULL | NULL   | NULL |
    +------+------+--------+------+
    4 rows in set (0.00 sec)
    

    查看表结构

    mysql> show create table t1G
    *************************** 1. row ***************************
           Table: t1
    Create Table: CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(50) DEFAULT NULL,
      `sex` enum('male','female') DEFAULT NULL,
      `age` int(3) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 交换Easy
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法训练 矩阵乘方
    QT中给各控件增加背景图片(可缩放可旋转)的几种方法
    回调函数实现类似QT中信号机制
    std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12337999.html
Copyright © 2011-2022 走看看