一、认识数据库
关系型数据库:MySQL数据库、Oracle、SQL Server数据库等。
非关系型数据库:MongoDB、Redis等。
其中MySQL数据库是现在应用非常广泛的的数据库:
主要优势如下:
- 运行速度快
- 使用成本低
- 容易使用,复杂程度较低
- 可移植性强
- 适用于更多用户,免费开源(一般适用于大多数中小公司)
数据库管理系统和数据库系统,是两个不同的概念!
数据库管理系统(DataBase Management System, DBMS )是一种软件,由一个互相关联的数据集合和一组访问数据的程序构成,通常我们都叫数据库管理系统为数据库!
主要功能是维护数据库。
数据库系统(DataBase System,DBS)是一个实际可以运行的系统,可以对系统提供的数据进行存储,维护和应用!
数据冗余和数据完整性:
在数据库系统中,数据重复就是数据冗余。
数据完整性就是指数据库中数据的准确性。
数据库中的主键和外键:
主键(primary key):在数据库中,有这样一列,可以用来唯一标识表中的每一行,用于强制表的实体完整性,这样的列就是表的主键!
如果两列或者多列组合起来唯一标识表中的每一行,那么这个主键就叫做复合主键!!!
外键(Foreign key):是用来引用主表中的数据,是相对于主键而言的。外键用来强制引用完整性,一个表里面可以有多个外键。
二、使用数据库
1.使用命令检查数据库是否启动:
可以在DOS窗口输入 net start mysql启动数据库服务,或者输入 net stop mysql停止MySQL服务!
2.连接数据库:
mysql -h服务器主机地址 -u用户名 -p密码
注意:如果是在本机操作,不用写-h.....-p和密码之间没有空格!!!
3.查看当前安装的MySql版本信息和连接用户名:
SELECT VERSION(),USER();
其中VERSION()返回的是版本号:如 5.5.20 , USER()返回的是连接数据库的用户名:如 root@localhost.
4.SQL:全称是结构化查询语言(Structured Query Language),也是关系数据库的标准语言!
5.SQL的组成:根据功能划分,SQL语言主要由以下几个部分组成。
(一)DML (数据操作语言,又叫数据操纵语言):用来插入,修改,删除数据库中的数据,如INSERT ,UPDATE,DELETE等。
(二)DDL (数据定义语言):用来建立数据库,数据库对象,定义数据表结构等。大部分是以CREATE 开头的命令,如CREATE TABLE ,CREATE VIEW 以及DROP TABLE等。
(三)DQL(数据查询语言):用来对数据的查询,如SELECTdent
(四)DCL (数据控制语言):用来控制数据库组件的存取许可,存取权限等。如GRANT ,REVOKE,COMMIT等。
6.数据库中的运算符:
(一)算术运算符
运算符 | 说明 |
+ | 加号运算,求两个数或表达式的和 |
- | 减号运算,求两个数或表达式的差 |
* | 乘号运算,求两个数或表达式的积 |
/ | 除号运算,求两个数或表达式的商 |
% | 取模运算,求两个数或表达式的余数 |
(二)赋值运算符
" = ” 表示把一个数或者变量赋值给另一个变量。
(三)比较运算符
运算符 | 说明 |
= | 等于。如 age=20 |
> | 大于。如 price>9 |
< | 小于 |
<> | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
注意:比较运算符中的计算结果是布尔类型,返回值是TRUE或者FALSE
(四)逻辑运算符
运算符 | 说明 |
AND(&&) | 并且 |
OR(||) | 或者 |
NOT(!) | 非,取反,优先级最高 |
三、MySQL 数据库的基本操作:
1.对数据库的基本
create database 数据库名; #创建数据库
注意:在Windows系统下,默认是不区分大小写的!分号代表一行结束,一般都加上。
show databases; #查看所有的数据库
use 数据库; #切换数据库
drop database 数据库名; #删除数据库
2.对数据表的基本操作
(一)数据类型(常用的)
数据类型 | 字节数 | 取值范围 |
TINYINT | 1 | 有符号:-2的7次方~2的7次方 无符号:0~2的8次方-1 |
INT | 4 | 有符号值:-2的31次方~2的31次方-1 |
DOUBLE | 8 | |
DECIMAL[(M),D] | M+2字节 | M:总位数 D:小数位精度位数 |
注意:有符号的可以存正数,负数,无符号的只能存正数!
(二)字符串型
数据类型 | 字节 | 说明
|
CHAR【M】 | M字节 | 固定长度 M为0~255的整数 |
VARCHAR[M] | 可变长度 | 可变长度的字符串 M为0~65535的整数 |
TINYTEXT | 0~255 | 微型文本串 |
TEXT | 0~65535 | 长文本 |
(三)日期类型
数据类型 | 格式 | 取值范围 |
DATE | YYYY-MM-DD | 1000-01-01~9999-12-31 |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 ~9999-12-31 23:59:59 |
TIME | hh:mm:ss | |
TIMESTAMP | YYYYMMDDHHMMSS | 1970年某时刻~2038年某时刻,精度为1s |
YEAR | YYYY格式的年份 | 1901~2155 |
3.创建表
#语法如下:
create table [if not exists] 表名(
字段名 数据类型 [字段属性] [约束] [索引] [注释],
)[表类型][表字符集][注释];
#注意:[]里面的可写可不写,根据实际需求去写就好!
常用的字段属性约束
字段属性约束名 | 关键字 | 说明 |
非空约束 | NOT NULL | 不允许为空NULL |
默认约束 | DEFAULT | 默认值设置 格式为:DEFAULT '男' 或者 DEFAULT 1 |
唯一约束 | UNIQUE KEY | 表示字段的值是唯一的,允许为空,但只能有一个为空 |
主键约束 | PRIMARY KEY | 设置该字段为表的主键,可以作为该表的唯一的标识 |
外键约束 | FOREIGN KEY | 用于建立两表之间的关系,需要指定那个表引用哪个字段。 注意:InnoDB引擎:支持外键,MyISAM不支持,外键关联的表要求都是InnoDB的表。 |
自动增长 | AUTO_INCREMENT | (1)设置该列为自增字段,默认为每条自增1 (2) 通常用来设置主键,而且是整数类型 (3) 可设置初始值和步长 |
补充:设置步长和自增
#设置初始值
auto_increment=5;
#设置步长
auto_increment_increment=3;
#设置步长起点偏移
auto_increment_offset=1;
4.设置主键
#创建表
create table student(
`studentNo` int(4) primary key, #设置主键,``区别保留字
);
#多字段联合主键
create table student(
id int(4),
name varchar(50),
primary key(id,name) #设置联合主键
);
5.查看表和删除表
#查看表
show tables;
#查看表的定义
desc 表名;
#删除表
drop table 表名;
6.修改表
#1.修改表名
alter table 旧表名 rename 新表名;
#2.添加字段
alter table 表名 add 字段名 数据类型 [属性];
#3.修改字段
alter table 表名 change 原字段名 新字段名 数据类型 [属性];
#4.删除字段
alter table 表名 drop 字段名;
#5.添加主键约束
alter table 表名 add constarint 主键名 primary key 表名 (主键字段);
#6.添加外键约束:
alter table 表名 add constarint 外键名 foreign key (外键字段)
references 关联表名(关联字段);
#注意:添加外键约束时,外键表在前,主键表在后!主键是被引用,外键是引用主键!
#删除时要先删除子表,再删除主表。