一、登录mysql
1、先启动mysql服务
service mysql start
2、再登陆
第一种方法:
mysql -u root -p
第二种方法:
找到mysql的bin目录:
① cd /home/mysql-5.7.32/bin
② ./mysql -u root –p
root@kylin-virtual-machine:~# cd /home/mysql-5.7.32/bin/
root@kylin-virtual-machine:/home/mysql-5.7.32/bin#./mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.32 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>
输入密码,成功登录mysql。
二、数据库
1、显示数据库
show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wkl |
+--------------------+
5 rows in set (0.00 sec)
mysql>
2、删除数据库
drop database 库名;
#删除wkl库
mysql> drop database wkl;
Query OK, 2 rows affected (0.08 sec)
#再查看库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>
drop命令可以使用if exits选项判断数据库是否存在,存在即删除,不存在也不会报错。
语法:
drop database if exists 库名;
#查看库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| wkl |
+--------------------+
6 rows in set (0.00 sec)
#删除test1库
mysql> drop database if exists test1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
#test1库不存在,所以无变化
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| wkl |
+--------------------+
6 rows in set (0.00 sec)
#删除test库
mysql> drop database if exists test;
Query OK, 0 rows affected (0.00 sec)
#test库删除成功
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wkl |
+--------------------+
5 rows in set (0.00 sec)
mysql>
3、创建数据库
create database 库名;
mysql> create database wkl;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wkl |
+--------------------+
5 rows in set (0.01 sec)
mysql>
4、选择数据库
use 库名;
mysql> use wkl;
Database changed
mysql>
5、查看当前使用的是哪个数据库
select database();
mysql> select database();
+------------+
| database() |
+------------+
| wkl |
+------------+
1 row in set (0.00 sec)
mysql>
6、显示当前MYSQL版本和当前日期
select version(),current_date;
mysql> select version(),current_date;
+-----------+--------------+
| version() | current_date |
+-----------+--------------+
| 5.7.32 | 2020-11-18 |
+-----------+--------------+
1 row in set (0.06 sec)
mysql>
7、刷新数据库
flush privileges;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
三、数据表
1、显示表
show tables;
mysql> show tables;
Empty set (0.00 sec)
刚才新建的库,里面还没有表。
2、创建表
create table 表名
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
…
);
示例:
#创建test表
mysql> create table test(
-> pid int(10),
-> name varchar(20),
-> age int(10),
-> city varchar(20),
-> birth date
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>
#查看表
mysql> show tables;
+---------------+
| Tables_in_wkl |
+---------------+
| test |
+---------------+
1 row in set (0.00 sec)
mysql>
数据类型详解:
数据类型 | 字节 | 用途 | 格式 |
---|---|---|---|
int | 4 | 整数 | |
float | 4 | 单精度浮点数 | |
double | 8 | 双精度浮点数 | |
enum | - | 单选,比如性别 | enum(‘a’,‘b’,‘c’) |
set | - | 多选 | set(‘1’,‘2’,‘3’) |
date | 3 | 日期 | YYYY-MM-DD |
time | 3 | 时间点或持续时间 | HH:MM:SS |
year | 1 | 年份值 | YYYY |
char | 0~255 | 定长字符串 | |
varchar | 0~65535 | 变长字符串 | |
text | 0~65535 | 长文本数据 |
char,varchar,text,date,time,enum 等类型的数据需要用单引号修饰, int,float,double 等则不需要。
varchar跟char的区别:
varchar(M):VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。varchar存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
char(M):CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间,当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。
约束:
NOT NULL:
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 “Id_P” 列和 “LastName” 列不接受 NULL 值:
create table Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
3、查看表结构
desc 表名;
mysql> desc test;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| pid | int(10) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(10) | YES | | NULL | |
| city | varchar(20) | YES | | NULL | |
| birth | date | YES |