Mysql review notes - Basics 6 [Database basics]

  • System environment MAC OS 10.10
  • MySQL version, 5.7.9

Installing mysql on Mac is very simple. Download the installation package from the official website and double-click the installation. There are several places to pay attention to

When installing mysql with DMG package on Mac, a root password will be randomly assigned in the last step after installation. Remember the password. After installation, log in with root, but the password is expired. By default, the valid period of mysql password is 360 days and needs to be changed again. For details, see Password Expiration Policy .

The basic SQL statements mainly come from SQL in 10 Minutes, Sams Teach Yourself This book, this book provides practice forms, Table content download

Basic concept

  • Database: save an organized database.
  • Table: a resulting list of specific types of data.

The data stored in a table is a type of data or a list of data

  • Schema is about the layout and characteristics of databases and tables
  • Column is a field in a table, so the table is not composed of one or more columns.

The last way to understand columns is to imagine a network in which each column stores a specific information.

  • The data type allowed by the data type. Each category has a corresponding data type, which is used to limit the types allowed in the column
  • Row: the data in the table is stored by row. Imagine the table as a network, with vertical columns and horizontal rows.
  • Primary key: each row in the table should have a column that can uniquely identify itself. In a column, the value that can uniquely identify each row in the table. The design table should always be designed with a primary key. The conditions set to hide the primary key are:
    • Any two lines have the same value
    • Each row must have a primary key value
    • The value in the primary key column cannot be modified or updated
    • Primary key values cannot be reused.

Sample table

Create a sample table for practice. There are 5 tables in total. The content and purpose of the table

  • Manage suppliers
  • Manage product catalogs
  • Manage customer list
  • Enter customer order

Create a new database

mysql> CREATE DATABASE SQL_Learning;
Query OK, 1 row affected (0.01 sec)

Create a new Vendors table to store suppliers selling products.

Switch to the database first

mysql> USE SQL_Learning;
Database changed

mysql> CREATE TABLE Vendors
    -> (
    ->   vend_id      char(10) NOT NULL ,
    ->   vend_name    char(50) NOT NULL ,
    ->   vend_address char(50) NULL ,
    ->   vend_city    char(50) NULL ,
    ->   vend_state   char(5)  NULL ,
    ->   vend_zip     char(10) NULL ,
    ->   vend_country char(50) NULL
    -> );
Query OK, 0 rows affected (0.08 sec)
  • NOT NULL means that the value cannot be empty
  • char(10) holds a fixed length string, where 10 strings are specified
  • vend_id primary key

The Products table contains a catalog of Products

mysql> CREATE TABLE Products
    -> (
    ->   prod_id    char(10)      NOT NULL ,
    ->   vend_id    char(10)      NOT NULL ,
    ->   prod_name  char(255)     NOT NULL ,
    ->   prod_price decimal(8,2)  NOT NULL ,
    ->   prod_desc  text          NULL
    -> );
Query OK, 0 rows affected (0.03 sec)
  • prod_id primary key
  • vend_id foreign key, associated with supplier ID
  • decimal(8,2) is a DOUBLE type stored as a string, allowing fixed decimal points.

Create Customers table

mysql> CREATE TABLE Customers
    -> (
    ->   cust_id      char(10)  NOT NULL ,
    ->   cust_name    char(50)  NOT NULL ,
    ->   cust_address char(50)  NULL ,
    ->   cust_city    char(50)  NULL ,
    ->   cust_state   char(5)   NULL ,
    ->   cust_zip     char(10)  NULL ,
    ->   cust_country char(50)  NULL ,
    ->   cust_contact char(50)  NULL ,
    ->   cust_email   char(255) NULL
    -> );
Query OK, 0 rows affected (0.05 sec)
  • cust_id primary key

Create the Orders table, one product per row

mysql> CREATE TABLE Orders
    -> (
    ->   order_num  int      NOT NULL ,
    ->   order_date datetime NOT NULL ,
    ->   cust_id    char(10) NOT NULL
    -> );
Query OK, 0 rows affected (0.04 sec)
  • order_num primary key
  • cust_id foreign key, associated with customer ID

The OrderItems table stores the actual items for each order.

mysql> CREATE TABLE OrderItems
    -> (
    ->   order_num  int          NOT NULL ,
    ->   order_item int          NOT NULL ,
    ->   prod_id    char(10)     NOT NULL ,
    ->   quantity   int          NOT NULL ,
    ->   item_price decimal(8,2) NOT NULL
    -> );
Query OK, 0 rows affected (0.02 sec)
  • order_num order number, which is associated with the order in the Orders table_ num
  • order_item order item number,
  • prod_id product ID
  • Quantity product quantity
  • item_price product price

Create primary key

ALTER TABLE Customers ADD PRIMARY KEY (cust_id);
ALTER TABLE OrderItems ADD PRIMARY KEY (order_num, order_item);
ALTER TABLE Orders ADD PRIMARY KEY (order_num);
ALTER TABLE Products ADD PRIMARY KEY (prod_id);
ALTER TABLE Vendors ADD PRIMARY KEY (vend_id);

Create a foreign key to point to the PRIMARY KEY of another table

ALTER TABLE OrderItems ADD CONSTRAINT FK_OrderItems_Orders FOREIGN KEY (order_num) REFERENCES Orders (order_num);
  • Put the order in the OrderItems table_ Num is associated with order in the Orders table_ num
ALTER TABLE OrderItems ADD CONSTRAINT FK_OrderItems_Products FOREIGN KEY (prod_id) REFERENCES Products (prod_id);
  • Add prod in the OrderItems table_ ID is associated with prod in the Products table_ id
ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (cust_id) REFERENCES Customers (cust_id);
  • Put cust in the Orders table_ ID is associated with cust in the Customers table_ id
ALTER TABLE Products ADD CONSTRAINT FK_Products_Vendors FOREIGN KEY (vend_id) REFERENCES Vendors (vend_id);
  • Put the vend in the Products table_ ID is associated with the vend in Vendors_ id ```

Table insert table data directly downloads table data. You can insert a table into a table in batches.

This article code file

-- create database if not exists database_name charset 'Coding method, generally utf8';
create database if not exists SQL_Learning charset 'utf8';
-- use database_name(Database name)
use SQL_Learning;
-- drop table (if exists Does it exist) table name;
drop table if exists Vendors;

create table Vendors(
    Vendors_id char(10) not null primary key ,
    Vendors_name char(50) not null ,
    Vendors_address char(50) null,
    Vendors_city char(50) null ,
    Vendors_state char(5) null ,
    Vendors_zip char(10) null ,
    Vendors_country char(50) null
);

select * from Vendors;
-- create table if not exists Table_name(Table_Char_id type not null/null  another setting);
create table if not exists Products(
    Prod_id char(10) not null primary key ,
    Vendors_id char(10) not null ,
    Prod_name char(255) not null ,
    Prod_price decimal(8,2) not null default 0,
    Prod_desc text
);
-- grammar:alter table Table name add constraint FK_ID foreign key(Your foreign key field name) REFERENCES Appearance table name(The primary key field name of the corresponding table);
alter table Products add constraint FOREIGN KEY(Vendors_id) REFERENCES Vendors(Vendors_id);
-- show table info
select *
from Products;

Keywords: Database MySQL

Added by Bodhies on Tue, 23 Nov 2021 18:32:21 +0200