Mysql基础(一)

108 阅读6分钟

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 支持多种类型,大致可以分为三类:数值日期/时间字符串(字符)类型。

数值类型

下面的表显示了需要的每个整数类型的存储和范围

存储(字节)有符号数值取值范围无符号数值取值范围
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32768 ~ 327670 ~ 65535
MEDIUMINT3-8388608 ~ 83886070 ~ 16777215
INT4-2147483648 ~ 21474836470 ~ 4294967295
BIGINT8-2^63 ~ 2^63-10 ~ 2^64-1

日期和时间类型

image.png 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 表名;
# 查看指定数据