数据库(Database,DB):按照数据结构来组织、存储和管理数据的仓库,其本身可看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作。数据库基于某种目的以及规则进行管理的数据汇总。
SQL(Structured Query Language): 用于操作数据库的语言。
**数据库的分类:**分为层次型、网型、关系型。
层次型数据库:数据由一对多的亲子节点所连接,类似于数据结构中的树结构,是一种很古老的数据库形态,很难对信息进行击中管理。
网型数据库:数据以多对多的方式进行连接,类似与数据结构中的图结构,虽然可以集中管理数据,但是数据间的关系过于复杂,管理起来非常困难。
关系型数据库:数据通过行和列所构成的表进行管理。各个数据间保持独立、便于管理,并且表之前可以自由组合关联,因此,是现今最广泛应用的数据库类型。
数据库管理系统(Database Management System,DBMS):是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。主要具有数据的插入、更新、删除、排序、查询、共享(由多个软件共享数据)
关系数据库:通过行(row)和列(column)所构成的表形式来管理数据,即称为表(table)。关系数据库拥有表之间进行关联的运作机制。关系数据库是由名为**关系数据库管理系统(Relational Database Management System,简称RDBMS)**的软件进行管理。关系数据库具体代表有SQL server、Oracle、MySQL、PostgreSQL等。
主键(primary key):是指表中用于标识某一行的列。比如,在一张表中,我们可以对一个学号、职工号等对某人进行标识、区分,避免不同人的属性相同造成的混乱,无法区分。在一个表中只能设置唯一的一个主键。同时,给表设置主键后,能轻松的对表进行关联。
复合主键:有时只把一列设置为主键,无法区分,例如,地址的数据表中,只把区作为主键,会存在市、县等相同的情况,达不到区分,虽然主键在一张表格中只能设置一个,但是可以把多个列组合到一起作为主键使用,称这样的主键为复合主键。
视图:在现有的表中提取需要的部分,抛弃原有的格式,作为虚拟的表进行展示的功能,就是视图。
根据数据库语言的功能可分为:数据定义语言(DDL:Data Definition Language)、数据操作语言(DML:Data Manipulation Language)、数据控制语言(Data Control Language)。
**数据库创建:**数据存储在表内,而表又保存在数据库中,故首先要创建数据库。创建数据库时使用的是CREATE DATABASE 语句。
代码运行软件:SQL server 2019
CREATE DATABASE 数据库名; --SQL语句不区分大小写
--SQL示例 创建COURSE数据库
CREATE DATABASE COURSE;
选择数据库:RDBMS在连接之后会自动选择默认的数据库。因此想要在SQL server中使用新创建的数据库,需要通过USE来选择。
USE 数据库名; --如果不选择对应的数据库,就无法使用其中的值。
**创建表格:**创建表格时,使用CREATE TABLE语句。
--简单的表结构,其中的变量名就是表中的列名
CREATE TABLE 表名(
存储变量名1 变量类型1,
存储变量名2 变量类型2,
.....
存储变量名n 变量类型n
);
--SQL示例 创建course表
CREATE TABLE course(
courseName VARCHAR(20),
teacherName VARCHAR(10),
studentPeople INT,
teacherID INT
);
约束:是用来保证存入的数据能够一直保持正确状态的条件。创建表时,设置约束,可以对数据的输入进行控制。
约束分类:一种时设置在单列上的列级约束,另一种是同时作用于多个列的表级约束,而复合约束则是属于后者。
列级约束:写在数据类型之后,空格进行分隔。
表级约束:写在所有列的定义后。
--SQL示例 增加约束
CREATE TABLE course(
courseName VARCHAR(20),
teacherName VARCHAR(10),
studentPeople INT UNIQUE, --列级约束:对学生人数进行约定
teacherID INT,
PRIMARY KEY (teacherName,teacherID) --表级约束:对老师姓名,以及其职工号进行约束,定义复合主键
);
约束的主要几种:
约束 | 功能 |
---|---|
PRIMARY KEY (主键) | 禁止数据重复,禁止NULL值 |
UNIQUE | 数据具有唯一性 |
CHECK(表达式) | 预先准备表达式,禁止与之不符的数据 |
NOT NULL | 禁止NULL 值 |
DEFAULT = 值 | 预先设置的值将会作为默认值 |
添加数据:向表中添加数据时,使用INSERT 语句,需要添加数据的目的表则跟在INTO之后。
INSERT INTO 目的表名 (变量名1,变量名2,...,变量名n) VALUES (数据1,数据2,...,数据n);
USE COURSE; --连接COURSE数据库
INSERT INTO course(courseName,teacherName,studentPeople,teacherID) VALUES ('Java语言','TL2',64,981097);
**获取数据:**从表中获取已有的数据时,使用SELECT语句,从什么表中获得,可用FROM语句指定
SELECT * FROM 表名; --星号(*)表示提取全部列
--SQL获取全部数据
USE COURSE;--连接COURSE数据库
SELECT * FROM course;
SELECT 列名 FROM 表名;
--查询courseName一列
USE COURSE;--连接COURSE数据库
SELECT courseName FROM course;
SELECT 列名1,列名2,..,列名n FROM 表名;
--查询courseName和teacherID
USE COURSE;--连接COURSE数据库
SELECT courseName,teacherID FROM course;
**指定条件查询:**只提取特定条件的数据时,使用WHERE子句。
--以指定多列为例
SELECT 列名1,列名2,..,列名n FROM 表名 WHERE 表达式;
--查询学生人数大于64的课程
USE COURSE;--连接COURSE数据库
SELECT * FROM course WHERE studentPeople >64;
SQL server的指定方法:
1.使用TOP子句可以指定从前往后提取行数。
--以指定多列为例
SELECT TOP(行数) PERCENT 列名1,列名2,..,列名n FROM 表名;
--查询前五行
USE COURSE;--连接COURSE数据库
SELECT TOP(5) * FROM course;
--以指定多列为例
SELECT TOP(百分比) PERCENT 列名1,列名2,..,列名n FROM 表名;
--查询前20%
USE COURSE;--连接COURSE数据库
SELECT TOP(20) PERCENT * FROM course;
--以指定多列为例
SELECT 列名1,列名2,..,列名n FROM 表名 ORDER BY 列名 ASC; --ASC表示降序排序,可以不写
SELECT 列名1,列名2,..,列名n FROM 表名 ORDER BY 列名 DESC; --DESC表示升序排序
--以指定多列为例
SELECT 列名1,列名2,..,列名n FROM 表名 ORDER BY 列名1,列名2,...,列名N; --首先以列名1排序,如果列名1相同,再看列名2,- --一直往下
--以指定多列为例
SELECT 列名1,列名2,..,列名n FROM 表名 WHERE 表达式 ORDER BY 列名 DESC;
--查询teacherName为TL2的数据,并降序排列
USE COURSE;--连接COURSE数据库
SELECT * FROM course WHERE teacherName= 'TL2' ORDER BY teacherID ASC;
对数据进行分组:使用GROUP BY 之后,指定的列中拥有相同的数据的行,将会分组合并到一行中。要与聚合函数一起使用。
SELECT 列名,聚合函数 FROM 表名 GROUP BY 列名;
--对teacherName进行分组
USE COURSE;--连接COURSE数据库
SELECT teacherName,COUNT(teacherName) FROM course GROUP BY teacherName;
去除重复的数据:使用DISTINCT可以去除数据中重复的部分。
--以指定多列为例
SELECT DISTINCT 列名1,列名2,..,列名n FROM 表名;
--去除teacherName相同的部分,数据库里并没用去除,只是显示的时候去除显示
USE COURSE;--连接COURSE数据库
SELECT DISTINCT teacherName FROM course;
改变显示列名:利用AS运算符可以把现有的列名变成其他名称,但生效的位置只是显示名称,并不会改变原来的列名。
SELECT 原有列名 AS 更改改后的列名 FROM 表名;
整数类型表:处理整数
使用方法 | 可处理的数据 |
---|---|
INT | 整数 |
SMALLINT | 比INT范围更下的正数 |
实数型表:处理带有小数点的数值
使用方法 | 可处理数据 |
---|---|
DECIMAL(m,n) | 可以决定数值精度,其中m表示总位数,而n表示小数点以后的位数,m、n可以省略,如果省略,则小数部分四舍五入。 |
NUMERIC(m,n) | 可以决定数值精度,其中m表示总位数,而n表示小数点以后的位数,m、n可以省略,如果省略,则小数部分四舍五入。 |
REAL | 单精度浮点数 |
FLOAT(n) | 浮点数,如果n<24,则与REAL相同。 |
FLOAT(53) | 双精度浮点数 |
字符串型:处理字符串
使用方法 | 可处理数据 |
---|---|
CHAR(n) | 长度固定的字符串(n字节内) |
VARCHAR(n) | 长度可变的字符串(n字节内) |
TEXT | 文本类的大量字符串 |
NCHAR(n) | 长度固定的UNICODE字符串(n字节内) |
NVARCHAR(n) | 长度可变的UNICODE字符串(n字节内) |
NTEXT | 文本类的大量UNICODE字符串 |
**日期和时间类型:**处理日期和时间
使用方法 | 可处理数据 |
---|---|
DATA | 日期(YYYY-MM-DD) |
TIME | 时间(HH:MM:SS) |
SMALLDATATIME | 自动更新的日期和时间(精确分钟) |
DATATIME | 自动更新的日期和时间(精确毫秒) |
DATATIME2 | 自动更新的日期和时间(精确纳秒) |
布尔型:处理真假判断
使用方法 | 可处理数据 |
---|---|
BOOLEAN | TRUE(真)、FALSE(假)、UNKNOW(未知)其中之一 |
**二进制型:**处理图像数据、声音数据等无法用文本或数值来表示的数据,由于本文以SQL server为基础编译的数据库,故有部分可能与SQL99有出入,但相差不大
使用方法 | 可处理的数据 |
---|---|
BIT/BINARY | 长度固定的bit列(上限为n bit)SQL server不能指定长度n |
VARBINARY | 长度可变的bit列(上限为n bit)SQL server不能指定长度n |
VARBINARY | 二进制数据 |
运算符和功能 | 使用方法 |
---|---|
+(加法) | a+b |
-(减法) | a-b |
*(乘法) | a*b |
/(除法) | a/b |
%(求余) | a%b |
--以乘法举例
列名 * 数值
列名 * 列名
--将学生人数加33并改变列名显示
USE COURSE;--连接COURSE数据库
SELECT courseName,(studentPeople + 33) AS studentSUM FROM course;
比较运算符:在WHERE子句中加入值或数值之间进行比较的条件表达式,会改变语句的处理方式。条件成立时,表达式返回运算结果“true”,反之结果为“false”。
运算符 | 使用方法 | 含义 |
---|---|---|
= | a=b | a等于b |
< | a<b | a小于b |
<= | a<=b | a小于等于b |
> | a>b | a大于b |
>= | a>=b | a大于等于b |
<> 或者 != | a<>b 或者 a!=b | a不等于b |
--建立学生数据库,并进行运算符操作
--CREATE DATABASE STUDENT;
USE STUDENT;
--CREATE TABLE student(
-- id INT,
-- [name] VARCHAR(10),
-- ENGLISH INT,
-- MATH INT
--);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (201212,'TL1',86,70);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (202014,'TL2',90,90);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (202014,'TL3',87,84);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (202014,'TL4',86,86);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (202014,'TL5',82,73);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (202014,'TL6',79,86);
INSERT INTO student (id,[name],ENGLISH,MATH) VALUES (202014,'TL7',91,95);
--使用WHERE子句把条件为false的踢出,选出满足true的数据
USE STUDENT;--连接COURSE数据库
SELECT [NAME],MATH FROM student WHERE MATH >= 90;
逻辑运算符:可以把多个条件组合起来,形成更加复杂的条件。
运算符 | 使用方法 | 含义 |
---|---|---|
AND (与) | (a>10)and (a<20) | a大于10且a小于20 |
OR(或) | (a=5) or (a=10) | a等于5或10 |
NOT(非) | not (a=20) | a不等于20 |
--选出数学大于80且小于90时的数据
USE STUDENT;--连接COURSE数据库
SELECT [NAME],MATH FROM student WHERE (MATH < 90) AND (MATH > 80);
字符串联运算符:把字符连接起来,SQL server 用+运算符。
列名 + 列名
--例如:
SELECT 列名1+列名2 FROM 表名;
字符串比较:想获取字符串中包含特定的字符串的数据时,需要使用LIKE 运算符。
设定方法:
运算符 | 功能 | 使用方法 | 含义 |
---|---|---|---|
% | 相当与0~任意长度的文字列 | %T% | 包含T的任何字符串 |
_(下划线) | 相当于一个字符 | T_ | 以T开头的两个字符的字符串 |
--选取出name中含T开头的数据
USE STUDENT;--连接COURSE数据库
SELECT * FROM student WHERE [name] LIKE 'T%'; --其中name为进行比较的列名,T%表示以T开头的字符串
BETWEEN运算符:使用between~and可以指定范围,可用比较运算符替换
列名 BETWEEN 小范围数 AND 大范围数
--选出数学大于80且小于90时的数据
USE STUDENT;--连接COURSE数据库
SELECT [NAME],MATH FROM student WHERE MATH BETWEEN 80 AND 90;
IS NULL运算符:判断指定列的值是否为NULL。
列名 IS NULL ....指定列的值为NULL,则为true,否则为false
列名 IS NOT NULL ....指定列的值不为NULL,则为true,否则为false
**IN运算符:**使用IN运算符,仅会从特定的数据里面提取与()中某项值相同的数据,判断数据是否在IN后面的数据中。其中NOT IN 则表示指定值意外的数据,可用比较运算符替换
列名 IN (数据1,数据2,...,数据N)
列名 NOT IN (数据1,数据2,...,数据N)
--选出数学为80或90的数据
USE STUDENT;--连接COURSE数据库
SELECT [NAME],MATH FROM student WHERE MATH IN (80 , 90);
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数