带你了解MySQL数据库的基础操作及用户管理!
Posted 龙少。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你了解MySQL数据库的基础操作及用户管理!相关的知识,希望对你有一定的参考价值。
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数据库的基础操作及用户管理!的主要内容,如果未能解决你的问题,请参考以下文章