带你了解MySQL数据库的基础操作及用户管理!

Posted 龙少。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你了解MySQL数据库的基础操作及用户管理!相关的知识,希望对你有一定的参考价值。

一.数据库的基本命令

1.登录数据库

指定登录用户和密码登录数据库

[root@server ~]# mysql -uroot -pqwer1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \\g.
Your MySQL connection id is 7
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, 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>

2.查询库

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

3.进入使用库

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

4.查询表

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

5.查询库结构或者表结构

describe 数据库名
describe 表名
describe可以简写desc

mysql> describe user;

在这里插入图片描述

字段说明
Field:字段名称;比如姓名、年龄、身高、体重

Type:数据类型/属性

Null :是否允许为空

Key :主键

Default :默认值;默认值可以设为空

Extra :扩展属性,例如:标志符列(标识了种子(起始位置),增量/步长)
比如我的种子是1,增量/步长是2,那就是1 3 5 7 …

6.退出数据库

exit或者quit

mysql> exit
Bye
[root@server ~]#

二.常用的数据类型

int: 整型
用于定义整数类型的数据

float:单精度浮点4字节32位
准确表示到小数点后六位

double:双精度浮点8字节64位
loat的双倍

char:固定长度的字符类型
用于定义字符类型数据;比如:手机号码char(11)

varchar: 可变长度的字符类型 ,设置上限
比如:varchar(11)字符上限11个

text: 文本

image:图片

decimal(5,2): 5个有效长度数字,小数点后面有2位
指定长度数组;比如:若为12345.899和1 2345.891会显示12345.90和12345.89;四舍五入

Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
说明:截取:四舍五入 ;截断:不四舍五入

三.主键和外键

1.主键

数据表中的每行记录都必须是唯一的,而不允许出现相同的记录,通过定义主键可以保证记录(实体)的唯一性。

键,就是关键字,它是关系模型中一个非常重要的元素。

主键唯一标识表中的行数据,一个主键值对应一行数据。

主键由一个或者多个字段组成,其值具有唯一性,不允许取控制(NULL)。

一个表只能有一个主键。

2.外键

如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。

外键是用于建立和加强两个表数据之间的链接的一列或多列。

一个关系数据库通常包含多个表,通过外键可以使这些表关联起来。

3.主键表和外键表的理解

以公共关键字作主键的表为主键表(父表、主表)

以公共关键字作外键的表为外键表(从表、外表)

说明
与外键关联的主表的字段必须设置为主键。要求从表不能是临时表。
主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。

4.主表从表以及主键外键的创建

mysql> create table yy1 (hobid int(4),hobname varchar(50));
Query OK, 0 rows affected (0.00 sec)						#创建主表yy1

mysql> create table yy2 (id int(4) primary key auto_increment,name varchar(10),age int(3),hobid int(4));
Query OK, 0 rows affected (0.00 sec)						#创建从表yy2

mysql> alter table yy1 add constraint PK_hobid primary key(hobid);
Query OK, 0 rows affected (0.01 sec)						#主表添加主键约束,constraint表示约束
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table yy2 add constraint FK_hobid foreign key(hobid) references yy1(hobid);
Query OK, 0 rows affected (0.01 sec)						#从表添加外键,并且将2表的hobid字段建立外键关联
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table yy2;								#查看外键关联

在这里插入图片描述

mysql> desc yy1;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| hobid   | int(4)      | NO   | PRI | NULL    |       |
| hobname | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> desc yy2;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(4)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
| age   | int(3)      | YES  |     | NULL    |                |
| hobid | int(4)      | YES  | MUL | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

说明:
插入新的数据时要先插入主表,再插入从表

删除数据时要先删除从表再删除主表,就是说要删除主键表时必须先删除其他与之相关联的表

如果要删除外键约束字段,要先删除外键约束,再删除外键名

四.MySQL中常见的约束

(1)主键约束(primary key)

(2)外键约束(foreign key)
作用:误删,修改时可以保证数据的完整性和一致性

(3)非空约束(not null)

(4)唯一性约束(unique [ key l index] )

(5)默认值约束(default)

(6)自增约束(auto_increment)

五.数据库的增删改查SQL语句

Structured Query Language的缩写,即结构化查询语言;关系型数据库的标准语言,用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能(增、删、改、查),分为以下四类:

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

1.DDL:数据定义语言

(1)创建数据库和表

① 创建新的数据库

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

mysql> create database kk;				#创建新的数据库
Query OK, 1 row affected (0.01 sec)

mysql> show databases;					##查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kk                 |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

② 创建新的表

mysql> use kk;			                    #进入库使用库
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table test1(id int not null,name char(12)not null,score decimal(5,2),passwd char(48) default'',primary key(id));					#创建表
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;							#查看表
+--------------+
| Tables_in_kk |
+--------------+
| test1        |
+--------------+
1 row in set (0.00 sec)


mysql> desc test1;   						#查看表结构
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int(11)      | NO   | PRI | NULL    |       |
| name   | char(12)     | NO   |     | NULL    |       |
| score  | decimal(5,2) | YES  |     | NULL    |       |
| passwd | char(48)     | YES  |     |         |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

(2)删除数据库和表

① 删除表
使用use在库的情况下使用drop table 表名;
没有用use在库的情况下使用drop table 数据库名.表名;

mysql> drop table test1;			#删除表test1
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)

② 删除库
drop database 数据库名;

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

mysql> drop database kk;				#删除库kk
Query OK, 0 rows affected (0.01 sec)

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

2.DML:数据操纵语言

(1)insert 插入新数据

mysql> show tables
    -> ;
+----------------+
| Tables_in_koko |
+----------------+
| test1          |
+----------------+
1 row in set (0.00 sec)

mysql> insert into test1(id,name,score,passwd) values(1,'zhangsan',86.5,password('123456'));

#插入新数据,说明:password('123456')表示查询数据记录时密码字串以加密形式显示;若使用password()表示查询时以明文显示

Query OK, 1 row affected, 1 warning (0.01 sec)				

mysql> seelect * from test1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'seelect * from test1' at line 1
mysql> select * from test1;									#查看表里数据内容
+----+----------+-------+-------------------------------------------+
| id | name     | score | passwd                                    |
+----+----------+----<

以上是关于带你了解MySQL数据库的基础操作及用户管理!的主要内容,如果未能解决你的问题,请参考以下文章

美女DBA带你了解PostgreSQL用户及角色

简单粗暴!带你零基础快速入门MySQL数据库

一文带你了解大数据技术之HDFS

Linux下Mysql数据库的基础操作

一篇文带你从0到1了解建站及完成CMS系统编写

MySQL数据库基础及sql命令了解