zoukankan      html  css  js  c++  java
  • Mysql8_数据库基础操作




    一:创建数据库

    1:查看数据库信息:

    SHOW DATABASES;

    imageimage



    二:创建数据库

    CREATE DATABASE test_db;
    SHOW DATABASES;

    image


    /*Mysql创建数据库语法:*/
    create database database_name
    
    /**database_name 为:要创建的数据库名称,该数据库名称不能与已经存在的数据库名称同名***/


    三:查看数据库定义信息:

    SHOW CREATE DATABASE test_db


    image

    四:删除数据库:

    drop  database database_name ;
    /***database_name :为要删除的数据库名称,若指定的数据库不存在,则删除出错****/



    image

    image

    C:Usersadmin>cd  C:Program FilesMySQLMySQL Server 8.0in   #切换到win10 的mysql安装目录下
    
    C:Program FilesMySQLMySQL Server 8.0in>mysql -h127.0.0.1 -u root -p   #登录mysql root用户 
    Enter password: ******   #输入密码
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 12
    Server version: 8.0.20 MySQL Community Server - GPL
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> show databases;  ---查看数据库信息
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | world              |
    +--------------------+
    6 rows in set (0.00 sec)
    
    mysql> create database zoo;   --创建zoo数据库
    Query OK, 1 row affected (0.01 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | world              |
    | zoo                |
    +--------------------+
    7 rows in set (0.00 sec)
    
    mysql> use zoo ;     --使用zoo数据库
    Database changed
    mysql> show create database zoo;  --查看zoo数据库信息
    +----------+-------------------------------------------------------------------------------------------------------------------------------+
    | Database | Create Database                                                                                                               |
    +----------+-------------------------------------------------------------------------------------------------------------------------------+
    | zoo      | CREATE DATABASE `zoo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
    +----------+-------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> drop database zoo;    --删除zoo数据库
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> show databases ;   ---查看数据库信息
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | world              |
    +--------------------+
    6 rows in set (0.00 sec)
    
    mysql>



    二:创建数据表


    1:mysql 创建表语法

    create  table  <表名>{
       字段名称1 ,数据类型【列级别约束条件】 【默认值】,
       字段名称2,数据类型【列级别约束条件】 【默认值】,
       字段名称3 ,数据类型【列级别约束条件】 【默认值】,
       字段名称4,数据类型【列级别约束条件】 【默认值】,
       字段名称5,数据类型【列级别约束条件】 【默认值】,
      .........
      【表级别约束条件】
    
    }
    
    /***********
     *  create table 创建表的时候,必须指定以下信息:
    *  1:创建的表名称,不区分大小写,不能使用mysql语言关键字,如:dorp,alter,insert
    *  2:数据表中的每一列的名称和数据类型,如果创建多个,要用逗号隔开。
    *
    *
    *
    *************************/


    C:Program FilesMySQLMySQL Server 8.0in>mysql -h 127.0.0.1 -u root -p
    Enter password: ******
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 17
    Server version: 8.0.20 MySQL Community Server - GPL
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    
    
    mysql> show databases;    ----展示数据库信息
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | world              |
    | zoo                |
    +--------------------+
    7 rows in set (0.00 sec)
    
    mysql> create database test_db;   ---创建数据库
    Query OK, 1 row affected (0.04 sec)
    
    mysql> show databases;     ----展示数据库信息
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | test_db            |
    | world              |
    | zoo                |
    +--------------------+
    8 rows in set (0.00 sec)
    
    mysql> use test_db;    --使用数据库
    Database changed
    mysql> show create database test_db;   ---查看数据库名称信息
    +----------+-----------------------------------------------------------------------------------------------------------------------------------+
    | Database | Create Database                                                                                                                   |
    +----------+-----------------------------------------------------------------------------------------------------------------------------------+
    | test_db  | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
    +----------+-----------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    -----创建数据库表
    mysql> CREATE TABLE tb_emp1     
        -> (
        -> id      INT(11),
        -> name   VARCHAR(25),
        -> deptId  INT(11),
        -> salary  FLOAT
        -> );
    Query OK, 0 rows affected, 2 warnings (0.76 sec)
    
    mysql> show tables;    --查看表信息
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_emp1           |
    +-------------------+
    1 row in set (0.04 sec)
    
    mysql>


    2:主键约束

    主键(主码):是表中某列或者某几列的组合。其主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一标识某一条数据记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。

    2-1:单字段主键

    在定义列的同时指定主键,语法规则:

    字段名  数据类型  primary key (默认值)


    mysql> CREATE TABLE tb_emp2
        -> (
        -> id    INT(11) PRIMARY KEY,     /**但字段创建主键约束***/
        -> name  VARCHAR(25),
        -> deptId INT(11),
        -> salary FLOAT
        -> );
    Query OK, 0 rows affected, 2 warnings (0.20 sec)
    
    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_emp1           |
    | tb_emp2           |
    +-------------------+
    2 rows in set (0.00 sec)

    在定义完所有列之后指定主键,语法规则:

    constraint <约束名称>primary key 【字段名】

    /*******【例4.3】定义数据表tb_emp 3,其主键为id,SQL语句如下:*********/
    mysql> CREATE TABLE tb_emp3
        -> (
        -> id INT(11),
        -> name VARCHAR(25),
        -> deptId INT(11),
        -> salary FLOAT,
        -> PRIMARY KEY(id)     /***创建所有列之后创建主键***/
        -> );
    Query OK, 0 rows affected, 2 warnings (0.24 sec)
    
    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_emp1           |
    | tb_emp2           |
    | tb_emp3           |
    +-------------------+
    3 rows in set (0.00 sec)
    
    mysql>

    2-2:多字段联合主键

    主键由多个字段联合组成。

    语法:

    primary key [字段1,字段2.,........]



    /****【例4.4】定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来做为主键,SQL语句如下:***/
    mysql> CREATE TABLE tb_emp4
        ->  (
        -> name VARCHAR(25),
        -> deptId INT(11),
        -> salary FLOAT,
        -> PRIMARY KEY(name,deptId)
        -> );
    Query OK, 0 rows affected, 1 warning (0.10 sec)
    
    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_emp1           |
    | tb_emp2           |
    | tb_emp3           |
    | tb_emp4           |
    +-------------------+
    4 rows in set (0.00 sec)
    
    mysql>

    3:外键约束


    外键用来在两个表之间建立连接的,可以是一列或者是多列。一个表可以有一个或者是多个外键。外键对应的是参照完整性,一个表 的外键可以为空值,若不为空值,则每一个外键必须等于另外一个表的主键的某个值。

    外键:首先它是一个表的字段,虽然可以不是本表的主键,但要对应另外一个表的主键,外键的主要作用是保证数据引用的完整性,定义外键,不允许删除在另外一个表中具有关联关系的行。

    外键的作用:保持数据的一致性/完整性。

    主表:对于两个表具有关联关系的表而言,相关联字段中主键所在的那个表为主表。

    从表:对于两个具有关联关系的表而言,相关联字段中外键所在的那个表为从表。


    创建外键的语法:

    【constaraint  <外键名>foreign key 字段名1【,字段名2,...】
    references <主表名称> 主键列1【,主键列2.....】

    外键名:为定义的外键约束的名称。一个表中不能有相同的名称外键。

    字段名:标识子表需要添加约束的字段列

    主表名:即被子表外键所依赖的表的名称

    主键列:表示主表中定义的主键列,或者是列组合

    注释: 主外键列的类型必须一致。

    /**********【例4.5】定义数据表tb_emp5,并在tb_emp5表上创建外键约束。***************************/
    
    mysql> CREATE TABLE tb_dept1    /*****创建一个部门表tb_dept1,SQL语句如下********/
        -> (
        -> id       INT(11) PRIMARY KEY,
        -> name    VARCHAR(22)  NOT NULL,
        -> location  VARCHAR(50)
        -> );
    Query OK, 0 rows affected, 1 warning (0.08 sec)
    
    mysql> CREATE TABLE tb_emp5   /********定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:********/
        -> (
        -> id      INT(11) PRIMARY KEY,
        -> name   VARCHAR(25),
        -> deptId  INT(11),
        -> salary   FLOAT,
        -> CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
        -> );
    Query OK, 0 rows affected, 2 warnings (0.51 sec)
    
    mysql> show  tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_dept1          |
    | tb_emp1           |
    | tb_emp2           |
    | tb_emp3           |
    | tb_emp4           |
    | tb_emp5           |
    +-------------------+
    6 rows in set (0.00 sec)
    
    mysql>


    4:非空约束


    非空约束:指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据的时候没有指定值,数据库会报错。

    非空约束语法如下:

    字段名  数据类型  not  null
    ----【例4.6】定义数据表tb_emp6,指定员工的名称不能为空,SQL语句如下:
    mysql> CREATE TABLE tb_emp6
        -> (
        -> id     INT(11) PRIMARY KEY,
        -> name   VARCHAR(25) NOT NULL,
        -> deptId  INT(11),
        -> salary  FLOAT
        -> );
    Query OK, 0 rows affected, 2 warnings (0.18 sec)
    
    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_dept1          |
    | tb_emp1           |
    | tb_emp2           |
    | tb_emp3           |
    | tb_emp4           |
    | tb_emp5           |
    | tb_emp6           |
    +-------------------+
    7 rows in set (0.00 sec)
    
    mysql>


    5:唯一约束

    唯一约束:要求该列唯一,允许为空,但只能出现一次。唯一约束可以确保一列或者几列不能出现重复。

    语法如下;

    ----定义在列之后的唯一约束
     字段名  类型  unique
    
    
    ----定义在所有完成列之后指定唯一约束条件
    constraint <约束名称>unique<字段名>


    ----【例4.7】定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下:
    CREATE TABLE tb_dept2 
    (
    id      INT(11) PRIMARY KEY,
    name    VARCHAR(22) UNIQUE,
    location  VARCHAR(50)
    );
    -----【例4.8】定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下:
    CREATE TABLE tb_dept3 
    (
    id      INT(11) PRIMARY KEY,
    name    VARCHAR(22),
    location  VARCHAR(50),
    CONSTRAINT STH UNIQUE(name)
    );

    image

    注意:一个表可以有多个非空约束,主键约束只有1个。主键列值不能为空,非空约束列可以有null存在。


    6:默认约束

    默认约束:指定某列的默认值。

    语法:

    字段名  字段类型  default 默认值
    ------【例4.9】定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句如下:
    CREATE TABLE tb_emp7 
    (
    id      INT(11) PRIMARY KEY,
    name   VARCHAR(25) NOT NULL,
    deptId  INT(11) DEFAULT 1111, 
    salary  FLOAT
    );

    image


    7:设置表的属性自动增加:

    在数据库应用中,经常希望在每次插入数据记录时候,系统自动生成字段主键值,可以通过外表的主键 添加 auto_increment 关键字来实现。

    默认值 在mysql 中的 auto_increment 的初始值是1 ,没新增1条记录,字段值自动加1.一个表只能有1个字段使用auto_increment 约束且该字段必须为主键约束。auto_increment 约束的字段可以是任何证书类型(tinynt,smalln ,int ,bignt等)

    语法:

    字段名  数据类型 auto_increment
    -----【例4.10】定义数据表tb_emp8,指定员工的编号自动递增,SQL语句如下:
    CREATE TABLE tb_emp8 
    (
    id      INT(11) PRIMARY KEY AUTO_INCREMENT,
    name   VARCHAR(25) NOT NULL,
    deptId  INT(11), 
    salary  FLOAT
    );
    
    
     insert into tb_emp8 (name ,salary) values('aaaa','1212'),('bbbbb','2323');


    image


    三:查看数据表结构

    1:查看表基本结构

    describe/desc 语句 可以查看表字段信息,其中包括 字段名称、字段数据类型、是否为主键、是否有默认值 等

    describe  表名

    desc  表名


    image

    null : 表示该列是否可以储存null值

    key:表示该列是否已编制索引。pri 表示该列是表主键的一部分 uni 表示该列是 unique 索引一部分  mul 表示在列中某个给定值允许出现多次

    default : 表示该列是否有默认值。有的话指定值是多少。

    extra:表示可以获取的与指定列有关的附加信息。例如:auto_increment


    2:查看表详细结构

    show  create table <表名>



    image

    mysql> show tables;
     +-------------------+
     | Tables_in_test_db |
     +-------------------+
     | tb_dept1          |
     | tb_dept2          |
     | tb_dept3          |
     | tb_emp1           |
     | tb_emp2           |
     | tb_emp3           |
     | tb_emp4           |
     | tb_emp5           |
     | tb_emp6           |
     | tb_emp7           |
     | tb_emp8           |
     +-------------------+
     11 rows in set (0.00 sec)
    
    mysql> show create table tb_dept3;
     +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     | Table    | Create Table                                                                                                                                                                                                                                  |
     +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     | tb_dept3 | CREATE TABLE `tb_dept3` (
       `id` int NOT NULL,
       `name` varchar(22) DEFAULT NULL,
       `location` varchar(50) DEFAULT NULL,
       PRIMARY KEY (`id`),
       UNIQUE KEY `STH` (`name`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
     +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     1 row in set (0.00 sec)
    
    mysql> show create table tb_dept3 G
     *************************** 1. row ***************************
            Table: tb_dept3
     Create Table: CREATE TABLE `tb_dept3` (
       `id` int NOT NULL,
       `name` varchar(22) DEFAULT NULL,
       `location` varchar(50) DEFAULT NULL,
       PRIMARY KEY (`id`),
       UNIQUE KEY `STH` (`name`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
     1 row in set (0.00 sec)
    
    mysql>
    


    四:修改数据表

    1:修改表名

    ALTER TABLE <旧表名>  RENAME  [TO] <新表名> ;
    ----To 为可选参数,使用与否不影响结果

    image

    【例4.13】将数据表tb_dept3改名为tb_deptment3。
    ALTER TABLE tb_dept3 RENAME tb_deptment3;


    2:修改字段数据类型

    ALTER TABLE <表名>  MODIFY <字段名> <数据类型> ;
    ----表名:指要修改数据类型的字段所在的表名称;字段名:指需要修改的字段类型,数据类型:指修改后字段的新数据类型。
    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_dept1          |
    | tb_dept2          |
    | tb_deptment3      |
    | tb_emp1           |
    | tb_emp2           |
    | tb_emp3           |
    | tb_emp4           |
    | tb_emp5           |
    | tb_emp6           |
    | tb_emp7           |
    | tb_emp8           |
    +-------------------+
    11 rows in set (0.00 sec)
    
    mysql> desc tb_dept1;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int         | NO   | PRI | NULL    |       |
    | name     | varchar(22) | NO   |     | NULL    |       |
    | location | varchar(50) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);
    Query OK, 0 rows affected (0.33 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tb_dept1;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int         | NO   | PRI | NULL    |       |
    | name     | varchar(30) | YES  |     | NULL    |       |
    | location | varchar(50) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql>
    
    


    3:修改字段名

    ALTER TABLE <表名>  CHANGE <旧字段名>  <新字段名> <数据类型>  ;
    ---“旧字段名”:指修改前的字段名   “新字段名”:指修改后的字段名  “新数据类型”:指修改后的数据类型。如果不需要修改字段的数据类型,将新字段数据类型设置成与原来一样即可。但是数据类型不能为空。
    mysql> desc tb_dept1;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int         | NO   | PRI | NULL    |       |
    | name     | varchar(30) | YES  |     | NULL    |       |
    | location | varchar(50) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    ---【例4.15】将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变,SQL语句如下:
    mysql> ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tb_dept1;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int         | NO   | PRI | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    | loc   | varchar(50) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql>
    
    
    


    ---【例4.16】 将数据表tb_dept1中的loc字段名称改为location,同时将数据类型变为VARCHAR(60),SQL语句如下:
    mysql> show tables;
    +-------------------+
    | Tables_in_test_db |
    +-------------------+
    | tb_dept1          |
    | tb_dept2          |
    | tb_deptment3      |
    | tb_emp1           |
    | tb_emp2           |
    | tb_emp3           |
    | tb_emp4           |
    | tb_emp5           |
    | tb_emp6           |
    | tb_emp7           |
    | tb_emp8           |
    +-------------------+
    11 rows in set (0.00 sec)
    
    mysql> desc tb_dept1;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int         | NO   | PRI | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    | loc   | varchar(50) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> ALTER TABLE tb_dept1 CHANGE loc location VARCHAR(60);
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tb_dept1;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int         | NO   | PRI | NULL    |       |
    | name     | varchar(30) | YES  |     | NULL    |       |
    | location | varchar(60) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql>


    4:添加字段


    ALTER TABLE <表名>  ADD   <新字段名> <数据类型>  [约束条件]  [FIRST| AFTER 已存在字段名]  ;
    -----新字段名为:需要添加的字段名称。first 为可选参数,其作用是将新增加的字段设置为表的第一个字段。after 为可选参数。其作用是将添加的字段增加到指定的“已存在字段”的后面






  • 相关阅读:
    Sass:@error
    Sass @warn
    Sass @debug
    Sass:@at-root
    Sass-@extend
    sass @import 规则
    Opacity函数-transparentize()、 fade-out()函数
    Sass函数:Opacity函数-opacify()、fade-in()函数
    Sass-Opacity函数-rgba()函数
    学习笔记97—matlab 获取矩阵中特定值的坐标
  • 原文地址:https://www.cnblogs.com/ios9/p/13205254.html
Copyright © 2011-2022 走看看