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
-
点这里选择你的系统和想要的版本并下载 上面的链接其实就是:官网 -> download -> MySQL Community (GPL) Downloads -> MySQL Community Server
(想安装mysql 5.7版没找到,我就安装了8.0 TAT) - 在终端中输入进入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。
–未完待续–