1. 城镇大全网
  2. 综合百科

基本sql数据库入门基础知识(你还不会SQL吗一篇让你学会SQL数据库基础)

SQL Server数据库简介:

SQL是一个关系数据库,是一个可扩展的高性能数据库管理系统,专为分布式客户机/服务器计算而设计。

1,主要特性高性能设计系统管理先进,支持图形化管理工具,支持本地和远程的系统管理和配置强壮的事务处理能力支持对称多处理结构,存储过程,ODBC,并具有自主的SQL语言2,SQL安装

对不起这个地方,有一个错误。这个地方是linux的centos版本的下载。如果需要下载虚拟机,可以看看。

图像文件:http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/

VM虚拟机下载地址:https://download 3 . VMware . com/software/wkst/file/VMware-workstation-full-10 . 0 . 4-2249910 . exe

推荐安装教程:https://blog.csdn.net/sunshine1_0/article/details/80839430?。UTM _ medium = distribute . PC _ relevant . none-task-blog-blogcommendfromachinelearnpai 2-2 . none case & depth _ 1-UTM _ source = distribute . PC _ relevant . none-task-blog-blogcommendfromachinelearnpai 2-2 . none case

VM的key可以直接百度搜索:VM各版本的key;

上面的 VM虚拟机链接键(下面三个应该都可以):

1z0g 9-67285-fzg 78-zl3q 2-234 jg 4c 4ek-89 kdl-5zfp 9-1 la5p-2a0j 0 hy 086-4t 01n-cz3u 0-CV0QM-13 dnu

3,SQL数据库创建

以下都是语句创建,没有展示如何创建接口词。

[/h create database tset 01-database name on primary ( name = & # 39;Test01 _ 1 & # 39-数据文件名 filename = & # 39;e: SQL database test 01 _ 1 . MDF & # 39;,-存储地址 size = 10mb,-初始大小 maxsize=100mb,-最大大小 file growth = 5mb-增长率 ) 登录 。Test01 _ 2 & # 39-日志文件名 filename = & # 39;e: SQL database test 01 _ 2 . ldf & # 39;, size=5mb, maxsize=50mb, filegrowth=5mb )

4,关于数据库的操作4.1,SQL数据库的修改和删除4.1.1 修改

alter database old name modify name = newname;

alter database数据库名称修改文件(name = & # 39要修改的文件名& # 39;-不能用size = 20mb,maxsize = 50mb,filegrowth = 1mb修改此文件名);

exec SP_HELPDB数据库名称;-查看数据库的内部结构。

[/h alter database Tset01 -修改名称 修改名称= Test02 alter database test 02-modify attribute 修改文件( name = & # 39;Test01 _ 1 & # 39, size=20mb, maxsize=50mb, file growth = 1mb ); exec SP _ HELPDB test 02;-查看数据库结构

4.1.2 删除

删除数据库数据库1、数据库2、数据库3;(需要删除几个中间空格,用空网格隔开。)

创建数据库测试;-创建新数据库 删除数据库测试;-删除新创建的数据库。

4.2,SQL数据类型

数据类型是指定对象可以保存的数据类型的属性:整数数据、字符数据、日期和时间、二进制字符串等等。

4.2.1 数字类型

数据类型描述存储tinyint允许的从0到255的所有数字。1字节smallint允许从-32,768到32,767的所有数字。一个2字节的int允许从-2,147,483,648到2,147,483,647的所有数字。4字节的bigint允许-9,223,372,036,854,775,808和9,223,372,036,854,775,807之间的所有数字。8字节十进制(p,s)

具有固定精度和比例的数字。允许使用-10 38 1到10 38 1之间的数字。

p参数表示可以存储的最大位数(小数点左右)。p必须是1到38之间的值。默认值为18。

s参数表示小数点右边存储的最大位数。s必须是介于0和p之间的值,默认值为0。

5-17个字节的数字(p,s)

具有固定精度和比例的数字。允许使用-10 38 1到10 38 1之间的数字。

p参数表示可以存储的最大位数(小数点左右)。p必须是1到38之间的值。默认值为18。

s参数表示小数点右边存储的最大位数。s必须是介于0和p之间的值,默认值为0。

5-17字节的货币数据,smallmoney介于-214,748.3648和214,748.3647之间。4字节的货币数据,货币在-922,337,203,685,477.5808和922,337,203,685,477.5807之间。从-1.79E 308到1.79E 308的8字节浮点(n)浮点精度数字数据。参数n指示该字段是保存4字节还是8字节。Float(24)保存4个字节,而float(53)保存8个字节。n的默认值是53。从-3.40E 38到3.40E 38的4或8字节的实浮点精度数字数据。4字节

4.2.2时间类型

数据类型描述存储从1753年1月1日到9999年12月31日的日期时间,精度为3.33毫秒。8 bytesdatetime2从1753年1月1日到9999年12月31日的精度为100纳秒。从1900年1月1日到1979年6月6日的6-8字节malldatetime,精度为1分钟。4 bytesdate只存储日期。从0001年1月1日到9999年12月31日。3 bytestime只存储时间。精度为100纳秒。3-5字节datetimeoffset等于datetime2加上时区偏移量。8-10字节testimestamp存储一个唯一的数字,该数字在每次创建或修改行时更新。时间戳基于内部时钟,并不对应于实际时间。每个表只能有一个时间戳变量。

4.2.3字符串类型

数据类型描述存储char(n)的固定长度字符串。最多8000字。可变长度字符串。最多8000字。

varchar(max)可变长度字符串。最多1,073,741,824个字符。

text可变长度字符串。高达2GB的字符数据。

5,关于表的操作5.1 创建表

主键:大多数表都有一个主键,主键由表的一列或多列组成。主键总是唯一的,表中的任何主键都不能重复。

创建表名(属性数据类型主键不为空,属性数据类型(是否自加可以空),..................);

如果需要添加多个主键,不需要在前面写主键,而是添加主键(属性1,属性2,...)主键(ID,name)在最后。

create table Student( ID int主键不为空, name varchar(10)不为空, age int不为空, clase ID int );

5.2 修改,删除表结构5.2.1 修改表结构

如果使用界面进行修改,这里可能修改不成功,修改后系统不允许保存;

我找到了一个方法链接:https://jingyan . Baidu . com/article/a17d 5285761845 c 098 c8f 282 . html。

更改字段类型长度

alter table表的alter column字段名类型的长度;

更改字段类型

更改后Altertable表中alter column字段名的类型;

添加not null约束

alter table table alter column字段名数据类型不为null

设置主键

alter table userint添加约束主键名主键(字段名)

更改字段名

EXEC sp _ rename & # 39;字段。字段名& # 39;,'更改后的字段名& # 39;,'专栏& # 39;

添加字段名

alter table add field name field type default null

[/h -更改字段长度 alter table student alter column name varchar(100); -更改字段类型 更改表student 更改列年龄float -Add not null约束 Alter table student Alter column classified int not null; -设置主键(前提是表结构中没有设置主键) Alter table student Add constraint kname primary key(name); -更改字段名称 EXEC sp _ rename & # 39;学生年龄& # 39;, & # 39;年龄& # 39;,'专栏& # 39;; -add字段名 alter table student add num int default null。

5.2.2删除表结构

drop table表1,表2,表3;(如果需要删除几个表,添加几个表,用逗号隔开。)

[/h -删除表结构 删除表学生;

5.3 定义主键外键主关键字是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。一个表中只有一个关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键。又称主码,并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。外键表示了两个关系之间的相互联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。5.3.1 增加主键(上面都有)

alter table表名添加约束主键名主键(属性);

5.3.2 删除主键

alter table表名drop主键名

5.3.3 添加外键

alter table将被添加到外键表add constraint外键名引用主键表(主键字段);

alter table student add约束F_classid外键(classid)引用类(classid);

5.3.4 删除外键

alter table表名删除约束外键名

5.4 新增表数据插入单行数据

插入到表名(字段1、字段2、字段3......)值(值1,值2,值3);

插入多行数据

插入到表名(字段1、字段2、字段3......)值(值1,值2,值3),(值1,值2,值3),(值1,值2,值3)...;

[/h -插入一行数据 插入到student1 (id,name,age,classid) 值(1,& # 39;小明& # 39;,12,11); -插入多行数据 插入到student 1 (ID,name,age,classid) 值(2,& # 39;小红& # 39;,13,3), (3,& # 39;小刚& # 39;,14,3), (4,& # 39;陈骁& # 39;,15,4), (5,& # 39;小李& # 39;,16,4);

5.5 查询表结构

从表中选择字段名(*代表全部)

select * from student 1; select name,id from student1

5.5.1 DistinctTop用法Distinct(去除重复的值)

从表中选择不同的字段名称

Top(前n行数据)

从表中选择顶部行号字段名称

select distinct * from student 1; select top 3 name,id from student1

5.6 修改表数据

更新表集字段名=新数据

更新student 1 set id = 5 其中name = & # 39小明& # 39;;-限制,要修改哪些数据?

5.7 删除表记录

从表中删除

从学生1中删除 ,其中name = & # 39小明& # 39;-限制,删除哪一行?

6,语句6.1 条件限制while精确限制条件

其中字段=值

模糊限制条件

其中字段像& # 39;%值% & # 39;-表示有数值的数据,那一边的%表示那一边的字可有可无。

其中名字像& # 39;% Red % & # 39-带红色字母的数据

6.2 between语法

使用条件表达式指定表达式范围值。

(not) between 值1 and 值2;

select distinct * from student 1 ,其中年龄不在13至15岁之间;

6.3 子查询in

用于限制条件表达式并指定表达式范围值。

(not) in(值1,值2,值3.......) --或者扩号里面可以写语句

select distinct * from student 1 where age in(13,14,15);

6.4 子查询EXISTSexists用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回true或falseexiste指定一个子查询,检测行的存在

[/h select *from student -显示两个表中存在的公共数据 ( select * from class where student。classid =类。classid)

6.5返回记录排序

按字段名排序(ASC/desc)-ASC升序,desc降序;如果没有添加,默认为升序;从前到后按下多个受限字段。

select * from student order by classID ASC,age desc

6.6 关联查询6.6.1 inner join

Cross correlation,它只返回两个表中联接字段的相等值。

select * from Table 1 inner join Table 2 on Table 1。字段=表2。菲尔茨

6.6.2 left join

Left association,它返回包含左表中所有记录和右表中联接字段相等的值。

select * from table 1 left join table 2 on table 1。字段=表2。字段。

6.6.3 right join

Right association,它返回包含右表中所有记录和左表中联接字段的值。

select * from Table 1 right join Table 2 on Table 1。字段=表2。菲尔茨

[/H/]select * from student-cross correlation[/H/]inner join class[/H/]on student . classid = class . classid[/H/][/H/]select * from student-left correlation[/H/]left join class[/H/]on student。classid =类。classid select * from student-right association right joint class on student。classid =类。classid。

7,函数7.1 聚合函数avg(),sum()7.1.1 avg()返回组中各值的平均值。其中忽略null值计算字段类型必须为数字型(整数,小数)select avg(字段) from 表 7.1.2 sum()返回表达式中所有值的和。其中忽略null值只能用于数字列select avg(字段) from 表

select avg(student . age)as & # 39;平均年龄& # 39;从学生中选择sum(Student.age)作为& # 39;总年龄& # 39;来自学生

7.2 聚合函数min(),max()7.2.1 min()返回表达式中最小值忽略任何null值计算字段类型可以为数字型或字符型select min(字段) from 表 7.2.2 max()返回表达式中最大值忽略任何null值计算字段类型可以为数字型或字符型select max(字段) from 表

select min(student . age)as & # 39;最年轻的& # 39;从学生中选择max(Student.age)作为& # 39;最老的& # 39;来自学生

7.3 count()和sum()函数7.3.1 sum()

[h/]同上

7.3.2 count()返回组中的项数其中忽略null值计算字段类型必须为整型select count(字段) from 表

select count(student . age)as & # 39;字段数量& # 39;来自学生

7.4 len()函数返回指定字符串表达式的字符数其中不包含尾随空格若要返回用于表达式的字节数,使用datalength()函数select len(字段) from 表

select len(student . age)as & # 39;字符数& # 39;从student 中选择datalength(Student.age)作为& # 39;字节数& # 39;来自学生

7.5 随机数产生select rand() 可以得到一个随机小数select floor(rand()*N) 返回小于或等于所给数字表达式的最大整数select ceiling(rand()*N) 返回大于或等于所给数字表达式的最大整数eg: floor(8.122)=8;ceiling(8.122)=9

select rand() select floor(rand()) select ceiling(rand())

7.6 getdate()和getutcdate()函数getdate() 返回当前数据库的系统时间值,返回值的类型为datetimegetutcdate() 返回当前国际标准时间值,返回值的类型为datetime

选择getdate()作为& # 39;当前时间& # 39; select GETUTCDATE()as & # 39;国际标准时间& # 39;

7.7 convert()函数该函数是把日期转换为新数据类型的通用函数可以用不同的格式显示日期/时间数据convert(长度,日期,格式)

格式编号

对应格式0或100 (*)mon dd yyyy hh:miAM(或PM)101MM/DD/yyyy 102 YY . MM . DD 103 DD/MM/YY 104 DD . MM . YY 105 DD-MM-YY 106 ddmonyy 107 MONDD,Yy108hh:mm:ss9或109 (*) MONDD YY hh: MI: SS: MMMM(或PM) 110 mm-DD-YY 111 YY/MM/DDfff] 21或121 (*) yyyy-mm-ddhh: mm: ss [。fff]126(* *)yyyy-mm-ddthh:mm:ss:mmm(。

日/月/年时:分:秒:分

select CONVERT(varchar(50),getdate(),101) select CONVERT(varchar(50),getdate(),102) select CONVERT(varchar(50),getdate(),103) select CONVERT(varchar(50),getdate(),104) select CONVERT(varchar(50),getdate(),105) select CONVERT(varchar(50),getdate(),106)

7.8 datediff()函数datediff()函数返回两个日期之间的天数datediff(日期类型,日期1,日期2)dateadd()函数返回两个日期之间的天数dateadd(日期类型,天数,日期)

select dateadd(YY,5,& # 39;08-12-29 16:25:46.635') select dateadd(MM,5,& # 39;08-12-29 16:25:46.635') select dateadd(DD,5,& # 39;08-12-29 16:25:46.635') select dateadd(HH,5,& # 39;08-12-29 16:25:46.635')

7.9 datepart()函数用于返回日期/时间的单独部分,比如年,月,日,小时,分钟等;返回类型是一个int类型datename()同样是返回一个日期/时间的单独部分,返回类型是一个varchar()型day(),Month(),year()

select DATEPART(yy,GETDATE()) select DATEPART(mm,GETDATE()) select DATEPART(DD,GETDATE()) select DATEPART(hh,GETDATE()) select DATEPART(mi,GETDATE()) select DATEPART(ss,GETDATE()) select DATENAME(YY,GETDATE())-varchar type 选择年份

7.10 charindex()和patindex()函数7.10.1 charindex()函数返回字符或者字符串在另一个字符串中的起始位置charindex(寻找的字符(串),字符串,[开始的位置(根据需要添加)])如果找到,则返回一个整数,整数即为位置;如果没有找到,则返回07.10.2 patindex()函数该函数支持通配符,不加%则需要完全相同eg:%a,则需要结尾是a;a%,则需要开头是a;%a%,可以正确找到a的位置patindex('%寻找字符(串)%',字符串)

选择charindex(& # 39;c & # 39,'abcdefg & # 39) 选择charindex(& # 39;c & # 39,'abcdefg & # 39,5) 选择PATINDEX(& # 39;% g & # 39,'abcdefg & # 39) 选择PATINDEX(& # 39;g % & # 39,'abcdefg & # 39) 选择PATINDEX(& # 39;% g % & # 39,'abcdefg & # 39)

7.11 stuff()函数用于删除指定长度的字符,并可以在指定的起点处插入另一组字符,返回类型是一个字符串型stuff(列名,开始位置,长度,替代字符串)

选择素材(& # 39;aabbccddee & # 39,5,4,'') 选择素材(& # 39;aabbccddee & # 39,5,4,'111111')

7.12 substring()函数用于截取指定长度的字符串substring(列名,开始位置,截取长度)

选择子串(& # 39;aabbccddee & # 39,5,4)

7.13 left()和right()函数left()返回字符串从左边开始指定个数的字符left(列名,长度)right()返回字符串从右边开始指定个数的字符right(列名,长度)

选择左(& # 39;aabbccddee & # 39,5) 选择右(& # 39;aabbccddee & # 39,5)

7.14 ltrim()和rtrim()函数ltrim()删除起始空格后返回字符表达式ltrim(列名)rtrim()删除尾随空格后返回字符表达式rtrim(列名)

选择ltrim(& # 39;aabbcc ddee & # 39) 选择rtrim(& # 39;aabbcc ddee & # 39)

7.15 upper()和lower()函数upper()返回将小写字符数据转换为大写的字符表达式upper(列名)lower()返回将小写字符数据转换为大写的字符表达式lower(列名)

选择上部(& # 39;aabbccddee & # 39) 选择较低(& # 39;aabbccddee & # 39)

7.16 replace()函数用一个字符串值替代出现的所有指定字符串replace(列名,被替代值,替代值)

选择替换(& # 39;aabbccddeeaa & # 39,'aa & # 39,'11')

7.17 replicate()和space()函数replicate()以指定的次数重复字符表达式replicate(字符表达式,次数)space()返回指定个数的空格表达式space(次数)

选择复制(& # 39;aa & # 39,5) 选择空间(5) 选择复制(& # 39;aa & # 39,5)空间(5)复制(& # 39;aa & # 39,5)

7.18 reverse()函数用于倒置字符串中各个字符的位置reverse(字符串)

选择倒档(& # 39;aabbccddee & # 39)

7.19 cast()函数用于将某种数据类型的表达式显示转换为另一种数据类型cast(字符串 as 数据类型)

select cast(111 as varchar(10)) select cast(111 as varchar(10))& # 39;aaaa & # 39

7.20 case()函数是一种简单的条件判断转换的一个函数简单case函数:case 字段 when '1' then 'a' when '2' then 'b' else 'c'endcase搜索函数:case when 字段='1' then 'a' when 字段='2' then 'b' else 'c' end

select *,案例id when & # 391'然后& # 39;第一& # 39;当& # 39;2'然后& # 39;第二& # 39;else & # 39其他& # 39;end from student select *,case when age & lt12然后& # 39;儿童& # 39;当年龄& lt15岁和年龄& gt=12那么& # 39;青少年& # 39;else & # 39少年& # 39;结束 来自学生

,

猜你喜欢:综合百科

综合百科基本sql数据库入门基础知识(你还不会SQL吗一篇让你学会SQL数据库基础)

转载请注明:原文链接 | http://www.nnxc.com.cn/10043348299.html