author: clever Claire
reference: Udemy - MySQL零基础从入门到精通 1-3课


目录

  • 第一节 安装mySQL
  • 安装mySQL
  • 第二节 database & table
  • database的操作
  • table的操作
  • 补充说明
  • 第三节 table中的数据
  • 插入与查看
  • 数据的特点(Null, Key, Default, Extra)


第一节 安装mySQL

APP -> DBMS -> database,mySQL是联系APP与DBMS的语言。

安装mySQL

cd /usr/local/mysql/bin
./mysql -u root -p
  • 在终端中输入退出数据库的命令行
exit

第二节 database & table

database的操作

  • 打印你的所有databases的名称
show databases;
  • 创建名为xxx的新database
create database xxx;
  • 删除名为xxx的database
drop database xxx;
  • 选择名为xxx的database作为当前database
use xxx;
  • 查看当前database的名称
select database();

新下载的mySQL会自带4个databases:information_schema,mysql,performance_schema和sys。一般不要改动它们。

table的操作

table是构成database的结构,每列都有不同的意义,每列都可以选一种数据类型。
MySQL可用数据类型可见官网文档或者网友归纳的版本

  • 打印你的所有tables的名称
show tables;
  • 创建名为xxx的新table(在此之前要先选择一个database)
create table xxx(
    id INT,					//全都以“<column_name> <data_type>,”的格式
    birth_date DATE,
    name VARCHAR(30),	
    gender ENUM("M","F"));
  • 查看名为xxx的table(以下两条结果相同,选一即可)
desc xxx;
show columns from xxx;
  • 删除名为xxx的table
drop table xxx;

补充说明

  • 以下所有命令行都使用’;'作为分界,若要更改可使用命令:
delimiter $$		//把分隔符改成$$
  • 所有的命令都随便用大小写,例如:
SHOW databases;

第三节 table中的数据

插入与查看

  • 往xxx table的特定列中插入数据
insert into xxx(name, phone, age)
values ("Zhang San", "+86 10086", 20),
		("Zhang Si", "+86 10087", 30);
insert into xxx(name, age, phone, birthday) values ("Zhang Wu", 40,  "+86 10088", "1980-1-1");

会得到

name

phone

age

birthday

Zhang San

+86 10086

20

null

Zhang Si

+86 10087

30

null

Zhang Wu

+86 10088

40

1980-1-1

  • 打印名为xxx的table的全部内容
select * from xxx
  • 打印xxx table中的name和age列
select name, age from xxx

数据的特点(Null, Key, Default, Extra)

当我们“desc xxx”时,Null那栏显示YES 表示允许该列数据为null;Default那栏显示NULL 表示该列数据初始默认为null。故不输入数据时就会出null(参考上面表格)。

  • 规定特定列不能出现null
create table xxx(name VARCHAR(20) NOT NULL, phone VARCHAR(20), age INT);

此时若insert时不输入name,由于default为null与我们规定的NOT NULL冲突,会报错误码“ERROR 1364: Field “name” doesn’t have a default value”。

  • 自定义特定列的default
create table xxx(name VARCHAR(20) DEFAULT "aaa", phone VARCHAR(20), age INT);
  • key为Primary Key的列中不能出现重复数据( 以下两条结果相同,选一即可)
create table xxx(name VARCHAR(20) , phone VARCHAR(20), age INT, PRIMARY KEY (phone));
create table xxx(name VARCHAR(20) , phone VARCHAR(20) PRIMARY KEY, age INT);

此时若insert两个相同的phone值,会报错误码“ERROR 1062: Duplicate entry for key ‘PRIMARY’”。
注意:整个table其实只允许一个Primary Key。若要定义多行primary key,只能用第一行的写法,例如:‘PRIMARY KEY(a, b)’,但此时只能避免两列a和b都相同都insert。
一旦一列设置Primary Key,它会自动Not Null。

  • key为Unique的列中不能出现重复数据
create table xxx(name VARCHAR(20) UNIQUE, id INT PRIMARY KEY);

不同与primary key,一列设置Unique,不会自动Not Null,且允许几行都为null)。

  • auto-increment的extra使每列默认为上一列+1
create table xxx(name VARCHAR(20) , id INT AUTO_INCREMENT PRIMARY KEY);

注意:想要使用auto-increment,这一列必须得有key(primary或unique)。
若id列的第一行就没有输入,就默认为1。

–未完待续–