MySQL数据库概述与基础操作

数据库的概念

数据
1、描述事物的符号记录
2、包括数字,文字、图形、图像、声音、档案记录等
3、以“记录”形式按统一的格式进行存储


1、将不同的记录组织在一起
2、用来存储具体数据

数据库
1、表的集合,是存储数据的仓库
2、以一定的组织方式存储的相互有关的数据集合

数据库管理系统(DBMS)
是实现数据库资源有效组织、管理和存取的系统软件

数据库系统
1、是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
2、用户可以通过DBMS或应用程序操作数据库

当今主流数据库介绍

1、SQL Server(微软产品)
面向windows操作系统;简单、易用

2、Oracle(甲骨文公司产品)
面向所有主流产品;安全、完善,操作复杂

3、DB2(IBM公司产品)
面向所有主流平台;大型、安全、完善

4、MySQL(甲骨文公司收购)
免费、开源、体积小

关系数据库

1、三要素:实体、属性、关系
实体:实例,数据对象,现实生活中特定的事件或事物
属性:实体的特征
联系:实体间的联系
2、所有实体及实体之间联系的集合构成一个关系数据库

3、关系数据库的存储结构是二维表格
在每个二维表中
每一行成为一条记录,用来描述一个对象的信息
每一列成为一个字段,用来描述对象的一个属性

非关系数据库介绍

1、非关系数据库也被称为NoSQL(Not only SQL)
2、存储数据不易关系模型为依据,不需要固定的表格式
3、非关系型数据库的优点
(1)数据库可高并发读写
(2)对海量数据高效率存储与访问
(3)数据库具有高扩展性与高可用性

MySQL数据库介绍

1、一款深受欢迎的开源关系型数据库
2、Oracle旗下的产品
3、遵守GPL协议,可以免费使用与修改
4、特点
(1)性能卓越、服务稳定
(2)开源、无版权限制、成本低
(3)多线程、多用户
(4)基于C/S(客户端/服务器)架构
(5)安全可靠

MySQL商业版与社区版

1、MySQL商业版是由MySQL AB公司负责开发与维护。需要付费才能使用
2、MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用。

SQL语句概述

SQL语言

1、structured query language的缩写,即结构化查询语言
2、关系型数据库的标准语言
3、用户维护管理数据库
包括数据查询、数据更新、访问控制、对象管理等功能

SQL分类

DDL(数据定义语言):用来建立数据库、数据库对象和定义字段,如create、alter、drop。
DML(数据操作语言):用来插入、删除和修改数据库中的数据,如insert、update、delete。
DQL(数据查询语言):用来查询数据库中的数据,如select。
DCL(数据控制语言):用来控制数据库组件的存取许可、存取权限等,如commit、rollback、grant、revoke。

MySQL操作管理命令

查看数据库结构

1、查看数据库们——show databases
2、进入某个数据库——use 数据库名
3、查看数据库中的表们——show  tables
4、显示表的结构(字段)——describe 表名
附:
(1)若未进入对应数据库中,显示表的结构(字段)——describe 数据库名.表名
(2)describe 表名=desc 表名         

DDL操作命令(定义)

1、创建一个数据库:create database 数据库名
2、创建一个数据表:create table 表名(字段定义01、字段定义02…)
字段定义(名称+类型+约束)
(1)名称:属性名称,自定义
(2)类型:
整数型:int(5)  00000-99999
小数型:decimal(5,2) 有效数字是5位 小数点后面保留2100.00 
固定长度字符串:char(255) 
可变长度字符串:varchar(65535)3)约束:
非空约束(not null):内容不允许为空 
主键约束(primary key):非空且唯一标识 
默认值(default):假如没有填数据,默认预先设定的值填写 
自增特性(auto_increment): id 1234 
3、添加表中的一列:alter table 数据表名 add column (字段定义)
4、删除某个数据库:drop database 数据库名
5、删除某个数据表:drop table 数据表名

###示例:
mysql> create database aaa;  # 创建一个“aaa”的数据库
Query OK, 1 row affected (0.00 sec)

mysql> use aaa; #进入“aaa”数据库
Database changed

mysql> create table test (id int(3) auto_increment primary key,age int(3) not null,name varchar(100) not null,score decimal(5)); #创建一个“test”表,包含id、age、name、score
Query OK, 0 rows affected (0.02 sec)

mysql> describe test; #显示表结构
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(3)       | NO   | PRI | NULL    | auto_increment |
| age   | int(3)       | NO   |     | NULL    |                |
| name  | varchar(100) | NO   |     | NULL    |                |
| score | decimal(5,0) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
4 rows in set (0.02 sec)

mysql> alter table test add column addr int(3); #增加一列“addr”
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test; #显示表结构
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(3)       | NO   | PRI | NULL    | auto_increment |
| age   | int(3)       | NO   |     | NULL    |                |
| name  | varchar(100) | NO   |     | NULL    |                |
| score | decimal(5,0) | YES  |     | NULL    |                |
| addr  | int(3)       | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

mysql> create database AAA; #创建一个“AAA”数据库
Query OK, 1 row affected (0.00 sec)

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

mysql> create table bbb(name char(50) not null,tel int(11) not null);
Query OK, 0 rows affected (0.00 sec)

mysql> show tables; #查看数据表们
+---------------+
| Tables_in_aaa |
+---------------+
| bbb           |
| test          |
+---------------+
2 rows in set (0.00 sec)

mysql> drop database AAA; #删掉“AAA”这个数据库
Query OK, 0 rows affected (0.00 sec)

mysql> drop table bbb; #删除“bbb”这个数据表
Query OK, 0 rows affected (0.00 sec)

DML操作命令(管理)

1、insert:插入新数据
insert into 表名(字段1,字段2,…)values(字段1的值,字段2的值,…)
2、update:更新原有数据
3delete:删除不需要的数据

###示例:
mysql> insert into test(age,name,score,addr) values(17,'zhangsan',80,101),(18,'lisi',90,102),(17,'wangwu',78,101),(18,'zhaoliu',98,102);  #给表“test”插入数据
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select *  from test; #查看“test”表的所有内容
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  1 |  17 | zhangsan |    80 |  101 |
|  2 |  18 | lisi     |    90 |  102 |
|  3 |  17 | wangwu   |    78 |  101 |
|  4 |  18 | zhaoliu  |    98 |  102 |
+----+-----+----------+-------+------+
4 rows in set (0.00 sec)

mysql> update test set score=85 where name='zhangsan';  #更新表中“zhangsan”的“score”
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> delete from test where name='zhaoliu';  #删除表中“zhaoliu”的数据
Query OK, 1 row affected (0.01 sec)

mysql> select * from test; 
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  1 |  17 | zhangsan |    85 |  101 |
|  2 |  18 | lisi     |    90 |  102 |
|  3 |  17 | wangwu   |    78 |  101 |
+----+-----+----------+-------+------+
3 rows in set (0.00 sec)

附:不带where条件的语句表示更新或删除表中所有记录(谨慎操作)

DQL操作命令(查询)

select:用于从数据表中查找符合条件的数据记录
select 字段名1,字段名2from 表名

###示例:
mysql> select name,score from test; #查看表中所有人的成绩
+----------+-------+
| name     | score |
+----------+-------+
| zhangsan |    85 |
| lisi     |    90 |
| wangwu   |    78 |
+----------+-------+
3 rows in set (0.00 sec)

DCL操作命令(控制)

DCL语句的作用是设置或查看用户的权限,或者创建用户

1、设置用户权限的命令
grant 权限列表 on 数据库名.表名 to 用户名@来源地址 [identified by ‘密码′ ]
附:
若用户已存在,则更改用户密码
若用户不存在,则新建用户

###示例:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
# '%'除本地外的所有终端

2、查看用户权限的命令
show grants for 用户名@来源地址

###示例:
mysql> show grants for 'root'@'%';
+-------------------------------------------+
| Grants for root@%                         |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)

3、撤销用户权限的命令
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址

###示例:
mysql> revoke all privileges on *.* from 'root'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for 'root'@'%';                  
+----------------------------------+
| Grants for root@%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' |
+----------------------------------+
1 row in set (0.00 sec)

数据表的其他操作

临时表

在数据库里临时建立的表,记录当下的短暂数据,退出数据库后,表将消失

###示例:
mysql> create temporary table abc (id int(3) not null,name varchar(64) not null); #创建一个“abc”的临时表
Query OK, 0 rows affected (0.00 sec)

mysql> show tables; #查看表,发现没有表“abc”的存在
+---------------+
| Tables_in_aaa |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)

mysql> insert into abc values (1,'kkk'),(2,'xxx'); #给表“abc”中写入数据
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from abc; #能临时看到表中的数据
+----+------+
| id | name |
+----+------+
|  1 | kkk  |
|  2 | xxx  |
+----+------+
2 rows in set (0.00 sec)

克隆表

示例:

mysql> create table test2 like test; #拷贝一个和“test”一样的数据表“test2”
Query OK, 0 rows affected (0.01 sec)

mysql> show tables; #此时只拷贝了表的结构!!
+---------------+
| Tables_in_aaa |
+---------------+
| test          |
| test2         |
+---------------+
2 rows in set (0.00 sec)

mysql> insert into test2 select * from test; #拷贝“test”中的内容到“test2”上
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test2; #查看“test2”的表所有内容
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  1 |  17 | zhangsan |    85 |  101 |
|  2 |  18 | lisi     |    90 |  102 |
|  3 |  17 | wangwu   |    78 |  101 |
+----+-----+----------+-------+------+
3 rows in set (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值