第三阶段数据库-1:数据库基础

1_数据库的概念

(1)数据库的特点:

  • 海量存储数据、数据检索非常方便。

  • 保持数据信息的一致、完整,并实现数据的共享和安全。

  • 通过组合分析,产生新的有用信息。

(2)DBMS与DBA

DBMS:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。 详细:https://baike.baidu.com/item/数据库管理系统/1239101

DBA:数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。 详细:https://baike.baidu.com/item/数据库管理员/1216449

(3)常见数据库与数据库分类

当前主流的数据库有MySQL,Oracle,SQL Server,MongoDB、SQLite、Redis、PostgreSQL、DB2

数据库的主要分类

  • 关系型数据库,如:MySQL、Oracle、SQL Server,以表格的形式存储数据,表格有行和列组成,每一行对应的列数相同。

  • 非关系型数据库:如:MongoDB、Redis , 不是以表格的形式存储数据的, MongoDB以文档的形式存储数据,Redis在键值对形式存储数据

  • 数据库分类: 数据库的七大类别及其特点-百度开发者中心

2_数据库中重要对象

(1)常见的数据库对象包括、视图、索引、存储过程、触发器、序列(主键)、同义词和用户定义函数等。

数据库语句:SQL语句

详细:https://www.fanruan.com/blog/article/247748/常见的数据库对象包括什么 • Worktile社区

(2)表:表是数据库中最基本且最重要的对象,用于存储数据。每个表由行和列组成,行代表记录,列代表字段。表的设计直接影响数据的存储效率、查询性能及数据完整性

(2)视图:是数据库中的一种虚拟表,通过查询语句动态生成数据。视图不存储数据,而是基于表的数据创建的,提供了一种灵活的方式来查看和管理数据。

(3)索引:是数据库中用于加速查询操作的数据结构。索引通过对表中的一列或多列的值进行排序,能够大大提高数据查询的速度。

(4)存储过程:是一组预编译的SQL语句,用于完成特定任务。存储过程提高了代码的重用性和执行效率,并可以简化复杂的数据库操作。

3_连接数据库

(1)服务器名称的多种用法: . 表示本机 计算机名称:此电脑右键属性---》系统信息---》设备名称 如:ZC

必须更改SQL Server 的网络配置,才能使用如下三种服务器名称,重启电脑。

IP地址 (Internet Protocol Address)是指互联网协议地址,又译为网际协议地址,用来唯一标识互联网中的一个网络或一台主机。

特殊IP:localhost 表示本地主机 ​ 特殊IP:127.0.0.1 表示本地主机

(2)端口号:所谓的端口,就好像是房间号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似房间号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号

(3) 身份验证

Windows身份验证:使用系统的账号登录,只要登录系统,就不需要再填写密码 SQL Server身份验证:账号:sa 密码:123456

SQL Server Administator管理员 Super Administator

4_数据类型

4.1_文本类型

文本类型:字符数据包含任意字母、符号或数字字符的组合

  • char:固定长度的非 Unicode 字符数据,最大长度为8000个字符,例如定义性别 Gender char(2),一个汉字占2个字符,所以定义 char(2)就行避免造成空间浪费(当然定义成 nchar(1)也行)

  • varchar:可变长度的非 Unicode 数据,最大长度为8000个字符,例如定义姓名 Name varchar(20),因为姓名的长度不固定,可能2个汉字也可能4个汉字甚至更多,所以我们定义为可变长度。占的空间少,可以节约出来一部分空间,占多了顶多也就20个字符(这里名字最多10个汉字)。

  • text:存储长文本信息,最大长度为2^31-1 (2147483647)个字符,存储的字符范围就比较多。如果定义的字符超过 char的8000个字符,就需要定义为 text 长文本类型的。

  • nchar:固定长度的 Unicode 数据,最大长度为4000个字符

  • nvarchar:可变长度的 Unicode 数据,最大长度为4000个字符

  • ntext:存储可变长度的长文本,2^30-1 (1073741823)个字符

Unicode:是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案 注意:带n的数据类型长度是不带n的两倍。比如nchar(1)和char(2)长度相同(1个字节 nchar 等于 声明2个字节的char,所以带 n 的最大长度就降低了)

4.2_整数类型

整数类型:

  • bigint:占用8个字节,可表示范围:-2^63 ~ 2^63-1之间的整数

  • int:占用4个字节,可表示范围:-2^31 ~ 2^31-1之间的整数

  • smallint:占用2个字节,可表示范围:-2^15 ~ 2^15-1之间的整数

  • tinyint:占用1个字节,可表示范围:0 ~ 255之间的整数

4.3_精确数字类型

精确数字类型:

  • decimal:-10^38 ~ 10^38-1之间的固定精度和小数位的数字

  • numeric:功能等同于decimal

  • 写法:decimal(整数,小数)和numeric(整数,小数)

  • 默认:如果不指定位数,默认18位整数,0位小数,比如身份证号:numeric(18,0),当然身份证号一般不用 numeric,而是用 char,因为身份证号有的还含有 X 字符

4.4_近似数字(浮点)类型

近似数字(浮点)类型:

  • float[(n)]:表示范围:-1.79E+308 ~ 1.79E+308 (1.79乘以10的308次幂)

  • n表示精度,在1-53之间取值,当n在1-24之间时,精度为7位有效数字,占用4个字节;当n在25-53之间时,精度为15位有效数字,占用8个字节

  • real:表示范围: -3.40E+38 ~ 3.40E+38占用4个字节存储空间,相当于float(24)

4.5_日期类型

日期类型:

  • datetime:允许的范围1753-1-1至9999-1-1

  • smalldatetime:允许的范围1900-1-1至2079-6-6

  • 时间精度不同:datetime精确到3/100秒;smalldatetime精确到1分钟

  • 格式说明:

    • 分隔符数字方式:2023-04-24或04/24/2023

    • 纯数字方式:04242023

    • 英文数字方式:Apr 24,2023

  • 注意问题:日期在使用的时候需要使用单引号''括起来

4.6_货币类型

货币类型:

  • money:货币数值介于 -2^63 ~ 2^63-1之间,精确到货币单位的千分之一。

  • smallmoney:货币数据介于 -214748.3648 ~ -214748.3648之间,精确到货币单位的千分之十。

4.7_位类型

位类型:

  • bit:表示“是/否”类型的数据。(0、1 / true、false)

4.8_二进制类型

二进制类型:

  • binary:固定长度的二进制数据,最大长度为8000个字节。

  • vbinary:可变长度的二进制数据,其最大长度为8000个字节。

  • image:可变长度的二进制数据,其最大长度为2^31个字节。应用场合:可存储图片。

5_SQL语句

(1)注释:

-- 单行注释
/**/ 多行注释

(2)创建数据库:create database 数据库名

-- create database 数据库名
create  database db_first;

(3)删除数据库:drop database 数据库名

-- drop database 数据库名
drop database  db_first;

(3)创建表:creat table 表明(列名,数据类型)

  • not null:设定该列非空,

  • primary key,设定该列为主键,

  • identity(1,1) 设定该列自增,从1开始自增,增幅为1

  
 create table Teachers(
    Id int not null primary key identity(1,1),
    TeacherName varchar(30)  not null,
    Age int   not null  default(20),
    Sex int 
 )

(4)表的插入 :insert into 表名(列名) values (值),

插入的时候 表名后面填写列名,values 后面填写值 值和列名要--对应

当主键设置了标识规范的时候,不让插入,只有吧IDENTITY_INSERT设置为ON才能插入

数据库对大小写不敏感,IDENTITY_INSERT与identity_insert一样

-GETDATE() 是SQL_server 中得函数 用来获取当前日期

--插入
insert  into Teachers (TeacherName,Age) values ('孙老师',30)
insert  into Teachers (TeacherName,Age,Sex) values ('孙老师',20,0)
SET IDENTITY_INSERT  Teachers ON;
insert  into Teachers (Id,TeacherName,Age,Sex) values (6,'王老师',20,0)
SET IDENTITY_INSERT  Teachers OFF;
insert  into  Students(StuName,StuAge,Birthday) values ('张三',20,'2025-02-01 14:13:45');
insert  into  Students(StuName,StuAge,Birthday) values ('韩李四',20,GETDATE());
--插入多条数据
insert into  Teachers(TeacherName,Age)
--自定义结果集  开发者用多条数据合并而来
select '王老师1',30
union all
select '王老师2',30
union all
select '王老师3',30

(5)修改数据:update 表名 set 修改的列名='值' where 条件

or 或者,满足一项就可以,相当于C#中的||

and 并且 满足所有的条件 相当于&&

不加修改条件的时候会修改所有的数据,切记加条件

update  Students set StuName='张三' where  Id=7;
update  Students set StuName='王大陆3',StuAge=10 where Id=6 or Id=5;  -- or  ===> ||
update  Students
set StuName='4563' 
where Id=6 and StuAge=100;  ---> and ===> && 

(6)删除数据:

delete from 表名:删除数据 ,标识符不重置,可以使用where添加删除条件

truncate table 表名:删除清空数据 保留表结构 标识规范重置,不能添加where 谨慎使用

delete from  Teachers;
delete from  Teachers where  Id=2;
delete from  Teachers where  TeacherName ='孙老师';
truncate table Teachers  ;

(7)查询语句 会查到一个结果集 把结果集返回出来

select * from 表明: * all 全部列

-- * all  全部列
select  * from  Students;
--查询部分列
select  StuName,StuAge from  Students;
--  查询替换列名
select TeacherName as 老师姓名,Age as  年龄 from Teachers
--加 where 筛选  
select  * from  Students  where Id =1;--查询id等于1的全部数据
select  StuName  from  Students  where Id =4; --查询id等于4的学生姓名
select  StuName  from  Students  where Id =4  and StuAge=10;
select  StuName  from  Students  where Id =4  or StuAge=10;
-- between 之间 
select  StuName  from  Students  where Id   between 5 and 8;
-建议不要比较字符串

-- select  * from  Students   where StuName >= '吴亦凡'  and StuName<='王大陆'

(8)IN操作符用于指定某列的值必须在指定的列表中。

NOT IN操作符用于指定某列的值不能在指定的列表中。

--IN操作符用于指定某列的值必须在指定的列表中。
select  * from  Students   where StuName  in  ('张三','李四');
-- NOT IN操作符用于指定某列的值不能在指定的列表中。
select  * from  Students   where StuName  not  in  ('张三','李四');

(9)%在后面,以某个字符开头,在前面,以某个字符结尾,两边都有 包含某个字符

select  * from  Students   where StuName   like  '王%';-- 以 '王' 开头
select  * from  Students   where StuName   like  '%2';-- 以 '2' 结尾
select  * from  Students   where StuName   like  '%2%';--  包含 '2'  2 在结尾 中间 开头 都可以匹配

(10)声明变量 declare

-- Sql 声明变量
declare @a int; 
-- sel中赋值  :  两种语法 set| select
select @a=100;
select @a-=100;
set @a+=100;
set @a=@a+100;
-- 打印
print @a;
--字符串 拼接
select  'abc'+'defg'  as newString
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值