Mysql数据库介绍
MySQL是一个关系型数据库管理系统 , 由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
数据库是一个存储数据的仓库,按照数据结构,来组织、管理和存储数据,并提供了增、删、改、查的功能。
数据库的主要特点
1. 实现数据共享:
- 数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库。
2.减少数据的冗余度:
- 同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。
3.数据的独立性:
- 数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。
4. 数据实现集中控制:
- 文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
5.数据一致性可维护性,以确保数据的安全性和可靠性:
-
安全性控制:以防止数据丢失、错误更新和越权使用;
-
完整性控制:保证数据的正确性、有效性和相容性;
-
并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;
-
故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障;
6.故障恢复:
- 由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
数据库的分类
关系型数据库
- Oracle
- Mysql
- PostgreSql
- DB2
- Microsoft SQL server
- MicroSoft Access
非关系型数据
- Redis
- Mongodb
- Big Table
MySQL数据库的基本操作
创建数据库
#CREATE DATABASE 数据库名;
create database d1;
显示所有的数据库
show databases;
删除数据库
使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。 在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。语法如下:
drop database 数据库名;
选择数据库
use 数据库名;
MySQL数据类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
下面的表显示了需要的每个整数类型的存储和范围
| 类 型 | 存储(字节) | 有符号数值取值范围 | 无符号数值取值范围 |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
| MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
| INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
| BIGINT | 8 | -2^63 ~ 2^63-1 | 0 ~ 2^64-1 |
日期和时间类型
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
注意:char()是定长数据类型,varchar()是非定长数据类型。
数据约束
- 主键 primary key:物理上存储的顺序,MySQL建议所有表的主键字段都叫id,类型为int unsigned
- 非空 not null:此字段不允许填写空值
- 唯一 unique:此字段的值不允许重复
- 默认 default:不填写,字段对应默认值,填写的话以填写为准
- 外键 foreign key: 主键保证了表中每一行数据的唯一性,而外键保证了表与表之间的数据关联
- 自增长 auto_increment 每新增一条记录,id主动加一
MySQL表操作
创建数据表
创建MysQL数据表需要以下信息:
- 表名
- 表字段
- 定义每个表字段
命令:
#create table 表名(字段名 类型 约束) 注意:约束不是必须条件
create table ti(name varchar(10) not null);
# 创建一个学生表 包含 学生id 学生姓名,学生年龄,学生性别
# id为主键自增长 学生姓名为非空字段
create table stu(
id int primary key auto_increment,
name varchar(15) not null,
age int unsigned, #unsigned约束之后之后,age只能取值无符号数值取值范围
sex varchar(3)
);
删除数据表
#drop table 表名;
drop table stu;
修改数据表
#增加表字段
#alter table 表名 add 字段名 类型;
alter table stu add python int unsigned;
#修改表字段类型
#alter table 表名 modify 要修改的字段 类型;
alter table stu modify python int;
#删除表的某个字段
#alter table 表名 change 旧字段 新字段 类型 约束;
alter table stu change python jave int;
#删除表的某个字段
#alter table 表名 drop 字段名;
alter table stu drop java;
#删除表的全部内容
#truncate table 表名;
truncate table stu;
#重命名表
#alter table 旧表名 rename to 新表名;
#alter table stu rename to stu_info;
查询表
#desc 表名
desc stu
MySQL数据操作
新增表数据
# insert into 表名(要添加数据的字段) values(字段对应的值);
insert into stu_info(name,age,sex) values('张三',18,'男');
insert into stu_info(name,age,sex) values('李四',20,'男');
insert into stu_info(name,age,sex) values('王五',30,'男');
insert into stu_info(name,age,sex) values('小明',35,'男');
insert into stu_info(name,age,sex) values('小兰',32,'女');
insert into stu_info(name,age,sex) values('小美',39,'女');
insert into stu_info(name,age,sex) values('小天',44,'女');
修改数据
# update 表名 set 字段名=值 where 条件子句;
update stu_info set name='明明' where name='小明'
删除数据
# delete from 表名 where 字段名=字段值
delete from stu_info where name='明明';
查询表数据
# 查看表中的所有数据
select * from 表名;
select * from stu_info;
select 字段名 from 表名;
# 查看指定数据