数据库(上)
MySQL基本语法
操作系统:Debian11
数据库工具:MariaDB
Ver 9.1 Distrib 10.5.18-MariaDB, for debian-linux-gnu on x86_64
参考教程:菜鸟教程+数据管理课程教学内容
每条指令均以 , 作为结束标志
连接
xxx@debian:~/桌面$ sudo mysql -u root -p |
成功登陆出现以下提示:
Welcome to the MariaDB monitor. Commands end with ; or \g. |
若是出现以下报错
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2) |
考虑是不是数据库未开启,查看状态
sudo systemctl status mariadb |
若是发现
Status: "MariaDB server is down" |
表明数据库服务端已关闭,使用以下指令开启
sudo systemctl start mariadb |
数据库创建
CREATE DATABASE xxx; |
实例:创建employees数据库
MariaDB [(none)]> CREATE DATABASE employees; |
看看现在数据库有无变化
MariaDB [(none)]> SHOW DATABASES; |
成功创建employees数据库
反复添加会如何
MariaDB [(none)]> CREATE DATABASE employees; |
ERROR,该数据库已存在
数据库删除
DROP DATABASE xxx; |
实例:删除employees数据库
MariaDB [(none)]> DROP DATABASE employees; |
数据库选择
use xxx; |
实例:选择employees数据库
MariaDB [(none)]> CREATE DATABASE employees; |
数据表创建
创建的数据表有三要素:表名,表字段名,定义每个表的字段
通用语法:
CREATE TABLE table_name (column_name column_type); |
实例:在RUNOOB数据库中创建runoob_tbl数据表
MariaDB [(none)]> CREATE DATABASE RUNOOB; |
数据表删除
通用语法:
DROP TABLE table_name ; |
实例:在RUNOOB数据库中删除runoob_tbl数据表
MariaDB [RUNOOB]> drop table runoob_tbl; |
插入数据
通用语法:
INSERT INTO table_name ( field1, field2,...fieldN ) |
实例:
MariaDB [RUNOOB]> INSERT INTO runoob_tbl |
读取数据表
通用语法:
SELECT column_name,column_name |
特别的:可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
实例:
MariaDB [RUNOOB]> select * from runoob_tbl; |
MariaDB [RUNOOB]> select runoob_id, runoob_title from runoob_tbl; |
WHERE子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
通用语法:
SELECT field1, field2,...fieldN FROM table_name1, table_name2... |
实例:
MariaDB [RUNOOB]> SELECT submission_date from runoob_tbl WHERE runoob_id <= 1; |
MariaDB [RUNOOB]> SELECT * from runoob_tbl WHERE runoob_id <= 1; |
区分大小写
插入一行小写的数据与原先数据进行对比
MariaDB [RUNOOB]> INSERT INTO runoob_tbl |
查看一下
MariaDB [RUNOOB]> SELECT * from runoob_tbl; |
使用where语句选出其中title为java的
MariaDB [RUNOOB]> SELECT * from runoob_tbl WHERE runoob_title="java"; |
发现大小写均被选出
MySQL 的 WHERE 子句的字符串比较是不区分大小写的,可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。
MariaDB [RUNOOB]> SELECT * from runoob_tbl WHERE BINARY runoob_title="java"; |
UPDATE更新
如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。
通用语法:
UPDATE table_name SET field1=new-value1, field2=new-value2 |
实例:
MariaDB [RUNOOB]> UPDATE runoob_tbl SET runoob_title='python' WHERE runoob_id=3; |
update后结果
MariaDB [RUNOOB]> SELECT * from runoob_tbl; |
实例2:
MariaDB [RUNOOB]> UPDATE runoob_tbl SET runoob_title='python' WHERE runoob_id>=1; |
update后
MariaDB [RUNOOB]> SELECT * from runoob_tbl; |
DELETE语句
你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
通用语法:
DELETE FROM table_name [WHERE Clause] |
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除
实例:
删除runoob_tbl第三条记录
MariaDB [RUNOOB]> DELETE FROM runoob_tbl WHERE runoob_id=3; |
查看删除后结果
MariaDB [RUNOOB]> SELECT * from runoob_tbl; |
LIKE子句
类似于正则表达式对数据进行筛选
SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。
如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
通用语法:
SELECT field1, field2,...fieldN |
实例:
筛选出上传时间为三月的数据
MariaDB [RUNOOB]> SELECT * from runoob_tbl WHERE submission_date LIKE '%03%'; |
注意要筛选部分的组成结构,如:
MariaDB [RUNOOB]> SELECT * from runoob_tbl WHERE submission_date LIKE '%03'; |
UNION
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT expression1, expression2, ... expression_n |
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。
实例:
先创建两张tables
MariaDB [RUNOOB]> CREATE TABLE IF NOT EXISTS `Websites`( |
为表格填充数据
MariaDB [RUNOOB]> INSERT INTO Websites |
问:INSERT语句一次只能插入一条吗?我记得应该有插入大量数据的方法吧
哦,是我犯蠢了,每条语句后添加逗号即可,尝试一下
MariaDB [RUNOOB]> DELETE FROM apps; |
试一试union吧
从 “Websites” 和 “apps” 表中选取所有不同的country(只有不同的值):
MariaDB [RUNOOB]> SELECT country FROM Websites |
使用 UNION ALL 从 “Websites” 和 “apps” 表中选取所有的country(有重复的值):
MariaDB [RUNOOB]> SELECT country FROM Websites |
ORDER BY干嘛用的?去掉好像也没影响?
貌似是排序语句,接下来再说吧。
markdown太长了也比较卡了,分上中下记录吧,此处暂时作为上篇的完结。