什么是数据库
数据库在通常意义上被认为是保存有组织的数据的容器(通常是一个文件或一组文件)。数据库和数据库管理系统DBMS很容易被误用,数据库是文件或者其他的记录集合,数据库管理系统是管理数据库的工具,人们日常的操作实际上是通过DBMS来对数据库进行操作,而不是直接使用和操纵数据库容器。数据库的发展的历史不再赘述,而本文所介绍的MySQL数据库属于第二代关系型数据库,也是目前最为主流的数据库模型。
--表--
在数据库中数据并不是随机存放,而是按照特定的规则进行存放,关系型数据库中是用表来划分不同的数据。
表是一种结构化的文件,用于储存符合特定规则的数据清单,比如顾客清单,产品目录等。数据库中的每个表都有唯一的名字来标识自己。
--列--
列是表中的一个字段,所有表都是由一个或者多个列组成的。比如在顾客中一个列存储着
顾客编号,另一个列则存储顾客姓名等等。
--行--
表中的数据是按行存储的,所保存的每个记录存储在自己的行内。例如:顾客表中的每行可以存储一个顾客,表中的行数为记录记录的总数。
--主键--
表中一列或者一组列,其值能够唯一区分表中每个行。表中的任何建都可以成为主键,只要满足以下条件:
任意两行不具有相同的主键值;
每一行都必须具有一个主键值(主键值不允许NULL值)。
--外键--
一张表的一列(多列)值来源于另外一张表中的一列(多列)值
--数据类型--
所容许的数据的类型,每个表列都有相应的数据类型,它来限制该列存储的数据,数据类型可以帮助正确的排序数据,并在优化硬盘使用方面起着重要作用。
整型
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
浮点
FLOAT
DOUBLE
定点
DECIMAL(M,D)
M:总位数
D:小数位数
字符串
CHAR(M)
定长
VARCHAR(M)
可变长度,M指定为最大长度
TINYTEXT
TEXT
BINARY(M)
VARBINARY(M)
二进制
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
日期
YEAR
年
DATE
年-月-日
TIME
时:分:秒
DATETIME(范围比TIMESTAMP大)
年-月-日 时:分:秒
TIMESTAMP
时间戳
可以将当前系统时间设为该列的默认值
年-月-日 时:分:秒
--SQL--
sql是结构化查询语言,与其他语言的不一样之处在于SQL由很少的词构成,其特点如下:
1.SQL不是某个特定数据库供应商专有的语言,几乎所有的DBMS都是支持SQL的。
2.SQL简单易学;
3.看上去简单,其实功能复杂。
--常见的数据库--
Oracle--大型数据库(大数据处理)--收费(昂贵)--支持主流操作系统--安装部署较麻烦
MSSQL--中、大型数据库--收费--支持主流操作系统
MySQL--中型数据库--社区版(免费)、企业版(收费)--开源
MySQL
在此后的介绍中全部以MYSQ服务器为基础进行实现:
配置:
端口配置
port=3306
编码配置
default-character-set=utf8
character-set-server=utf8
默认存储引擎配置(默认MyISAM)
default-storage-engine=INNODB
安装目录配置
basedir = E:\mysql
data文件目录配置
datadir = E:\mysql\data
设置开机启动
server_id = 1
分类:
DDL(Data Definition Language)
数据定义语言
创建数据库、创建表、删除数据库、删除表、修改数据库结构等操作
DML(Data Manipulation Language)
数据操纵语言
数据插入、修改、删除等操作
DQL(Data Query Language)
数据查询语言
数据查询操作
DCL(Data Control Language)
数据控制语言
账号创建、权限分配等操作
具体操作语句如下:
登录到MySQL:
打开终端:开启mysql 服务 net start mysql;
登录:mysql -uroot -p
然后输入密码即可登录‘
查看所有的数据库:
show databases;
创建新的数据库:
create database database_name character set utf8;
注意:
数据库名称尽量以字母开头,由字母和_下划线组成。
数据库名称在数据库中要唯一。
mysql中大小写不区分。
删除数据库:
drop databases database_name;
修改数据库:
alter database database_name character set utf8;
选择数据库:
use database_name;
查看当前数据库的所有表:
show tables;
查看表定义的sql语句:
show create table table_name:
查看表结构:
desc table_name ;
创建表:
create table table_name(
。。。 类型,
。。。类型,
。。。
)
删除表:
drop table table_name ;
修改表明:
alter table old_table_name rename new_table_name;
添加列:
alter table table_name add 列名 列定义;
修改列定义:
alter table table_name modify 列名 列定义;
修改列名与列定义:
alter table table_name change 旧列名 新列名 列定义;
删除列:
alter table table_name drop 列名;
复制表结构:
create table 新表名 like 旧表名;
复制表结构:
create table 新表名 as (SELECT * FROM 旧表名);
清空表中所有数据:
truncate table 表名;