MySQL基础篇(库/表的增删改查)

上一篇我们已经在Linux系统装好了MySQL,现在我们来熟悉一下MySQL及它的操作语句。

MySQL是一个关系型数据库管理系统MySQL 是最流行的关系型数据库管理系统之一.

设计模型:

  • E-R设计模型【E表示Entry,实体】、【R表示Relationship,关系】。
  • 一个实体转换为数据库中的一个表
  • 关系描述两个实体之间对应规则,包括一对一、一对多、多对多
  • 关系转换为数据表中的一个列*在关系型数据库中一行就是一个对象

三范式(Thread Normal Form):

  • 第一范式(1NF):列不可拆分
  • 第二范式(2NF):唯一标示
  • 第三范式(3NF):引用主键

说明:后一个范式都是在前一个范式的基础上建立的,在数据库中一行的术语叫做记录,一列叫做字段,记录和字段在分别对应关系数据库中的属性和元组

登录MySQL

bear@Bear-PC:~$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.7.21-1 (Debian)

Copyright (c) 2000, 2018, 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> select version();  /*!查看当前版本*/
+-----------+
| version() |
+-----------+
| 5.7.21-1  |
+-----------+
1 row in set (0.16 sec)

mysql> select now();      /*!显示当前时间*/
+---------------------+
| now()               |
+---------------------+
| 2018-11-17 23:27:00 |
+---------------------+
1 row in set (0.10 sec)

mysql> 

数据库操作:

查询数据库编码信息: Show variables like ‘character%’;

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

临时更改客户端和服务器结果集的编码:

Set charactersetclient=gbk;
Set charactersetresults=gbk;

查看所有数据库:show databases;

创建数据库:create database 数据库名 charset=utf8;

进入数据库:use 数据库名;

查看当前所在数据库:select database();

删除数据库:drop database 数据库名;

例:

mysql> show databases;  /*!显示所有数据库*/
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydata             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> create database python charset=utf8; /*!创建名为:python的数据库*/
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydata             |
| mysql              |
| performance_schema |
| python             | --------> 刚刚创建的python数据库
| sys                |
+--------------------+
6 rows in set (0.00 sec)

mysql> use python;  /*!使用python数据库*/
Database changed
mysql> select database();  /*!查看当前所在数据库*/
+------------+
| database() |
+------------+
| python     |
+------------+
1 row in set (0.00 sec)

mysql> drop database python; /*!删除python数据库*/
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydata             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

表操作:

创建表:

创建表的基本格式    -------------    create table 表名(列及类型)

列及类型包括:

字段名  数据类型(范围) 是否允许空  主键  默认值   约束

查看当前数据库中的表:show tables;

查看表结构:desc 表名;

更改表名称:rename table 原表名 to 新表名;

  • alter 方法:alter table 表名 rename to 新表名

查看表的创建语句:show table create 表名;

删除表:drop table 表名;

修改表:

  • 增加字段:alter table 表名 add  column  列名 类型     /*!此处的column可以不写*/
  • 指定位置加入字段:alter table 表名 add column 字段名 字段类型 after 某字段
  • 删除字段:alter table 表名 drop 字段名
  • 修改字段名称/类型:alter table 表名  change  旧字段名 新字段名 新字段类型
  • 一次性清空表中所有数据(该方法也会是id从1开始):truncate table 表名

例:

+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(10) | NO   |     | NULL    |                |
| gender | bit(1)      | NO   |     | b'1'    |                |
+--------+-------------+------+-----+---------+----------------+

其中:auto_increment 表示自动增长。

例:

mysql> create table student(   /*!创建student表*/
    -> id int auto_increment primary key,
    -> name varchar(10) not null,
    -> birthday datetime(6) not null,
    -> gender bit(1) default 1 not null);
Query OK, 0 rows affected (0.63 sec)

mysql>  create table students(   /*!创建students表*/
    -> id int auto_increment primary key,
    ->  name varchar(10) not null,
    -> gender bit(1) default 1 not null);
Query OK, 0 rows affected (0.27 sec)

mysql> show tables;  /*!显示所有表*/
+------------------+
| Tables_in_Python |
+------------------+
| student          |
| students         |
+------------------+
2 rows in set (0.00 sec)
mysql> desc student;   /*!查看表结构*/
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| name     | varchar(10) | NO   |     | NULL    |                |
| birthday | datetime(6) | NO   |     | NULL    |                |
| gender   | bit(1)      | NO   |     | b'1'    |                |
+----------+-------------+------+-----+---------+----------------+
mysql> desc students;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(10) | NO   |     | NULL    |                |
| gender | bit(1)      | NO   |     | b'1'    |                |
+--------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> rename table student to student_info;  /*!将student改为student_info*/
Query OK, 0 rows affected (0.82 sec)

mysql> show tables;
+------------------+
| Tables_in_Python |
+------------------+
| student_info     |
| students         |
+------------------+
2 rows in set (0.00 sec)
mysql> show create table students;  /*!查看表的创建语句*/
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                        |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students | CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) NOT NULL,
  `gender` bit(1) NOT NULL DEFAULT b'1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> drop table students;   /*!删除students表*/
Query OK, 0 rows affected (0.24 sec)
mysql> show tables;
+------------------+
| Tables_in_Python |
+------------------+
| student_info     |
+------------------+
1 row in set (0.00 sec)

mysql> alter table student_info add MathCsore int(10);  /*!增加MathScore列 类型int 长度10*/
Query OK, 0 rows affected (0.92 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student_info;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| name      | varchar(10) | NO   |     | NULL    |                |
| birthday  | datetime(6) | NO   |     | NULL    |                |
| gender    | bit(1)      | NO   |     | b'1'    |                |
| MathCsore | int(10)     | YES  |     | NULL    |                |  -------->增加的
+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> 


备份与恢复

备份(导出)

1、用户切换为超级管理员

指定库备份:

#mysqldump -uroot -p 库名 > 备份文件路径

mysqldump -uroot -p  Python > ~/Desktop/backup.sql

多个库备份:

#mysqldump -uroot -p --databases 库名 > 备份文件路径

mysqldump -uroot -p databases Python mydata > ~/Desktop/dump.sql

恢复(导入)

(1):系统命令方式:

mysql -uroot -p < 备份文件路径

(2):mysql命令行方法:

mysql> source 备份文件路径

具体数据操见下篇。。。

猜你喜欢

转载自blog.csdn.net/qq_41892229/article/details/84189643