开发中存在着各种数据,比方用户的个人信息、商品详情、购买记录,这些数据都要以肯定的形式贮存,如果以文本的模式贮存,每一次获取都要读取文件,如果信息有批改则须要间接批改文本,大量的数据会须要保留大量的文件,这样不仅不便于操作、保护,还给服务器带来微小的累赘,什么样的形式可能贮存大量的数据并且便于批改?答案就是数据库。
关系型数据库以二维数组组成的表构造来贮存数据,各表之间能够设置一对一,一对多,多对多的关系,比方用户个人信息的表中id为1的用户,她在xx商品购买记录的表中存在着一条购买商品的数据,通过各种对应关系,可能从不同的维度保留数据,当须要应用的时候,间接依据某些条件下操作数据。
而非关系型数据库,它的存储更为自在,应用 key-value 这样的模式去保留数据,比方在登陆状态后,保留某个用户的姓名、手机号、身份等信息,获取和写入都比拟的简略。
关系型数据库包含mysql、oracle、sql server 等,非关系型数据库包含 MongoDB、Redis等,这里来聊聊mysql。
mysql的语句大抵能够分为四类,别离是
DDL(Data Definition Language):数据定义语言,用来对数据库或者表进行:创立、删除、批改等操作,
DML(Data Manipulation Language):数据操作语言,用来对表进行:增加、删除、批改等操作,
DQL(Data Query Language):数据查询语言,用来从数据库中查问记录,
DCL(Data Control Language):数据管制语言 对数据库、表格的权限进行相干访问控制操作。
首先来看对数据库操作,这里有一个编写习惯,通常把sql语句局部大写,数据库名、表名、字段名小写
// 1、展现所有的数据库,即便没有创立任何一个数据库,零碎默认也会有四个数据库SHOW DATABASES;// 2、抉择数据库 mysqlUSE mysql;// 3、显示以后所抉择的数据库SELECT DATABASE();// 4、如果不存在数据库 studySql 则创立CREATE DATABASE IF NOT EXISTS `studySql`;// 5、如果存在数据库 studySql 则删除DROP DATABASE IF EXISTS `studySql`;
再来看看对表的操作,比方在我的项目里,咱们须要保留用户的个人资料,那么此时要创立一个用户表,表外面存储着用户的姓名、手机号码、出生年月,以上的这三种字段对应的是不同的类型,姓名须要字符串类型,手机号码须要数字类型,而出生年月须要应用日期类型,通过数据类型来对保留的数据进行限度,那么常见的数据类型有以下几种。
1、字符串类型char定义固定长度的字符串,长度在0-255之间,varchar定义可变长的字符串,长度在0到65535之间的值,text可存储更大的字符串2、数字类型数字分为整数、浮点数、准确到小数点的数整数类型:INT,浮点类型:FLOAT,DOUBLE,准确数字:DECIMAL,NUMERIC3、日期类型(1) YEAR,格局如YYYY,只有年份,范畴从 1901到2155,和 0000(2) DATE,格局如YYYY-MM-DD,有年月日,范畴从 '1000-01-01' 到 '9999-12-31'(3) DATATIME,格局如 YYYY-MM-DD hh:mm:ss,有年月日时分秒,范畴从 '1970-01-01 00:00:01' 到'2038-01-19 03:14:07'(4) DATASTAMP / TIMESTAMP,比DATATIME还要准确6位,格局如 YYYY-MM-DD hh:mm:ss.xxxxxx,范畴从'1000-01-01 00:00:00.000000'到'9999-12-31 23:59:59.999999'
以上的数据类型用于创立表时对字段进行补充,除了补充之外,还应该对字段有限度,比方用户的手机号码不可反复,用户要增加一个惟一的id值来示意其“身份”,这些限度就是表束缚,咱们通常有以下几种形式来对表进行束缚
1、主键主键代表惟一的值,如id,主键不可反复,也不能够为空,用字段 PRIMARY KEY 来示意2、惟一键不可反复,但容许为空,比方手机号码,用字段UNIQUE来示意3、AUTO_INCREMENT当咱们没有给某一字段设置值的时候,心愿它主动增长,须要数据类型为数字类型4、NOT NULL不容许为空5、DEFAULT设置默认值6、外键在下一篇对于DQL的总结中具体阐明~
有了以上的概念,咱们就能够在数据库中创立一张“用户表”了
CREATE TABLE IF NOT EXISTS `person` ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) , telephone VARCHAR(20) UNIQUE NOT NULL, birth TIMESTAMP)
在这张表里插入、删除、批改一些数据
// 给每一个字段一一对应设置值INSERT INTO `person` VALUES (9, 'judy', '18877776666', '1998-08-08');INSERT INTO `person` VALUES (10, 'kiki', '18012345678', '2000-08-10');// id 可自增、birth设置默认参数INSERT INTO `person` (name, telephone) VALUES ('alice', '15600000000');// 批改数据UPDATE `person` SET NAME = 'xiaoming' WHERE id = 10;// 删除元素DELETE FROM `person` WHERE id = 9;// 清空表所有内容DELETE FROM `person`// 查问表里所有数据SELECT * FROM `person`// 删除表DROP TABLE IF EXISTS `person`
局部sql语句执行的后果如下图所示
以上sql语句操作的是表中的数据,如果对于表字段要进行操作,那么能够应用以下形式
// 批改表名(将表名person改为users)ALTER TABLE `person` RENAME TO `users`;// 批改表字段(将telephone批改为phone,数据类型为varchar)ALTER TABLE `users` CHANGE telephone phone VARCHAR(20);// 批改表数据类型(将birth的类型批改为Data,默认值为以后工夫)ALTER TABLE `users` MODIFY DATATIME DEFAULT CURRENT_TIMESTAMP;// 减少列 genderALTER TABLE `users` ADD gender varchar(10);ALTER TABLE `user` ADD updateTime TIMESTAMP;// 删除列ALTER TABLE `user` DELETE updateTime;// 查看表构造DESC `users`
还有一些sql有可能也会被用到
// 依据表构造创立另外一个表(复制)CREATE TABLE `user1` LIKE `users`// 依据另外一个表中的所有内容(不包含表构造), 创立新的表 CREATE TABLE `user3` AS (SELECT * FROM `user`)// 查看创立表的sql语句SHOW CREATE TABLE `users`
以上就是mysql的基本概念以及基本操作,对于 DQL( Data Query Language),数据查问的局部总结在下一篇文章中~