MySQL数据库的基本操作 - 墨殇浅尘
MySQL的基本指令操作
Contents
- 数据库简介
- Windows系统下操作MySQL
- 数据库的连接
- MySQL初体验(查看数据库,表,数据,表结构,用户的信息)
- MySQL基本操作指令(增、删、改、查)
- 数据库: 数据库是一些关联表的集合。.
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格(excel)。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余可以使系统速度更快。(表的规范化程度越高,表与表之间的关系就越多;查询时可能经常需要在多个表之间进行连接查询;而进行连接操作会降低查询速度。例如,学生的信息存储在student表中,院系信息存储在department表中。通过student表中的dept_id字段与department表建立关联关系。如果要查询一个学生所在系的名称,必须从student表中查找学生所在院系的编号(dept_id),然后根据这个编号去department查找系的名称。如果经常需要进行这个操作时,连接查询会浪费很多的时间。因此可以在student表中增加一个冗余字段dept_name,该字段用来存储学生所在院系的名称。这样就不用每次都进行连接操作了。)
- 主键:主键是唯一的。一个数据表中只能包含一个主键。可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL数据库
MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
Windows系统下操作MySQL
本文主要以Windows下,在CMD命令窗口下对MySQL进行操作。
打开命令提示符CMD,在CMD中对MySQL进行操作(也可以利用Xshell脚本进行操作)。
1. MySQL初体验
1)如果是刚安装后的MySQL,默认情况下MySQL服务器的密码为空。
只需要输入mysql命令便可以连接到数据库
1
|
[root@host] mysql
|
2) 如果MySQL中已经包含用户名,密码,便需要通过以下命令来连接到MySQL服务器。如图所示,当成功连接到MySQL服务器时,会输出 mysql>提示符。(命令中u表示username用户名,root为用户名;p表示password密码,应注意-和p连接,否则会连接失败)
1 C:\WINDOWS\system32>mysql -u root -p 2 Enter password: ******
2. MySQL数据库的基本操作(注意:此后大多命令操作的结尾都需要加 “ ;”)
1 show databases; # 显示有哪些数据库
2) 当知道有哪些数据库后,使用其中某一个数据库指令
1 use mysql; # 使用其中一个名字叫做MySQL 的数据库
可以看到数据库的change。
3) 显示数据库中有哪些表
1 show tables;
此时,将会显示出名为mysql的这个数据库中包含有哪些存储列表。
4) 显示表的结构,即表的行,列 以及各自的类型,属性等信息(desc可理解为描述的意思,describe)
1 desc user; #(user是mysql中的一个表)
5) 查看表中的数据
select *from user\G; #\G 可以让显示的信息调理
6) 查看当前已有的用户
1 select user from user; (第一个user是上图中user表中的user数据,第二个user是user表)
3. MySQL基本操作指令(增、删、改、查)
在对MySQL有一个初体验后,接下来对MySQL的增删改查进行一步步的探索。
1) 创建数据库
在进行一个新的项目开发时,需要建立一个新的、独立的数据库来存放信息。
1 create database oldboydb charset utf8;
oldboydb为创建新的数据库的名称,charset utf8 为采用uft-8的方式进行编码,能显示中文噢(默认是拉丁语系,只能显示英文),如果对中文没有特殊要求,此处可省略。
此时,再使用show databases;指令显示数据库,可以看到我们新建的数据库oldboydb。
2) 删除数据库
1 drop database oldboydb; #但一般不要删除数据库
3) 创建表
前面介绍过,数据库实际上就是一些关联表的集合,创建了数据库之后,再创建表来存储数据信息。
1 create table student( 2 id int auto_increment, 3 name char(32) not null, 4 age int not null, 5 primary key(id) 6 );
在创建表时,需要包含以下信息:
- 表的名称;
- 表中各列的列名、属性、
- 主键的声明(一个表只能有一个主键)
解释:上述代码中,student为表的名称;
int为整型;
auto_increment表示自增(因为id是一个序号,希望他自动添加);
not null 表示非空;
primary key 为主键声明;
其余的 id, name, age为表的列名。
4) 写入数据
在创建了合适的表之后,就可以往数据库中写数据。
1 insert into student(name, age) values("张三",18);
5) 显示表中的数据信息
写入数据后,当需要查询时,可以显示表中的数据。
1 select *from student;
6) 数据库的查询
当数据量特别大时,便不能直接显示整个表,需要有条件的查询。
1 select *from student limit 2 offset 1; # 除了第一个以外 后面的2个
多条件查询(where关键字)
1 select *from student where id>3; # id>3的数据 2 select *from student where id>3 and age<20; 3 select *from student where register_data like "2018-08%"; # 查询某月的数据
7) 修改数据
当数据发生了变化,需要对已有的数据进行更改
1 update student set name = "Du Yawei", age=26 where id =2; # 将id为2的姓名,年龄进行修改
8) 删除数据
1 drop from student where name = "Du Yawei"; # 也可以通过别的方式删除
9) 排序
通过某种方式来实现排序。
1 select *from student order by id desc; # 通过id的降序排序 (ASC升序)
10) 统计group by
1 select name, count(*) from student group by name;
11) 修改表的本身 (alter关键字)
新增字段;删除字段;修改字段;修改字段属性
1 alter table student add sex enum("M","F"); # 新增字段sex 2 alter table student drop sex; #删除字段sex 3 alter table student change sex gender char(32) default "X"; # 将名为sex的字段改为gender, 并设置其格式为char(32) 默认为X 4 alter table student modify sex enum("M","F") not null;
12) 外键的使用
所谓外键(MUL),就是建立多个表之间的关联性。
1 create table study_record( 2 id int auto_increment not null, 3 day int not null, 4 status char(32) not null, 5 stu_id int not null, 6 primary key(id), 7 key fk_student_key(stu_id), 8 constraint fk_student_key foreign key(stu_id) references student(id) 9 );
7-8行为外键建立的声明