在数据库的使用过程中,大概可以分为数据库的初级操作、中级操作、高级操作
初级操作即为查询、增加、删除、更新
中级操作即为联表操作与事务操作
高级操作为性能优化
由此,开始数据的初级操作
一、初步使用
1、数据库操作
1)、创建数据库CREATE
在开始,我们首先创建一个数据库
CREATE TABLE `user_test` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_name` varchar(255) DEFAULT NULL COMMENT '用户名',
`pass_word` varchar(255) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2424797 DEFAULT CHARSET=utf8 COMMENT='用户信息表'
运行结果如下:
那如果创建的数据库我们不满意呢,最简单的即为直接销毁
2)、删除数据库DROP
drop table user_test
如果创建的数据库暂时是满意的,那么可以对数据库的内容进行操作
现在开始操作
2、数据库内容操作
1)、增加 INSERT
现在将数据库表user_test中添加三条信息,分别为
id | user_name | pass_word |
---|---|---|
1 | name1 | password1 |
2 | name2 | password2 |
3 | name3 | password3 |
INSERT INTO test.user_test(id, user_name, pass_word)VALUES(1, 'name1', 'password1');
INSERT INTO test.user_test(id, user_name, pass_word)VALUES(2, 'name2', 'password2');
INSERT INTO test.user_test(id, user_name, pass_word)VALUES(3, 'name3', 'password3');
当前,也可以接在VALUES后面一次性写完
INSERT INTO
test.user_test(id, user_name, pass_word)
VALUES
(1, 'name1', 'password1'), (2, 'name2', 'password2'), (3, 'name3', 'password3');
2)、查询 SELECT
无论是对数据库内容如何的操作,查询都是我们必要的验证方式之一
1、整体的查询
SELECT * FROM test.user_test;
2、具体字段的查询
SELECT id, user_name, pass_word FROM test.user_test WHERE id=1;
3、查询的模糊
用%代替不确定的部分
SELECT * FROM test.user_test WHERE user_name LIKE 'name%';
LIKE 的用法只是用于表示泛指,并不只是在查询中可用,但是建议只在查询中使用,毕竟数据库的安全性是最重要的
3)、删除 DELETE
比如我们想删除字段user_name 为name3的这条数据,可以如下操作
DELETE FROM test.user_test WHERE user_name = 'name3';
4)、更新 UPDATE
比如我们要更新user_name 为name2时的pass_word内容为password222
UPDATE test.user_test SET pass_word='password222' WHERE user_name='name2';
二、常用操作方式
为了方便演示,将表中数据增加为如下
1、排序order by
在使用order by进行排序操作时,默认情况下完成的是升序的操作,
- asc:是默认的排序方式,表示升序
- desc:降序的排序方式
排序的方式是按照自然顺序进行排序的
如果是数值,那么按照从大到小
如果是字符串,那么按照字典序排序
在进行排序的时候可以指定多个字段,而且多个字段可以使用不同的排序方式
每次在执行order by的时候相当于是做了全排序,思考全排序的效率
会比较耗费系统的资源,因此选择在业务不太繁忙的时候进行
2、去重DISTINCT
为了方便研究,插入一条与id为8相同的数据,结果如下
两种方式查看查询user_name为name8的结果
使用distinct 前
SELECT pass_word FROM test.user_test WHERE user_name = 'name8'
使用distinct 后
SELECT distinct pass_word FROM test.user_test WHERE user_name = 'name8'
3、限制LIMIT
有时为了一些原因,或许是为了美观,也或许是在大量数据时分批次删除更新避免锁表的发生,我们会需要对当前操作进行一些限制
select * from test.user_test limit 3
4、且AND
SELECT * FROM test.user_test WHERE user_name = 'name8' and id = '8'
5、或OR
SELECT * FROM test.user_test WHERE user_name = 'name8' or id = '8'
6、并集union
将两个集合中的所有数据都进行显示,但是不包含重复的数据
select * from test.user_test where id < 7 union
select * from test.user_test where id > 2;
7、全集union all
将两个集合的数据全部显示,不会完成去重的操作
select * from test.user_test where id < 7 union all
select * from test.user_test where id > 2;
8、交集(实验未成功,报错,Mysql不支持)
两个集合中交叉的数据集,只显示一次
select * from test.user_test where id < 7 intersect
select * from test.user_test where id > 2;
9、差集(实验未成功,报错,Mysql不支持)
包含在A集合而不包含在B集合中的数据,跟A和B的集合顺序相关
select * from test.user_test where id < 7 minus
select * from test.user_test where id > 2;
三、函数
1、行数COUNT()
select COUNT(*) from test.user_test
2、最大值MAX()
select MAX(id) from test.user_test
3、最小值MIN()
select MIN(id) from test.user_test
4、平均值AVG()
select AVG(id) from test.user_test
5、求和SUM()
select SUM(id) from test.user_test
四、不常用操作
1、对表结构的操作
1). 添加列
ALTER TABLE user_test
ADD remarks char(20);
2). 删除列
ALTER TABLE user_test
DROP COLUMN remarks;
2、导表
CREATE TABLE newtable AS SELECT * FROM user_test;
注意:经实验发现,此方法不需要重新建表,似乎是对表的直接复制
3、连接字段
SELECT CONCAT(user_name, pass_word) AS concat_col FROM user_test;
4、去空
许多数据库会使用空格把一个值填充为列宽,因此连接的结果会出现一些不必要的空格,使用 TRIM() 可以去除首尾空格
SELECT CONCAT(TRIM(user_name), '(', TRIM(pass_word), ')') AS example FROM user_test;