网站建设程序代码,网络安全行业公司排名,软件技术就业前景怎么样,德州建网站文章目录 前言一、数据库相关概念1. 什么是数据库2. 数据库的种类3. Mysql 简介4. SQL简介5. 数据库中常见的数据类型 二、SQL基础1. SQL通用语法2. SQL的主要分类3. DDL#xff08;数据库#xff0c;表#xff0c;索引#xff0c;视图#xff09;4. DML#xff08;数据的… 文章目录 前言一、数据库相关概念1. 什么是数据库2. 数据库的种类3. Mysql 简介4. SQL简介5. 数据库中常见的数据类型 二、SQL基础1. SQL通用语法2. SQL的主要分类3. DDL数据库表索引视图4. DML数据的插入更新删除5. DQL数据查询6. DCL数据访问权限控制 三、SQL入门案例1. DDL入门案例2. DML入门案例3. DQL入门案例4. DCL入门案例 总结 前言
为了巩固所学的知识作者尝试着开始发布一些学习笔记类的博客方便日后回顾。当然如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚文章中如果有记录错误欢迎读者朋友们批评指正。 博客的参考源码可以在我主页的资源里找到如果在学习的过程中有什么疑问欢迎大家在评论区向我提出 一、数据库相关概念 1. 什么是数据库
数据库是指一组相互关联的数据集合它们以一定的方式组织、存储和管理以方便数据的查找、访问和管理。在计算机科学中数据库是一种用于存储和管理数据的软件系统它支持数据的创建、读取、更新和删除操作 2. 数据库的种类
常见的数据库种类包括关系型数据库和非关系型数据库关系型数据库是指使用关系模型来组织和管理数据的数据库。关系模型是一种基于表的数据模型其中每个表代表一种实体类型而每个行代表一个实体实例。关系型数据库使用结构化查询语言SQL来管理和操作数据。常见的关系型数据库包括MySQL、Oracle 和 SQL Server 等非关系型数据库是指不使用关系模型来组织和管理数据的数据库。它们使用不同的数据模型和查询语言来管理和操作数据。非关系型数据库通常用于处理大量非结构化数据例如文本、图像和音频等。常见的非关系型数据库包括MongoDB、Redis和Cassandra等 3. Mysql 简介
1. 认识Mysql
MySQL是一种开源的关系型数据库管理系统RDBMS它是目前最流行和广泛使用的数据库之一。 MySQL以其高性能、可靠性和易用性而闻名并被广泛应用于各种规模的应用程序和网站
2. MySQL的特点和功能
开源性MySQL是开源软件可以免费获得并进行修改和定制。这使得它非常适合个人开发者和小型企业跨平台MySQL可在多个操作系统上运行包括Windows、Linux、macOS等提供了广泛的平台支持高性能MySQL通过优化的查询处理、索引机制和缓存策略等技术提供了出色的性能和响应速度。它能够处理大规模数据集和高并发访问可扩展性MySQL支持水平和垂直扩展可以根据需求轻松地扩展数据库的容量和性能完整的功能集MySQL支持标准的SQL查询语言具有丰富的特性和功能包括事务支持、触发器、存储过程、复制和高可用性选项等数据安全MySQL提供了强大的安全机制包括用户认证、权限管理、数据加密和安全连接等以保护数据的机密性和完整性大型社区支持MySQL拥有庞大的开源社区提供了丰富的文档、教程和支持资源。开发者可以从社区中获取帮助、分享经验和解决问题
总体而言MySQL是一种可靠、高性能且易于使用的关系型数据库管理系统。无论是用于小型网站、企业应用还是大规模数据处理MySQL都提供了强大的功能和灵活的解决方案。它是许多开发人员和组织构建可靠数据库应用程序的首选工具之一 4. SQL简介
SQLStructured Query Language结构化查询语言是一种用于管理关系型数据库的标准化查询语言。 SQL由美国国家标准学会ANSI和国际标准化组织ISO制定并标准化它定义了一组操作关系型数据库的语法和语义规则。SQL被广泛应用于各种类型的应用程序和网站并成为了处理和管理数据的标准方式 5. 数据库中常见的数据类型
在DDL数据定义语言中您可以使用不同的数据类型来定义表中的列。不同的数据库管理系统DBMS支持的数据类型可能会有所不同以下是一些常见的DDL表操作数据类型示例
数据类型示例整数类型INT整数、BIGINT大整数、SMALLINT小整数、TINYINT微小整数浮点数类型FLOAT浮点数、DOUBLE双精度浮点数、DECIMAL固定精度的十进制数字符串类型CHAR(n)固定长度的字符、VARCHAR(n)可变长度的字符、TEXT长文本日期和时间类型DATE日期、TIME时间、DATETIME日期和时间、TIMESTAMP时间戳布尔类型BOOLEAN布尔值二进制类型BLOB二进制大对象、BINARY二进制数据、VARBINARY可变长度的二进制数据其他特殊类型ENUM枚举类型限定为预定义的值列表、SET集合类型限定为预定义的值集合
这些是一些常见的数据类型示例实际上不同的DBMS可能还支持其他的数据类型或拥有特定的数据类型命名约定。在创建表时您可以根据需要选择适当的数据类型来定义表中的列。确保根据数据的特性和需求选择正确的数据类型以确保数据的准确性和一致性。 二、SQL基础 1. SQL通用语法 SQL语句可以单行或多行书写以分号结尾SQL语句可以使用空格/缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写关键字建议使用大写注释 ---- 单行注释 - - 注释内容 或 # 注释内容(MySQL特有 ---- 多行注释 /注释内容/ 2. SQL的主要分类
分类全称说明DDLData Definition Language数据定义语言用来定义数据库对象(数据库表字段)DMLData Manipulation Language数据操作语言用来对数据库表中的数据进行增删改DOLData Querv Language数据查询语言用来查询数据库中表的记录DCLData ControlLanguage数据控制语言用来创建数据库用户、控制数据库的访问权限 3. DDL数据库表索引视图
在关系型数据库中DDL数据定义语言扮演着至关重要的角色。DDL是一组用于定义数据库结构和模式的SQL命令它使我们能够创建、修改和删除数据库对象如表、视图和索引
1. DDL – 数据库操作
创建数据库CRFATE DATABASE [ IF NOT EXISTS ] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]例如示例命令语句创建了一个名为my_database的数据库。
CREATE DATABASE my_database;删除数据库DROP DATABASE例如示例命令语句删除了名为my_database的数据库。
DROP DATABASE my_database;查询所有数据库SHOW DATABASES 查询当前数据库 SELECT DATABASE) 使用数据库 USE 数据库名
2. DDL – 表操作
创建表CREATE TABLE创建表是数据库设计的第一步。使用CREATE TABLE语句可以定义表的名称、列名和数据类型。例如下面的语句创建了一个名为users的表包含id、name和age三个列
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),age INT
);查询表 查询当前数据库所有表 SHOW TABLES查询表结构 DESC 表名查询指定表的建袭语句 SHOW CREATE TABLE 表名修改表结构ALTER TABLE在数据库使用过程中可能需要修改表的结构例如添加新列、更改列的数据类型或删除列。ALTER TABLE语句用于这些操作。下面是一些示例 添加新列 ALTER TABLE users
ADD email VARCHAR(100);修改列的数据类型 ALTER TABLE Customers
ADD COLUMN phone_number VARCHAR(20);删除列 ALTER TABLE users
DROP COLUMN email;删除表DROP TABLE如果不再需要某个表可以使用DROP TABLE语句将其从数据库中删除。请谨慎使用该命令因为删除表将同时删除表中的所有数据。示例如下
DROP TABLE users;3. 创建索引CREATE INDEX
索引可以提高对表中数据的检索效率。 使用 CREATE INDEX 语句可以在表的列上创建索引。例如以下命令在users表的name列上创建了一个索引
CREATE INDEX idx_users_name ON users (name);4. 创建视图CREATE VIEW
视图是基于表的虚拟表它是通过SELECT语句定义的。 使用 CREATE VIEW 语句可以创建视图。例如以下命令创建了一个名为active_users的视图该视图包含所有users表中状态为active的行
CREATE VIEW active_users AS
SELECT * FROM users WHERE status active;4. DML数据的插入更新删除
1. 认识DML
在关系型数据库中DML数据操纵语言是一组用于操作数据库中数据的SQL命令。DML允许我们对表中的数据进行插入、更新、删除和查询操作是SQL中最常用的部分之一
2. 插入数据INSERT
插入数据是向表中添加新行的操作。使用INSERT语句可以将数据插入到表中的特定列。 例如下面的语句将一条新记录插入到名为users的表中
INSERT INTO users (name, age, email) VALUES (John Doe, 25, johndoeexample.com);给指定字段添加数据 语法格式 INSERT INTO 表名(字段名1, 字段名2,…) VALUES (值1,值2,…); 给全部字段添加数据 语法格式INSERT INTO 表名 VALUES (值1, 值2, …); 批量添加数据 语法格式 INSERTINTO 表名(字段名1, 字段名2, …) VALUES(值1,值2,…), (值1,值2,…),(值1, 值2,…);INSERTINTO 表名 VALUES (值1, 值2,…),(值1, 值2, …),(值1,值2,…) ; 注意事项 插入数据时指定的字段顺序需要与值的顺序是一一对应的字符串和日期型数据应该包含在引号中插入的数据大小应该在字段的规定范围内 3. 更新数据UPDATE
更新数据是修改表中现有行的操作。使用UPDATE语句可以更改表中的数据。 例如下面的语句将名为John Doe的用户年龄更新为30
UPDATE users SET age 30 WHERE name John Doe;一般格式 语法格式UPDATE 表名 SET 字段名1 值1,字段名2 值2,…[ WHERE 条件]; 注意事项 修改语句的条件可以有也可以没有如果没有条件则会修改整张表的所有数据 4. 删除数据DELETE
删除数据是从表中删除行的操作。使用DELETE语句可以删除满足特定条件的行。 例如下面的语句将删除名为John Doe的用户
DELETE FROM users WHERE name John Doe;一般格式 语法格式DELETE FROM 表名[WHERE 条件] 注意事项 DELETE 语句的条件可以有也可以没有如果没有条件则会删除整张表的所有数据DELETE 语句不能删除某一个字段的值(可以使用UPDATE)。 5. DQL数据查询
1. 认识DQL
在关系型数据库中DQL数据查询语言是一组用于从数据库中检索数据的SQL命令。DQL允许我们以各种条件和方式查询表中的数据获取所需的结果
2. 基本查询SELECT
查询多个字段 语法格式 SELECT 字段1,字段2, 字段3 … FROM 表名)SELECT*FROM 表名: SELECT * FROM users;基本查询是最常见的DQL操作用于从表中检索数据。 使用SELECT语句可以选择列和行从而获取所需的数据。例如上面的语句将检索名为users的所有行和列
设置别名 语法格式SELECT 字段1 [AS 别名1],字段2 [AS 别名2] … FROM 表名 去除重复记录 语法格式SELECT DISTINCT 字段列表 FROM 表名 3. 条件查询WHERE
条件查询允许我们根据指定的条件检索符合条件的数据。 使用WHERE子句可以过滤查询结果。例如下面的语句将检索名为John Doe的用户信息
SELECT * FROM users WHERE name John Doe;一般格式 语法格式SELECT 字段列表 FROM 表名 WHERE 条件列表 条件列表
比较运算符功能大于大于等于小于小于等于等于 或 !不等于BETWEEN … AND …在某个范围之内含最小、最大值IN(…)在in之后的列表中的值多选一LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)IS NULL是NULL
逻辑运算符功能AND 或并且(多个条件同时成立)OR或或者(多个条件任意一个成立)NOT 或!非不是
4. 排序查询ORDER BY
排序查询允许我们按照指定的列对查询结果进行排序。使用ORDER BY子句可以按升序ASC或降序DESC对查询结果进行排序。 例如下面的语句将按年龄对用户进行降序排序
SELECT * FROM users ORDER BY age DESC;一般格式 语法格式SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2 排序方式 ASC:升序 (默认值)DESC:降序 5. 聚合查询GROUP BY)
聚合查询允许我们根据指定的列对数据进行分组并对每个组应用聚合函数如SUM、COUNT、AVG等使用GROUP BY子句可以执行聚合查询。 例如下面的语句将计算每个城市的用户数量
SELECT city, COUNT(*) FROM users GROUP BY city;一般格式 语法格式SELECT 聚合函数(字段列表) FROM 表名 常见聚合函数
函数功能count统计数量max最大值min最小值avg平均值sum求和
注意 null值不参与所有聚合函数运算 6. 分组查询
数据库分组查询是一种对数据库表进行聚合计算和分组的查询方式。 它可以根据指定的字段进行分组并对每个分组进行聚合计算例如求和、平均值、最大值、最小值等 。常见的分组查询语句是SQL语句中的GROUP BY子句。 下面是一个示例它查询一个订单表中每个客户的总订单金额
SELECT customer_id, SUM(total_amount)
FROM orders
GROUP BY customer_id;在上面的查询中GROUP BY子句指定了按照customer_id字段进行分组SUM函数对每个分组内的total_amount字段进行求和计算。查询结果将返回每个客户的customer_id和对应的总订单金额
一般格式 语法格式SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件]; where与having区别 执行时机不同: where是分组之前进行过滤不满足where条件不参与分组而having是分组之后对结果进行过滤。判断条件不同: where不能对聚合函数进行判断而having可以 7. 分页查询
分页查询是一种对数据库中的数据进行分段查询的方式通常用于显示大量数据的情况下将数据分页显示提高浏览效率。分页查询可以通过LIMIT和OFFSET关键字来实现。
一般格式 语法格式SELECT 字段列表 FROM 表名 LIMIT 起始索引查询记录数; 假设我们有一个员工表其中包含员工的姓名和工资信息我们想要查询前10个工资最高的员工并按照工资从高到低排序可以使用以下SQL语句
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;在上面的查询中我们使用ORDER BY子句按照工资从高到低进行排序并使用LIMIT关键字限制返回的记录数为10条。这将返回工资最高的前10个员工的姓名和工资信息。
如果我们想要从第11个记录开始查询下一页数据可以使用OFFSET关键字例如
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 10;这个查询将返回第11到第20个工资最高的员工的姓名和工资信息
注意 起始索引从0开始起始索引 (查询页码 -1) * 每页显示记录数分页查询是数据库的方言不同的数据库有不同的实现MysQL中是LIMIT如果查询的是第一页数据起始索引可以省略直接简写为 limit 10在使用OFFSET时应当考虑到数据的变化因为如果在两次分页查询之间有新的数据被添加或删除可能会导致分页结果出现重叠或遗漏的情况 8. 连接查询JOIN
连接查询允许我们从多个表中检索相关数据。使用JOIN子句可以根据指定的条件将多个表连接起来。 例如下面的语句将从users表和orders表中检索有关用户和订单的信息
SELECT users.name, orders.order_id FROM users JOIN orders ON users.id orders.user_id;9. DQL执行顺序 6. DCL数据访问权限控制
1. 认识DCL
在关系型数据库中DCL数据控制语言是一组用于管理和控制数据库中的数据访问权限的SQL命令。 通过使用DCL命令我们可以定义用户权限、授予或撤销权限并管理数据库对象的安全性
2. 用户权限管理
基础命令
用户权限管理是DCL的重要部分它涉及定义和管理用户对数据库的访问权限。 以下是一些常用的DCL命令用于用户权限管理
命令说明CREATE USER创建新用户并分配用户名和密码ALTER USER修改用户的属性例如修改密码或锁定用户账户DROP USER删除用户同时撤销其对数据库的访问权限GRANT授予用户特定的权限例如SELECT、INSERT、UPDATE等REVOKE撤销用户的权限限制其对数据库对象的访问
示例 查询用户 USE mysql;
SELECT * FROM user;创建用户 CREATE USER 用户名主机名 IDENTIFIED BY 密码修改用户密码 ALTER USER 用户名主机名 IDENTIFIED WITH mysql_native_password BY 新密码;删除用户 DROP USER 用户名主机名;注意 主机名可以使用 % 通配这类SQL开发人员操作的比较少主要是DBA ( Database Administrator 数据库管理员) 使用 3. 对象权限管理
基础权限
对象权限管理涉及定义和管理用户对数据库对象如表、视图、存储过程等的访问权限。 以下是一些常用的DCL命令用于对象权限管理
权限说明GRANT授予用户对特定对象的权限例如SELECT、INSERT、UPDATE等REVOKE撤销用户对特定对象的权限限制其对对象的访问WITH GRANT OPTION允许被授权的用户将其权限授予其他用户ALLALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表DROP删除数据库/表/视图CREATE创建数据库/表
示例 查权限 SHOW GRANTS FOR 用户名主机名;授予权限 GRANT 权限列表 ON 数据库名.表名 TO 用户名主机名撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM 用户名主机名;注意 多个权限之间使用逗号分隔授权时数据库名和表名可必使用 * 进行通配代表所有 4. 事务管理
事务管理是DCL的一部分它涉及控制和管理数据库中的事务。 以下是一些常用的DCL命令用于事务管理
命令说明COMMIT提交事务将已执行的操作永久保存到数据库中ROLLBACK回滚事务撤销已执行的操作恢复到事务开始之前的状态SAVEPOINT设置保存点允许在事务中创建一个标记以便在需要时回滚到该标记所在的状态
5. 数据库对象的安全性
DCL也涉及管理和维护数据库对象的安全性。 以下是一些常用的DCL命令用于数据库对象的安全性管理
命令说明CREATE SCHEMA创建模式用于组织和管理数据库对象ALTER SCHEMA修改模式的属性例如更改模式的所有者DROP SCHEMA删除模式同时删除其中的所有对象 三、SQL入门案例 1. DDL入门案例
案例需求设计一张员工信息表要求如下: 编号(纯数字)员工工号(字符串类型长度不超过10位)员工姓名(字符串类型长度不超过10位)性别(男/女存储一个汉字)年龄(正常人年龄不可能存储负数)身份证号(二代身份证号均为18位身份证中有X这样的字符)入职时间 (取值年月日即可) SQL语句
CREATE TABLE employee (id INT PRIMARY KEY COMMENT 编号,employee_number VARCHAR(10) COMMENT 员工工号,name VARCHAR(10) COMMENT 员工姓名,gender CHAR(1) COMMENT 男/女,age TINYINT COMMENT 正常人年龄不可能存储负数,id_card CHAR(18) COMMENT 二代身份证号均为18位身份证中有X这样的字符,hire_date DATE COMMENT 取值年月日即可
) COMMENT 员工信息表;效果及解析
在上面的表中每个字段的含义如下 id: 员工信息的唯一编号采用纯数字类型使用INT类型作为表的主键中文别名为“编号”。employee_number: 员工工号采用字符串类型长度不超过10位使用VARCHAR(10)类型中文别名为“员工工号”。name: 员工姓名采用字符串类型长度不超过10位使用VARCHAR(10)类型中文别名为“员工姓名”。gender: 员工性别使用一个汉字表示采用CHAR(1)类型中文别名为“性别”。age: 员工年龄采用TINYINT类型适合存储正常人的年龄不可能存储负数中文别名为“年龄”。id_card: 员工身份证号采用CHAR(18)类型适合存储18位身份证号码包括可能出现的字符X中文别名为“身份证号”。hire_date: 员工入职时间采用DATE类型存储年月日即可中文别名为“入职时间”。 2. DML入门案例 假设我们有一个学生表其中包含学生的学号、姓名、年龄和班级信息。我们可以使用DML语句向该表中插入一条学生记录例如
INSERT INTO students (id, name, age, class)
VALUES (1001, 张三, 18, 一班);在上面的语句中我们使用INSERT INTO关键字指定要插入数据的表名和列名并使用VALUES关键字指定要插入的数据值。这个语句将向students表中插入一条学号为’1001’姓名为’张三’年龄为18班级为’一班’的学生记录。
接下来我们可以使用UPDATE语句来修改该学生的年龄信息例如
UPDATE students
SET age 19
WHERE id 1001;在上面的语句中我们使用UPDATE关键字指定要更新的表名和列名并使用SET关键字指定要更新的数据值。这个语句将更新学号为’1001’的学生的年龄为19岁。
最后我们可以使用DELETE语句来删除该学生的记录例如
DELETE FROM students
WHERE id 1001;在上面的语句中我们使用DELETE FROM关键字指定要删除的表名并使用WHERE关键字指定要删除的记录条件。这个语句将删除学号为’1001’的学生记录。
需要注意的是DML语句会对数据库中的数据进行增删改操作因此在使用时需要谨慎避免误操作造成数据丢失或数据不一致的情况。 3. DQL入门案例
1. 查询年龄为20,21,22,23岁的员工信息
SELECT *
FROM employees
WHERE age IN (20, 21, 22, 23);2. 查询性别为 男并且年龄在 20-40 岁(含)以内的姓名为三个字的员工
SELECT name
FROM employees
WHERE gender 男 AND age BETWEEN 20 AND 40 AND LENGTH(name) 3;3. 统计员工表中年龄小于60岁的男性员工和女性员工的人数
SELECT gender, COUNT(*)
FROM employees
WHERE age 60
GROUP BY gender;4. 查询所有年龄小于等于35岁员工的姓名和年龄并对查询结果按年龄升序排序如果年龄相同按入职时间降序排序
SELECT name, age
FROM employees
WHERE age 35
ORDER BY age ASC, hire_date DESC;5. 查询性别为男且年龄在20-40 岁(含)以内的前5个员工信息对查询的结果按年龄升序排序年龄相同按入职时间升序排序
SELECT *
FROM employees
WHERE gender 男 AND age BETWEEN 20 AND 40
ORDER BY age ASC, hire_date ASC
LIMIT 5;4. DCL入门案例
案例背景
假设我们有一个名为OnlineStore的关系型数据库其中包含以下两个表Customers顾客和Orders订单。我们希望通过DCL命令来管理和控制用户对这些表的访问权限
用户权限管理
首先我们需要创建一个新用户并分配用户名和密码。假设我们要创建一个名为manager的用户。下面是创建用户的DCL命令
CREATE USER manager IDENTIFIED BY password;接下来我们可以使用GRANT命令授予用户相应的权限。例如我们可以授予manager用户对Customers表的SELECT和INSERT权限。下面是授予权限的DCL命令
GRANT SELECT, INSERT ON Customers TO manager;对象权限管理
在上述案例中我们已经授予了manager用户对Customers表的SELECT和INSERT权限。现在假设我们想撤销该用户对Customers表的INSERT权限。下面是撤销权限的DCL命令
REVOKE INSERT ON Customers FROM manager;此时manager用户只能对Customers表执行SELECT操作而无法执行INSERT操作
事务管理
事务管理是DCL的一部分它涉及控制和管理数据库中的事务。假设我们想在Orders表中插入一条新订单并确保该操作是原子的要么全部成功要么全部回滚。下面是使用事务管理的DCL命令
BEGIN TRANSACTION;
INSERT INTO Orders (order_id, customer_id, total_amount) VALUES (1, 1001, 50.00);
COMMIT;如果在插入订单的过程中发生任何错误可以使用ROLLBACK命令回滚事务撤销已执行的操作恢复到事务开始之前的状态
数据库对象的安全性
DCL也涉及管理和维护数据库对象的安全性。假设我们想创建一个新的模式Schema来存储敏感数据并将其保护起来只允许特定的用户访问。下面是创建模式和设置权限的DCL命令
CREATE SCHEMA secure_schema;
GRANT ALL PRIVILEGES ON SCHEMA secure_schema TO manager;通过以上命令我们创建了一个名为secure_schema的模式并授予manager用户对该模式的所有权限 总结
欢迎各位留言交流以及批评指正如果文章对您有帮助或者觉得作者写的还不错可以点一下关注点赞收藏支持一下。 博客的参考源码可以在我主页的资源里找到如果在学习的过程中有什么疑问欢迎大家在评论区向我提出