MySQL 数据库基础入门

MySQL 数据库基础入门

一、简介:

1.数据:

数据就是数据库中存储的基本对象,比如数字1,2,3,4,5,6等,就是简单的一种数据。准备的说:描述事物的符号记录称为数据(描述符号可以是数字、文字、图像、声音等),它们都可经过数字化存入计算机

2.数据库:

数据库就是存放数据的仓库,这个仓库是在计算机存储设备上,并按一定的格式存放。

数据库三个基本特点:

1.永久存储:长期存储在计算机内

2.有组织:数据按一定的数据模型组织进行存储

3.可共享:只要每个用户连接到数据库,都可以共享此数据

3.数据库管理系统(DBMS):

数据库管理系统是位于用户和操作系统之间的一层数据管理软件

4.数据库系统(DBS):

数据库系统:在计算机系统中引入数据后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员构成

一般情况我们都称数据库系统为数据库。

二、关系型数据库与非关系型数据库:

1.关系型数据库:

关系型数据库:数据结构是表,由二维表联系所组成的一个数据组织

常用的关系型数据库:

1.Oracle Datebase:甲骨文公司的数据库管理系统

2.SQL Server:微软公司的数据库管理系统

3.DB2:IBM 公司的数据库管理系统

4.PostgreSQL:开源的数据库管理系统

5.MySQL:开源的数据库管理系统

1.1.优点:

1.体积较小;

2.成本较低;

3.开源;

4.使用方便;

5.支持复杂查询;

6.易于维护;

7.支持多种操作系统;

8.支持多种语言连接操作;

1.2.分析优点:

1.MySQL 的核心程序采用完全的多线程编程,线程是轻量级的进行,它可以灵活为用户提供服务。用多线程和C语言实现的mysql能很容易充分利用CPU

2.MySql有一个非常灵活而且安全的权限和口令系统。当客户端与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证

3.支持大型的数据库, 可以方便地支持上千万条记录的数据库

4.拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。

5.MySQL可用于Unix,Windows,以及OS/2等平台。

1.3.缺点:

1.若海量数据时,读写性能较差;

2.固定的表结构,灵活度较差;

3.高并发读写需求,硬盘I/O是很大瓶颈;

2.非关系型数据库:

非关系型数据库:严格说并不是一种数据库,而是一种数据结构化存储方法的集合,可以是文档或键值对

常用的非关系型数据库:

1.Redis;

2.MongoDB;

2.1.优点:

1.格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等;

2.速度快:非关系型数据库可以使用硬盘或内存作为载体,而关系型数据库只能使用硬盘;

3.高扩展性;

4.成本低:部署简单;

2.2.缺点:

1.不提供SQL语句支持,学习和使用成本较高;

2.数据结构相对复杂,面对复杂查询不是很友善;

三、SQL简介:

1:什么是SQL?

SQL:是用来操作数据的一种语言

简单理解:数据库中的数据,都是放在硬盘上,连接数据库之后,需要使用SQL语言指定地告诉它,需要什么样的数据。

2:SQL功能:

1.数据查询:select

2.数据定义:create、drop、alter

3.数据操纵:insert、update、delete

4.数据控制:grant、revoke

四、数据库、表基本操作:

1.数据库操作:

查看所有库show databases;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| fe_cow             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec

选库语句use [库名]

mysql> use fe_cow;
Database changed

创建数据库create database [数据库名] charset [utf8 字符集]

mysql> create database student charset utf8;
Query OK, 1 row affected (0.02 sec)
# 查看新建的数据库:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| fe_cow             |
| mysql              |
| performance_schema |
| student            |  # 新建的数据库
| sys                |
+--------------------+
6 rows in set (0.00 sec)

删除数据库drop database [数据库名]

# 此操作需谨慎!!!
mysql> drop database student;
Query OK, 0 rows affected (0.08 sec)

数据库改名:Mysql中,表/列可以改名,但是数据库不能改名

2.数据库下表操作:

查看所有表show tables;

mysql> show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| class             |
+-------------------+

创建表create table [指定表名] (设置表字段) engine [指表引擎] charset [字符集]

mysql> create table class (id int, name varchar(10))engine myisam charset utf8;
Query OK, 0 rows affected (0.03 sec)

# 查看新创建的表:
mysql> show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| class             |
+-------------------+
1 row in set (0.00 sec)

修改表名rename table [老表名] to [新表名]

mysql> rename table class to new_class;
Query OK, 0 rows affected (0.01 sec)

# 查看当前表:
mysql> show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| new_class         |
+-------------------+
1 row in set (0.00 sec)

查看表结构desc [表名]

mysql> desc new_class;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)

修改表结构alter table [指定表名] add [新增字段名] (设置数据类型)

mysql> desc class;
# 查看表现有结构
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(10) | YES  |     | NULL    |       |
| gender | char(6)     | YES  |     | NULL    |       |
| age    | int(2)      | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)

# 给class 表增加字段名为nickname 类型属于varchar类型
mysql> alter table class add nickname varchar(20);
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0

# 查看目前表的结构
mysql> desc class;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(10) | YES  |     | NULL    |       |
| gender   | char(6)     | YES  |     | NULL    |       |
| age      | int(2)      | YES  |     | NULL    |       |
| nickname | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

删除表drop table [表名]

mysql> drop table new_class;
Query OK, 0 rows affected (0.01 sec)

# 查看表:
mysql> show tables;
Empty set (0.00 sec)

清空表数据truncate [表名]

mysql> truncate class;
Query OK, 0 rows affected (0.03 sec)

删除表数据delete from [表名]

mysql> delete from class ;
Query OK, 2 rows affected (0.01 sec)   # 2 rows 表示删除数据的行数

truncate和delete区别

truncate 相当于删除表,再重新创建一张同样结构的表,操作之后得到一张全新的表。

delete 相当于从删除所有的层面来操作。

如果表中的主键是自增型的,使用truncate的话,主键ID从1开始记起;

若决定清空表中数据的话,建议使用truncate,速度会更快一些

五、增删改查(CURD)基本操作:

1.增:

值与列,按顺序一一对应

技巧:

1.插入那张表?  insert into [表名]
2.插入那几列?  (列1,2, 列n)
3.这几列分别插入什么值?  values(1,2,值n)

增加insert into [表名] (列1, 列2, 列n) values(值1,值2,值n)

插入部分列:

# 仅仅插入名字和年龄的数据:
mysql> insert into class (name, age) values('ali', 10);
Query OK, 1 row affected (0.01 sec)

# 查看表中数据:
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | NULL   |   10 |
+------+------+--------+------+
1 row in set (0.00 sec)

插入所有列:

# 往class 表中插入所有列的数据
mysql> insert into class (id, name, gender, age) values(2, 'pig', 'sex', 10);
Query OK, 1 row affected (0.01 sec)

# 查看当前表中的数据
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | NULL   |   10 |
|    2 | pig  | sex    |   10 |
+------+------+--------+------+
2 rows in set (0.00 sec)

简写插入所有列的写法:

# 所有列的写法
mysql> insert into class values(3, 'she', 'sex', 12);
Query OK, 1 row affected (0.01 sec)

# 查看表中数据:
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | NULL   |   10 |
|    2 | pig  | sex    |   10 |
|    3 | she  | sex    |   12 |
+------+------+--------+------+
3 rows in set (0.00 sec)

批量插入:

mysql> insert into class values(3, 'she', 'sex', 12), (4, 'her', 'sex', 13), (5, 'it', 'sex', 15);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

# 查看表中数据:
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | NULL   |   10 |
|    2 | pig  | sex    |   10 |
|    3 | she  | sex    |   12 |
|    3 | she  | sex    |   12 |
|    4 | her  | sex    |   13 |
|    5 | it   | sex    |   15 |
+------+------+--------+------+
6 rows in set (0.00 sec)

2.改:

技巧:

1.改哪张表? update [表名]
2.改哪几列的值? set1 = 新值1
3.在哪列进行更改? where 列1 =1

更改update [表名] set 列1 = 新值1 where [表达式]

注意:更改操作的时候,不指定WHERE [表达式]的话,会将整个表中列对应的值进行更改

# 先查看表中数据:
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | NULL   |   10 |
|    2 | pig  | sex    |   10 |
|    3 | she  | sex    |   12 |
|    3 | she  | sex    |   12 |
|    4 | her  | sex    |   13 |
|    5 | it   | sex    |   15 |
+------+------+--------+------+
6 rows in set (0.00 sec)

# 使用WHERE 后面的表达式, 进行更改:
mysql> update class set gender = 'woman';
Query OK, 6 rows affected (0.01 sec)
Rows matched: 6  Changed: 6  Warnings: 0

# 查看当前表中数据, 可以看出将所有gender列中的值, 进行更改:
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | woman  |   10 |
|    2 | pig  | woman  |   10 |
|    3 | she  | woman  |   12 |
|    3 | she  | woman  |   12 |
|    4 | her  | woman  |   13 |
|    5 | it   | woman  |   15 |
+------+------+--------+------+
6 rows in set (0.00 sec)

指定更改:

# 将class表中,age=10, 将gender列对应的值更改为'man'
mysql> update class set gender = 'man' where age = 10;
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

# 查看当前表中的值:
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | man    |   10 |
|    2 | pig  | man    |   10 |
|    3 | she  | woman  |   12 |
|    3 | she  | woman  |   12 |
|    4 | her  | woman  |   13 |
|    5 | it   | woman  |   15 |
+------+------+--------+------+
6 rows in set (0.00 sec)

3.查:

技巧:

1.查哪张表的数据? 
2.查哪些列的数据?
3.查哪些行的数据?

select 列1, 列2, 列n from [表名] where [表达式]

查询整张表,所有列的数据:

# 查看class表中所有的列的数据
mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
| NULL | ali  | man    |   10 |
|    2 | pig  | man    |   10 |
|    3 | she  | woman  |   12 |
|    3 | she  | woman  |   12 |
|    4 | her  | woman  |   13 |
|    5 | it   | woman  |   15 |
+------+------+--------+------+
6 rows in set (0.00 sec)

查询该表,将指定列的数据进行返回:

# 查询class表中, name 跟age 列的数据, 并且满足 age > 10的数据:
mysql> select name, age from class where age > 10 ;
+------+------+
| name | age  |
+------+------+
| she  |   12 |
| she  |   12 |
| her  |   13 |
| it   |   15 |
+------+------+
4 rows in set (0.00 sec)

4.删:

技巧:

1.从哪张表删除数据?
2.要删除哪些行?

删除delete from [表名] where [表达式]

删除表达式为真的数据:

# 删除class表中, age = 10 的数据
mysql> delete from class where age = 10;
Query OK, 2 rows affected (0.01 sec)

mysql> select * from class;
+------+------+--------+------+
| id   | name | gender | age  |
+------+------+--------+------+
|    3 | she  | woman  |   12 |
|    3 | she  | woman  |   12 |
|    4 | her  | woman  |   13 |
|    5 | it   | woman  |   15 |
+------+------+--------+------+
4 rows in set (0.00 sec)

删除该表中所有的数据:

# 不设置表达式,执行该命令会将表中所有的数据进行删除
mysql> delete from class;
Query OK, 4 rows affected (0.01 sec)

mysql> select * from class;
Empty set (0.00 sec)

注意:对数据进行删除、修改时需要加以小心

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值