MySQL数据库介绍
1.数据的存储形式
内存/文件/第三方服务器/数据库服务器
2.什么是数据库
数据库是按照一定的形式来组织,存储数据,目的是为了对数据操作——增删改查
(1)数据库发展历史
网状数据库->层次型数据库->关系型数据库->非关系型数据库
(2)关系型数据库逻辑结构
Server->Database->Table-> Row->Column 服务器 -> 数据库-> 数据表 ->行 -> 列 |
3.MySQL数据库
Oracle: MySQL
Martin: MariaDB
XAMPP
服务器套装,包含有多款服务器软件mysql、apache https://www.apachefriends.org/download.html |
(1)MySQL部署结构
服务器端:负责存储/维护数据 —— 银行服务器机房
C:/xampp/mysql/bin/mysqld.exe 启动文件
确保端口3306不被占用
客户端:负责连接数据库,并发起增删改查——ATM机
C:/xampp/mysql/bin/mysql.exe 客户端工具
(2)使用客户端连接服务器端(结尾不能使用分号)
mysql.exe -h127.0.0.1 -P3306 -uroot -p
-h host 服务器的域名/IP地址
-P port 端口号
-u user 用户名
-p password 密码
mysql -uroot 简写形式
4.mysql常用管理命令(必须以分号结尾)
show databases; 显示服务器上当前所有的数据库
quit; 退出连接
use 数据库名; 进入指定的数据库
show tables; 显示当前数据库中所有的数据表
desc 表名称; 描述表中有哪些列(表头)
5.SQL命令
SQL: Stuctured Query Language,结构化查询语言,用于操作关系型数据库服务器
SQL命令的两种执行方式
(1)交互模式:客户端输入一行,点击回车,服务器端执行一行,适用于临时性的查看数据。
(2)脚本模式: 把要执行的多行SQL命令写在一个脚本文件中,一次性的提交给服务器执行,适用于批量的操作数据。
mysql -uroot < C:/xampp/…../01.sql 回车
SQL语法规范
(1)一条SQL语句可以跨越多行,以英文的分号结尾。
(2)假如某一条语句出现语法错误,则此条语句以及后边所有的语句不会再执行。
(3)SQL命令不区分大小写,习惯上数据库关键字用大写,非关键字用小写。
(4)SQL命令可以使用单行注释(#...)和多行注释(/*…*/),注释的内容不会被服务器所执行
常用的SQL命令
(1)丢弃指定的数据库,如果存在的话
DROP DATABASE IF EXISTS jd;
(2)创建新的数据库
CREATE DATABASE jd;
(3)进入创建的数据库
USE jd;
(4)创建保存数据的表
CREATE TABLE student(
sid INT,
name VARCHAR(8),
sex VARCHAR(1),
score INT
);
(5)插入数据
INSERT INTO student
VALUES(‘1’,’tom’,’M’,’87’);
(6)查询数据
SELECT * FROM student;
6.常用SQL命令
(1)更改数据
UPDATE user SET
upwd=’888888’,phone=’19912345678’
WHERE uid=’1’;
(2)删除数据
DELETE FROM user WHERE uid=’2’;
标准SQL语句分类
DDL: Data Define Language 定义数据结构 CREATE/DROP/ALTER DML: Data Manipulate Language 操作数据 INSERT/UPDATE/DELETE DQL: Data Query Language 查询数据 SELECT DCL: Data Control Language 控制用户权限 GRANT(授权)/REVOKE(收权) |
7.计算机存储字符
(1)如何存储英文字符
ASCII: 总共有128个,对所有的英文字母和符号进行了编码。
Latin-1: 总共有256个,兼容ASCII码,同时对欧洲符号进行了编码。MySQL默认使用这种编码。
(2)如何存储中文字符
GB2312: 对常用的6千多汉字进行了编码,兼容ASCII码
GBK: 对2万多汉字进行了编码,同时兼容GB2312
Unicode: 对世界上主流国家的常用语言进行了编码,兼容ASCII码,不兼容GB2312、GBK。具体分为utf-8,utf-16,utf-32存储方案。
(3)解决MySQL存储中文乱码
SQL脚本另存为的编码
客户端连接服务器端的编码(SET NAMES UTF8)
服务器端创建数据库使用的编码(CHARSET=UTF8)
8.mysql中的列类型
创建数据表的时候,指定的列可以存储的数据类型
CREATE TABLE t1( nid 列类型 );
(1)数值型 引号可加可不加
TINYINT 微整型,占1个字节,范围-128~127
SMALLINT 小整型,占2个字节,范围-32768~32767
INT 整型,占4个字节,范围
-2147483648~2147483647
BIGINT 大整型,占8个字节,范围很大
FLOAT 单精度浮点型,占4个字节,最多3.4E38,可能产生计算误差。
DOUBLE 双精度浮点型,占8个字节,范围比BIGINT大的多,可能产生计算误差。
DECIMAL(M,D) 定点小数,不会产生计算误差,M代表总的有效位数(不包含小数点),D代表小数点后的有效位数
BOOL 布尔型,只有两个值TRUE、FALSE,真正存储的时候,列类型会变成TINYINT,TRUE和FALSE变成了1和0,使用的时候也可以直接插入1和0。常用于只有两个值的数据。 例如性别、是否在线、是否注册、是否为会员…
注意事项:TRUE和FALSE不能加引号。
(2)日期时间型 必须加引号
DATE 日期型 ‘2019-12-31’
TIME 时间型 ’14:53:30’
DATETIME 日期时间型 ‘2019-12-31 14:53:30’
(3)字符串类型 必须加引号
VARCHAR(M) 变长字符串,不会产生空间浪费,操作速度相同比较慢,M最大值是65535
CHAR(M) 定长字符串,可能存在空间浪费,操作速度比较快,M最大值是255;用于存储固定长度的数据,例如身份证号码、手机号码等。
TEXT(M) 大型变长字符串,M最多2G
| CHAR(5) | VARCHAR(5) |
a | a\0\0\0\0 | a\0 |
ab | ab\0\0\0 | ab\0 |
一 | 一\0\0\0\0 | 一\0 |
一二 | 一二\0\0\0 | 一二\0 |
TB GB MB KB Byte Bit
1Byte=8Bit(位)
CREATE TABLE t1(
id INT,
age TINYINT,
commentCount INT,
salary DECIMAL(8,2), #999999.99
phone CHAR(11),
article VARCHAR(5000),
sex BOOL,
ctime DATETIME
);
9.列约束
Mysql在插入数据的时候,进行特定的验证;只有满足条件才允许插入,否则被认为是非法插入。
例如:一个人的性别只能是男或者女,一个人的成绩0~100
CREATE TABLE t1( eid 列类型 列约束 );
(1)主键约束——PRIMARY KEY
声明了主键约束的列上值不能出现重复,一个表中只能有一个主键,通常加在编号列,表中查询的记录会按照编号从小到大排序,加快查找速度。
注意事项:声明了主键约束后就不允许在插入NULL值。
NULL 表示空,在插入数据时,无法确定要保存的数据。例如:无法确定员工的生日,工资都可以使用NULL |