《Centos系统——mysql增删改查》

在这里插入图片描述
int unsigned //正整数
数据类型,数值长度:

在这里插入图片描述

案例一

在这里插入图片描述
按照表格创建员工表(Emp)

MariaDB [(none)]> create database bw default character set utf8 collate utf8_bin;
MariaDB [(none)]> create table bw.emp(EmployeelID int(10) comment "员工编号",Name varchar(10) comment "姓名",Education varchar(4) comment "学历",Birthday date comment "出生日期",Gender char(2) comment "性别",Address varchar(40) comment "地址");
MariaDB [(none)]> desc bw.emp;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| EmployeelID | int(10)     | YES  |     | NULL    |       |
| Name        | varchar(10) | YES  |     | NULL    |       |
| Education   | varchar(4)  | YES  |     | NULL    |       |
| Birthday    | date        | YES  |     | NULL    |       |
| Gender      | char(2)     | YES  |     | NULL    |       |
| Address     | varchar(40) | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

修改表名为Employees

MariaDB [bw]> show tables;
+--------------+
| Tables_in_bw |
+--------------+
| emp          |
+--------------+
1 row in set (0.00 sec)

MariaDB [bw]> alter table emp rename Employees;
Query OK, 0 rows affected (0.01 sec)

MariaDB [bw]> show tables;
+--------------+
| Tables_in_bw |
+--------------+
| Employees    |
+--------------+
1 row in set (0.00 sec)

删除Employees表中Address字段

MariaDB [bw]> alter table Employees drop Address;
Query OK, 0 rows affected (0.01 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [bw]> desc Employees;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| EmployeelID | int(10)     | YES  |     | NULL    |       |
| Name        | varchar(10) | YES  |     | NULL    |       |
| Education   | varchar(4)  | YES  |     | NULL    |       |
| Birthday    | date        | YES  |     | NULL    |       |
| Gender      | char(2)     | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

修改表的存储引擎为MyISAM

MariaDB [bw]> alter table Employees engine=myisam;
Query OK, 0 rows affected (0.02 sec)               
Records: 0  Duplicates: 0  Warnings: 0

修改Employees表中Gender字段名称,改为Sex

MariaDB [bw]> alter table Employees change Gender sex char(2) comment "性别";
Query OK, 0 rows affected (0.01 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [bw]> desc Employees;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| EmployeelID | int(10)     | YES  |     | NULL    |       |
| Name        | varchar(10) | YES  |     | NULL    |       |
| Education   | varchar(4)  | YES  |     | NULL    |       |
| Birthday    | date        | YES  |     | NULL    |       |
| sex         | char(2)     | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

增加电话号码字段:phonenumber,varchar类型,长度为15

MariaDB [bw]> alter table Employees add phonenumber varchar(15);
Query OK, 0 rows affected (0.00 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [bw]> desc Employees;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| EmployeelID | int(10)     | YES  |     | NULL    |       |
| Name        | varchar(10) | YES  |     | NULL    |       |
| Education   | varchar(4)  | YES  |     | NULL    |       |
| Birthday    | date        | YES  |     | NULL    |       |
| sex         | char(2)     | YES  |     | NULL    |       |
| phonenumber | varchar(15) | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

案例二

部门表:
在这里插入图片描述
员工表:
在这里插入图片描述
创建部门表,同时添加约束(见表)

MariaDB [bw]> create table dept(DeptID int(10) primary key comment "部门编号",deptName varchar(10) comment "部门名");
Query OK, 0 rows affected (0.00 sec)

MariaDB [bw]> desc dept;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| DeptID   | int(10)     | NO   | PRI | NULL    |       |
| deptName | varchar(10) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

为前面案例中的员工表添加约束(见表)

MariaDB [bw]> create table emp(employeeID int(10) primary key comment "员工编号",name varchar(10) comment "姓名",education varchar(4) comment "学历",birthday date comment "出生日期",sex char(2) comment "性别",phonenumber varchar(15) unique comment "电话好吗",DeptID int(10) comment "部门编号" references dept(DeptID));
Query OK, 0 rows affected (0.02 sec)

MariaDB [bw]> desc emp;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| employeeID  | int(10)     | NO   | PRI | NULL    |       |
| name        | varchar(10) | YES  |     | NULL    |       |
| education   | varchar(4)  | YES  |     | NULL    |       |
| birthday    | date        | YES  |     | NULL    |       |
| sex         | char(2)     | YES  |     | NULL    |       |
| phonenumber | varchar(15) | YES  | UNI | NULL    |       |
| DeptID      | int(10)     | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

为phonenumber的唯一约束命名为pn_1

MariaDB [wg]> alter table emp add constraint pn_1 unique(phonenumber);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

先添加外键字段,再增加外键约束

MariaDB [bw]> ALTER TABLE emp ADD CONSTRAINT fk_DeptID FOREIGN KEY (DeptID) REFERENCES dept(DeptID);
Query OK, 0 rows affected (0.02 sec)               
Records: 0  Duplicates: 0  Warnings: 0

删除唯一约束pn_1

MariaDB [bw]> alter table emp drop index pn_1;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

案例三

创建表,表结构和数据如下:
在这里插入图片描述
向新闻评论表中插入一行数据
插入多行数据

MariaDB [bw]> create table comments(cmtId int,newsId int,cmtContent varchar(255),cmtDte DATETIME,cmtIP varchar(12),cmtAuthor varchar(10));
Query OK, 0 rows affected (0.01 sec)

MariaDB [bw]> insert into comments values(1,1,"有深度","2019-01-01 00:00:00","192.168.1.2","张三1"),(2,1,"有深度","2018-12-03 00:00:00","192.168.1.2","张三2"),(3,1,"有深度","2018-12-03 00:00:00","192.168.1.2","张三3");
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

通过INSERT INTO SELECT语句将现有表中的数据添加到已存在的表中
注意:
newComments表必须预先创建,并具有cmtContent,cmtDate和cmtAuthor三列

MariaDB [bw]> create table newComments(cmtId int,newsId int,cmtContent varchar(255),cmtDte DATETIME,cmtIP varchar(12),cmtAuthor varchar(10));
Query OK, 0 rows affected (0.00 sec)

MariaDB [bw]> insert into newComments(cmtContent,cmtDte,cmtAuthor) select cmtContent,cmtDte,cmtAuthor from comments;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

通过CREATE TABLE SELECT语句将现有表中的数据添加到未存在的表中

MariaDB [bw]> create table newComments_v1 select * from comments;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

把cmtId号为一的评论内容改成“喜欢邓超”,评论日期改成“2019-01-01”。

MariaDB [bw]> update comments set cmtContent="喜欢邓超",cmtDte="2019-01-01" where cmtId=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

注意:
1、更新多列数据使用逗号隔开
2、勿忘条件限制,以防有效数据的丢失

删除:
DELETE FROM 表名 [WHERE条件];
注意:
有主外键关联表,先删外键表数据,再删除主键表数据
TRUNCATE TABLE 表名;
注意:
表结构及其字段、约束、索引保持不变
DELETE语句和TRUNCATE TABLE语句对比
在这里插入图片描述

案例四

请在bw_edu数据库中创建:wg_dep表,字段要求如下

字段名字段类型主键非空自增默认值
学号int(5)
班级varchar(5)
姓名varchar(10)
性别char(2)
年龄int(3)
阶段varchar(10)

在这里插入图片描述
成功请插入如下数据
在这里插入图片描述
在这里插入图片描述
请查询wg_dep表中专业阶段所有学生的信息
在这里插入图片描述
请统计wg_dep表中专业和专高阶段的人数
在这里插入图片描述
在这里插入图片描述
请查询wg_dep表中姓马的学生的信息
在这里插入图片描述
请查询wg_dep表中章子怡的学号
在这里插入图片描述

查询

在这里插入图片描述
DQL常用查询语句:
基本查询、条件查询、多条件查询、模糊查询、分组查询、连接查询、子查询
DQL包含的应用:
AS关键字、运算符、IN关键字、BETWEEN AND关键字、DISTINCT关键字、ORDER BY关键字、LIMIT关键字、NULL关键字、HAVING关键字、聚合函数
通配符:
在这里插入图片描述
获取新闻评论表中评论编号为1的新闻评论信息呢?
怎样查询评论日期是’2019-01-01’的新闻信息?
如何查询评论名字是张三1并且评论日期是‘2019-01-01’的信息呢?
怎样获取评论者名称中包含’东’字的数据记录
如何查询‘张’某的新闻评论信息?

每条新闻被评论的次数各是多少?
SELECT newsId 新闻编号,COUNT(*) AS 数量 FROM comments GROUP BY newsId
查询每条新闻被评论的次数并且按照降序排列
SELECT newsId 新闻编号,COUNT(*) AS 数量  FROM comments GROUP BY newsId ORDER BY COUNT(*) DESC;
每条新闻被评论的次数小于5次的信息?
SELECT newsId 新闻编号,COUNT(*) AS 数量  FROM comments  GROUP BY newsId HAVING COUNT(*)<5;
去重
去掉SELECT查询返回的记录结果中重复的记录, 相同记录只返回一条
SELECT   DISTINCT  字段名1, 字段名2...    FROM   表名
SELECT DISTINCT cmtContent FROM comments 

排序

一组数据按照升序或降序排列
在这里插入图片描述
MySQL查询语句中使用LIMIT子句限制结果集
在这里插入图片描述
查询从第三行开始接下来五条数据,怎么使用语法进行查询呢?
SELECT * FROM comments LIMIT 2,5
注意:
NULL特点
区别空字符串’’
只能出现在定义允许为NULL的字段
须使用 IS NULL 或 IS NOT NULL 比较操作符去比较

新闻评论表中cmtAuthor数据被删除后,使用IS NULL能查出来吗?
SELECT * FROM comments WHERE cmtAuthor = ‘ ’;
聚合函数是可以对一组值进行计算,并返回单个值的函数
在这里插入图片描述
SELECT 聚合函数 FROM <表名>
SELECT COUNT(*) AS 总数 FROM comments;
SELECT MAX(cmtDate) AS 最近评论时间 FROM comments;
问题:
每条新闻被评论的次数各是多少?

定义:分组查询是按照指定的字段分类汇总结果的查询方式
在这里插入图片描述
注意:
SELECT列表中只能包含:
1、被分组的列
2、为每个分组返回一个值的表达式,如聚合函数

问题:
查询每条新闻被评论的次数并且按照降序排列
每条新闻被评论的次数小于5次的信息?

高级查询

使用连接查询和子查询完成信息的查询功能
定义:连接查询是将多张表中记录按照指定的条件进行连接的查询方式
定义:内连接是返回连接表中符合连接条件记录的连接查询
定义:外连接是以一张表为基表,返回基表中所有记录及连接表中符合条件的记录的连接查询
定义:左外连接是以左表为基表,返回左表中所有记录及连接表中符合条件的记录的外连接
定义:右外连接是以右表为基表,返回右表中所有记录及连接表中符合条件的记录的外连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

新闻表
在这里插入图片描述
新闻栏目表
在这里插入图片描述
如何查询评论编号、评论内容以及新闻名称呢?
如何使用内连接查询新闻名称以及栏目名称呢?
注意:
内连接的两张表是没有主次之分的

问题;
如何查询评论编号、评论内容、新闻名称以及栏目名称呢?
如何使用左外连接查询新闻名称以及栏目名称呢?
如何使用右外连接查询新闻名称以及栏目名称呢?

子查询

定义:子查询是嵌套在其他SQL语句中的查询语句
注意:
先执行子查询,返回所有来自子查询的结果,再执行外围的父查询,
返回查询的最终结果
在这里插入图片描述

问题:
如何查询比‘张东’评论日期晚的新闻评论者信息?

如何查询不是评论者名称中包含‘东’字的新闻名称?

如果新闻评论者名称中包含‘张_’就查询新闻表的全部信息?

如果新闻评论者名称中包含‘张_峰’就查询新闻表的全部信息?

如果新闻评论者名称中不包含‘张_峰’就查询新闻表的全部信息?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS上安装和管理MySQL数据库,你可以按照以下步骤进行: 1. **安装MySQL**: 首先确保你的系统已经更新到最新状态并安装了必要的工具包。使用`yum`或`dnf`(如果你使用的是新版CentOS)来安装MySQL: ```bash sudo yum install mysql-server # 或者 sudo dnf install MariaDB-server # 如果你想安装MariaDB作为MySQL的替代品 ``` 2. **启动与设置密码**: 安装完成后,启动MySQL服务并设置root用户的密码: ```bash sudo systemctl start mysqld sudo mysql_secure_installation ``` 3. **登录MySQL**: 使用`mysql`命令行工具或者通过图形界面如MySQL Workbench登录(如果安装了)。 ```bash sudo mysql -u root -p ``` 4. **创建数据库**: 进入MySQL后,创建一个新的数据库: ```sql CREATE DATABASE your_database_name; ``` 5. **创建用户并授权**: 为新的数据库创建一个用户并赋予操作权限: ```sql CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost'; FLUSH PRIVILEGES; ``` 6. **增删改查**: - 插入数据 (`INSERT`): 如: ```sql INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2'); ``` - 查询 (`SELECT`): 获取数据示例: ```sql SELECT * FROM your_table WHERE column1 = 'value1'; ``` - 更新 (`UPDATE`): ```sql UPDATE your_table SET column1 = 'new_value' WHERE id = 1; ``` - 删除 (`DELETE`): ```sql DELETE FROM your_table WHERE id = 1; ``` 7. **关闭数据库**: 完成操作后,记得退出MySQL并关闭服务: ```bash exit sudo systemctl stop mysqld ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值