对于初学数据库的开发者,可以只了解CRUD操作,当然这些远远不够,后续改补的基础等还是要补的.
关于数据库的概念等,这里就不多说了,可以在B站上找一找和数据库概论相关的视频.
我后续也会更新计算机基础知识的内容.
su - 切换到root用户
service mysql start 启动mysql
mysql -u root 以root用户的身份登入mysql
mysql作为关系型数据库,数据都是存在表中.
我们先建一个数据库(上面说的mysql是数据库管理系统,为了方便叫数据库)
show databases; 查看目前有哪些数据库
CREATE DATABASE 数据库名字; 创建一个数据库
创建完数据库,我们就可以在数据库中建表了
注意:每一条SQL语句都要以;结尾,才代表结束.
USE 数据库名字;
show tables;
CREATE TABLE 表名(列名 数据类型(数据长度) 约束, 列名 数据类型(数据长度) 约束);
使用INSERT语句对建好的表进行数据插入。
INSERT 表名 VALUES(数据,数据); // 这种的插入,要求对表中所有列都有有效插入。
INSERT 表名(列名,列名) VALUES(数据,数据); // 这种的插入,只对已有列名,进行插入,未包含的列名值为NULL(如果该列约束为NOT NULL,会报错)
对于一些列,它们的数据在应用中有要求,那么我们可以在建表时,就对这些列做一些约束,使加入数据时符合应用要求。
PRIMARY KEY
这样,这列就为主键了。CONSTRAINT 主键名(这个自定义) PRIMARY KEY (列名);
这里CONSTRAINT 是添加约束的一种方式,假如,在创建列名那里不想加约束,那就可以在后面用这个关键词,单独增加约束,与上面效果相同。
复合主键:可以多个列共同为主键,这种只能使用后续添加的形式
CONSTRAINT 主键名 PRIMARY KEY(列名1,列名2);
默认值约束:当插入时没有给这个列赋值,若设置了默认值约束,那么这个值不是NULL而是你设置的值
与上面主键的用法类似,都是在统一位置使用DEFAULT 默认值
唯一约束:对于数据中列既不是主键,还想让它唯一,就可以使用唯一约束
与CONSTRAINT类似,在后面添加 UNIQUE (列名)
如果插入的数据,在这一列重复,会报错
外键约束:外键:在这张表不是主键,但是在另一张表是主键。使用外键约束可以实现数据的完整性,以及体现表与表的关系。
使用 FOREIGN KEY (外键) REFERENCES 外键对应表(外键对应表的主键)
使用了外键后,若对该表进行插入,那么这个元组的数据中外键,在对应的那张表一定要存在。
非空约束:加了非空,那么这个列一定有效。
与默认约束位置相同,列名 数据类型(数据长度) NOT NULL
对上面的约束做一个实例:
CREATE TABLE XXX(
aaa INT(10) PRIMARY KEY DEFAULT 1 NOT NULL,
bbb INT(10) NOT NULL,
UNIQUE(bbb),
FOREIGN KEY bbb REFERENCES ZZZ(bbb));
ZZZ为表1,主键为bbb。
这一部分是东西最多,也比较复杂
基本查找:SELECT 列名 FROM 表名;
根据条件查找: SELECT 列名 FROM 表名 WHERE 单个判断条件;
使用多个判断条件:SELECT 列名 FROM 表名 WHERE 单个判断条件 AND/OR 单个判断条件;
这里,AND表示,要同时满足这两个条件,OR表示,只要满足一个就可以。
查看某个数据是否在某个范围内:SELECT 列名 FROM 表名 WHERE 列名 IN/NOT IN (范围)
IN代表,满足一个就可以。
NOT IN 表示,范围内都不满足。
模糊查找;使用通配符 "__“和”%“与关键字LIKE
其中”_“代表一个字符,”%"代表未知字符
SELECT 列名 FROM 表名 WHERE 列名 LIKE ****_**** / ***%*;
SELECT 列名 FROM 表名 WHERE 判断条件 ORDER BY 列名 DESC/ASC
DESC 将结果降序
ASC 将结果升序
ORDER BY 默认升序
SELECT ddd FROM ZZZ
WHERE aaa IN
(SELECT aaa FROM ddd);
这就是一个简单的子查询代码。
所谓的子查询,原理就是通过两个两个表的相同部分,进行筛选。
子查询可以继续扩增
SELECT 列名
FROM 表1,表2
WHERE 表1.共同列=表2.共同列,判断条件;
使用连接查询有一个点要注意:
1、列的来源要注意,在WHERE中要确定这个列是从哪来的。
2、一定要有共同列相等,不然查询的结果会失败。
另一种形式的连接
FROM 表1 JOIN 表2
第四部分:改与删
DROP DATABASE 数据库名
DROP TABLE 表名
RENAME TABLE 原名 TO 新名字
ALTER TABLE 原名 RENAME 新名
ALTER TABLE 原名 RENAME TO 新名
ALTER是修改表名或修改表字段会使用的关键字
//增加列
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 约束;
ALTER TABLE 表名 ADD 列名 数据类型 约束; //使用ADD关键字对表进行增加列
//删除列
ALTER TABLE 表名 DROP 列名;
//重命名列
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型 约束 //如果你想对某列新增约束或者修改列名 可以在对应位置修改为新的 不需要换的 原封不动写上就行
//修改列的数据类型
ALTER TABLE 表名 MODIFY 列名 数据类型 //这个只能用来修改列的数据类型
UPDATE 表名 SET 列1=值1,列2=值2 WHERE 条件;
这个一定要有WHERE条件,不然就是一下改一列
DELETE FROM 表名 WHERE 条件 //这个是一下删一行
到这里我们对与MySQL的CRUD操作已经了解了。但MySQL不止CRUD,后续要对于MySQL有深入的学习。
这里推荐两本书
《sql必知必会》
《mysql必知必会》
两本书的作者是同一个人,MySQL是对sql的中MySQL部分的深入。
如果有时间可以去看看数据库概论,了解下数据库是怎么设计的,两个表是怎么进行连接的,数据库的三范式是什么样的。