一些数据库基础操作
创建数据库(数据库名:CDTEST)
create DATABASE CDTEST;
删除数据库
drop database CDTEST;
选择数据库
use CDTEST;
创建数据表
CREATE TABLE USER(
macAddr CHAR(50) NOT NULL PRIMARY KEY ,
firstTime CHAR(50) NOT NULL ,
updateTime CHAR(50) NOT NULL,
ipAddr CHAR(50) NOT NULL ,
openedNum CHAR(50) NOT NULL,
currentBoard CHAR(50) NOT NULL,
version CHAR(50) NOT NULL
);
MySQL命令终止符为分号 ; 。
显示数据表
show tables;
删除数据表
DROP TABLE runoob_tbl;
插入数据
INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。
- INSERT…VALUES
INSERT INTO USER
(macAddr, firstTime, updateTime, ipAddr, openedNum, currentBoard, version)
VALUES
(值1,值2,...值n),
....
(值1,值2,...值n);
- 使用 INSERT…VALUES 语句可以向表中插入一行数据,也可以插入多行数据;
- 若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。
- VALUES包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。
- INSERT…SET
INSERT INTO USER
SET macAddr = "04d49bea",
firstTime = "2021-05-21 15:52:51",
…
- 使用 INSERT…SET 每次只能插入一条数据。
- 使用 INSERT…SET 语句可以指定插入行中每列的值,也可以指定部分列的值;
- 采用 INSERT…SET 语句可以向表中插入部分列的值,这种方式更为灵活;
查询数据
SELECT *
FROM USER
WHERE macAddr='837jckb90';
- 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
- 可以使用 WHERE 语句来包含任何条件,可以使用 AND 或者 OR 指定一个或多个条件。
- WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
- 可以使用 LIMIT 属性来设定返回的记录数。
更新 (UPDATE)
以下实例将更新USER表中 macAddr为 ‘837jckb90’ 的字段值:
UPDATE USER
SET macAddr='234abe4m'
WHERE macAddr='837jckb90' ;
- 可以同时更新一个或多个字段。
- 可以在 WHERE 子句中指定任何条件。
删除 (DELETE)
以下实例将删除 USER 表中 macAddr为 ‘234abe4m’ 的记录:
DELETE FROM USER
WHERE macAddr='234abe4m' ;
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
排序 (ORDER BY)
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
SELECT *
FROM USER
ORDER BY firstTime ASC;
- 可以设定多个字段来排序。
- 可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
- 可以添加 WHERE…LIKE 子句来设置条件。
分组 (GROUP BY )
- GROUP BY 语句根据一个或多个列对结果集进行分组。
- 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
有一个学生选课表,表结构如下:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
统计每门课程有多少个学生报名:
SELECT Subject, Count(*)
FROM Subject_Selection
GROUP BY Subject
结果如下:
Subject Count
----------------
ITB001 5
MKB114 2
产生这个结果的原因是:
GROUP BY X意思是将所有具有相同X字段值的记录放到一个分组里。
那么GROUP BY X, Y呢?
GROUP BY X, Y意思是将所有具有相同X字段值和Y字段值的记录放到一个分组里。
统计出每门学科每个学期有多少人选择:
SELECT Subject, Semester, Count(*)
FROM Subject_Selection
GROUP BY Subject, Semester
上面SQL的意思是,对Subject_Selection表中的数据进行分组,将具有相同Subject和Semester字段值的记录放到同一个分组里去, 然后对每个分组中的数据应用聚合函数(COUNT,SUM, AVG,etc)。
得到的结果是:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
从表中的记录我们可以看出这个分组结果是正确的。有3个学生在第一学期选择了ITB001, 2个学生在第二学期选择了ITB001,还有两个学生在第一学期选择了MKB114, 没人在第二学期选择MKB114。
导出数据
使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上。
mysql> SELECT * FROM runoob_tbl
-> INTO OUTFILE '/tmp/runoob.txt';
- SELECT…INTO OUTFILE 'file_name’形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法。
- 输出不能是一个已存在的文件。防止文件数据被篡改。
- 你需要有一个登陆服务器的账号来检索文件。否则 SELECT … INTO OUTFILE 不会起任何作用。
- 在UNIX中,该文件被创建后是可读的,权限由MySQL服务器所拥有。这意味着,虽然你就可以读取该文件,但可能无法将其删除。
导入数据
1、mysql 命令导入
mysql -u用户名 -p密码 < 要导入的数据库数据(test.sql)
2、source 命令导入
source 命令导入数据库需要先登录到数库终端:
mysql -u root -p
mysql> create database user; # 创建数据库
mysql> use user; # 使用已创建的数据库
mysql> set names utf8; # 设置编码
mysql> source d:/home/user/user.sql # 导入备份数据库
参考链接:
https://www.runoob.com/mysql/mysql-tutorial.html
https://segmentfault.com/a/1190000006821331