创意电子

标题: 你还不会SQL 吗?一篇让你学会SQL数据库基础(从零开始超详解) [打印本页]

作者: 双鱼座boyy    时间: 2020-8-9 08:45
标题: 你还不会SQL 吗?一篇让你学会SQL数据库基础(从零开始超详解)
SQL Server数据库简介:

SQL是一种关系型数据库,是一个可扩展的,高性能的,为分布式客户机/服务器计算所和设计的数据库管理系统。
1,主要特性

2,SQL安装

这个地方欠好意思,搞错了,这个地方是linux的centos版本的下载。如果需要下载假造机可以看看
镜像文件:http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/
VM假造机下载地址:https://download3.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-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
VM假造机密钥可以百度直接搜刮:VM假造机各版本密钥;
上面VM假造机链接密钥(下面三个应该都可以):
1Z0G9-67285-FZG78-ZL3Q2-234JG4C4EK-89KDL-5ZFP9-1LA5P-2A0J0HY086-4T01N-CZ3U0-CV0QM-13DNU

                               
登录/注册后可看大图

3,SQL数据库创建

下面都用的是语句创建,没有展示如何界面话创建
create database Tset01          --数据库名称on Primary(name ='Test01_1',       --数据文件名称filename='E:\SQL数据库\Test01_1.mdf',        --保存地址size=10mb,           --起初大小maxsize=100mb,          --最大大小filegrowth=5mb               --增长速率)log on(name ='Test01_2',       --日志文件名称filename='E:\SQL数据库\Test01_2.ldf',size=5mb,maxsize=50mb,filegrowth=5mb)

                               
登录/注册后可看大图

4,关于数据库的操纵

4.1,SQL数据库的修改和删除

4.1.1 修改

alter database oldnamemodify name=newname;
alter database 数据库名称modify file(name ='将要修改的文件名称', --这个文件名称不能修改 size=20mb,maxsize=50mb,filegrowth=1mb);
exec SP_HELPDB 数据库名称; --检察数据库的内部布局
alter database Tset01             --修改名字modify name=Test02;alter database Test02       --修改属性modify file(name ='Test01_1',size=20mb,maxsize=50mb,filegrowth=1mb);exec SP_HELPDB Test02;         --检察数据库布局

                               
登录/注册后可看大图

4.1.2 删除

drop database 数据库1,数据库2,数据库3;(需要删除几个中央用空格隔开即可)
create database Test;       --创建一个新数据库drop database Test;      --将新创建的数据库删除

                               
登录/注册后可看大图

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 字节decimal(p,s)
固定精度和比例的数字。答应从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节numeric(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 字节money介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。8 字节float(n)从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。4 或 8 字节real从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。4 字节
4.2.2时间类型

数据类型形貌存储datetime从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。8 bytesdatetime2从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。6-8 bytessmalldatetime从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。4 bytesdate仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。3 bytestime仅存储时间。精度为 100 纳秒。3-5 bytesdatetimeoffset与 datetime2 相同,外加时区偏移。8-10 bytestimestamp存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真及时间。每个表只能有一个 timestamp 变量。
4.2.3字符串类型

数据类型形貌存储char(n)固定长度的字符串。最多 8,000 个字符。nvarchar(n)可变长度的字符串。最多 8,000 个字符。


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


text可变长度的字符串。最多 2GB 字符数据。
5,关于表的操纵

5.1 创建表

主键:大多数表有一个主键,主键由表的一列或者多列构成。主键始终是唯一的,表中的任何主键都不能重复。
create table 表名称(属性 数据类型 primary key not null,属性 数据类型(自行添加是否可以为空),..................);
如果需要添加多个主键,则在前面不用写primary key,在最后加上primary key(属性1,属性2,.....)primary key(ID,name)
create table Student(ID int primary key not null,name varchar(10) not null,age int not null,claseID int);

                               
登录/注册后可看大图

5.2 修改,删除表布局

5.2.1 修改表布局

如果利用界面话修改,此处可能出现修改不成功的情况,修改后系统不让保存;
我找到的一个方法链接:https://jingyan.baidu.com/article/a17d5285761845c098c8f282.html
alter table 表alter column 字段名 类型的长度;

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

alter table 表alter column 字段名 数据类型 not null;

alter table userintadd constraint 主键名称 primary key(字段名)

EXEC sp_rename '字段.字段名','更改后的字段名','column'

alter table 表 add 字段名 字段类型 default null
--更改字段长度alter table Studentalter column name varchar(100);--更改字段类型alter table Studentalter column age float;--添加not null束缚alter table studentalter column classID int not null;--设置主键(前提是表布局中没有设置主键)alter table studentadd constraint Kname primary key(name);--更改字段名EXEC sp_rename 'student.age','ages','column';--添加字段名alter table studentadd num int default null

                               
登录/注册后可看大图

5.2.2删除表布局

drop table 表1,表2,表3;(需要删除几个,就添加几个表,中央用逗号隔开)
--删除表布局drop table student;

                               
登录/注册后可看大图

5.3 定义主键外键

5.3.1 增加主键(上面都有)

alter table 表名add constraint 主键名 primary key(属性);
5.3.2 删除主键

alter table 表名 drop 主键名
5.3.3 添加外键

alter table 将要加入外键表add constraint 外键名字 foreign key(增加外键字段) references 主键表(主键字段);
alter table studentadd constraint F_classid foreign key(classid) references class(classid);

                               
登录/注册后可看大图

5.3.4 删除外键

alter table 表名 drop constraint 外键名
5.4 新增表数据

insert into 表名 (栏位1,栏位2,栏位3......)values(值1,值2,值3);

insert into 表名 (栏位1,栏位2,栏位3......)values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3)......;
--插入一行数据insert into Student1 (ID,name,age,claseID)values(1,'小明',12,11);--插入多行数据insert into Student1 (ID,name,age,claseID)values(2,'小红',13,3),(3,'小刚',14,3),(4,'小陈',15,4),(5,'小李',16,4);

                               
登录/注册后可看大图

5.5 查询表布局

select 字段名称(*代表全部) from 表
select * from Student1;select name,id from student1;

                               
登录/注册后可看大图

5.5.1 Distinct\Top用法

select distinct 字段名称 from 表

select top 行数 字段名称 from 表
select distinct * from Student1;select top 3 name,id from student1;

                               
登录/注册后可看大图

5.6 修改表数据

update 表 set 字段名 = 新数据
update student1 set id = 5where name='小明';   --限定条件,修改哪一条数据

                               
登录/注册后可看大图

5.7 删除表记载

delete from 表
delete from student1where name='小明'     --限定条件,删除哪一行

                               
登录/注册后可看大图

6,语句

6.1 条件限定while

where 字段=值

where 字段like'%值%' --表示带有值的数据,%放在那一边表示那一边的字无关紧急
where name like'%红%'; --带有红字的数据
6.2 between语法

用法限定条件表达式,指定表达式范围值
select distinct * from Student1where age not between 13 and 15;

                               
登录/注册后可看大图

6.3 子查询in

用于限定条件表达式,指定表达式范围值
select distinct * from Student1where age in(13,14,15);

                               
登录/注册后可看大图

6.4 子查询EXISTS

select *from student          --显示两表中共同的数据where exists(select *from class where Student.classid=Class.classID)

                               
登录/注册后可看大图

6.5返回记载排序

order by 字段名 (asc/desc) --asc升序,desc降序,不加的话默以为升序;多个限定字段按从前往后
select *from studentorder by classID asc,age desc

                               
登录/注册后可看大图

6.6 关联查询

6.6.1 inner join

交织关联,只返回两个表中联结字段相等的值
select *from 表1inner join 表2on 表1.字段=表2.字段
6.6.2 left join

左关联,返回包罗左表中的全部记载和右表中联结字段相等的值
select *from 表1left join 表2on 表1.字段=表2.字段



6.6.3 right join




右关联,返回包罗右表中的全部记载和左表中联结字段相等的值
select *from 表1right join 表2on 表1.字段=表2.字段
select *from student        --交织关联inner join classon student.classid=class.classIDselect *from student         --左关联left join classon student.classid=class.classIDselect *from student        --右关联right join classon student.classid=class.classID

                               
登录/注册后可看大图

7,函数

7.1 聚合函数avg(),sum()

7.1.1 avg()

7.1.2 sum()

select avg(Student.age) as'年岁平均' from studentselect sum(Student.age) as'年岁总和' from student
7.2 聚合函数min(),max()

7.2.1 min()

7.2.2 max()

select min(Student.age) as'年岁最小' from studentselect max(Student.age) as'年岁最大' from student
7.3 count()和sum()函数

7.3.1 sum()

同上
7.3.2 count()

select count(Student.age) as'字段数' from student
7.4 len()函数

select len(Student.age) as'字符数' from studentselect datalength(Student.age) as'字节数' from student

                               
登录/注册后可看大图

7.5 随机数产生

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

                               
登录/注册后可看大图

7.6 getdate()和getutcdate()函数

select getdate() as '当前时间'select GETUTCDATE() as '国际标定时间'

                               
登录/注册后可看大图

7.7 convert()函数

格式数字


对应格式0 或 100 (*)mon dd yyyy hh:miAM(或 PM)101mm/dd/yyyy102yy.mm.dd103dd/mm/yy104dd.mm.yy105dd-mm-yy106dd mon yy107mon dd, yy108hh:mm:ss9 或 109 (*)mon dd yyyy hh:mi:ss:mmmAM(或 PM)110mm-dd-yy111yy/mm/dd112yymmdd13 或 113 (*)dd mon yyyy hh:mm:ss:mmm(24h)114hh:mi:ss:mmm(24h)20 或 120 (*)yyyy-mm-dd hh:mm:ss[.fff]21 或 121 (*)yyyy-mm-dd hh:mm:ss[.fff]126(***)yyyy-mm-dd Thh:mm:ss:mmm(不含空格)130*dd mon yyyy hh:mi:ss:mmmAM131*
dd/mm/yy hh:mi:ss:mmmAM
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)select CONVERT(varchar(50),getdate(),107)select CONVERT(varchar(50),getdate(),108)select CONVERT(varchar(50),getdate(),109)select CONVERT(varchar(50),getdate(),110)

                               
登录/注册后可看大图

7.8 datediff()函数

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

                               
登录/注册后可看大图

7.9 datepart()函数

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类型select YEAR(GETDATE())select month(GETDATE())select day(GETDATE())

                               
登录/注册后可看大图

7.10 charindex()和patindex()函数

7.10.1 charindex()函数

7.10.2 patindex()函数

select charindex('c','abcdefg')select charindex('c','abcdefg',5)select PATINDEX('%g','abcdefg')select PATINDEX('g%','abcdefg')select PATINDEX('%g%','abcdefg')

                               
登录/注册后可看大图

7.11 stuff()函数

select stuff('aabbccddee',5,4,'')select stuff('aabbccddee',5,4,'111111')

                               
登录/注册后可看大图

7.12 substring()函数

select substring('aabbccddee',5,4)

                               
登录/注册后可看大图

7.13 left()和right()函数

select left('aabbccddee',5)select RIGHT('aabbccddee',5)

                               
登录/注册后可看大图

7.14 ltrim()和rtrim()函数

select ltrim('   aabbcc  ddee   ')select rtrim('   aabbcc  ddee   ')

                               
登录/注册后可看大图

7.15 upper()和lower()函数

select upper('aabbccddee')select lower('aabbccddee')

                               
登录/注册后可看大图

7.16 replace()函数

select replace('aabbccddeeaa','aa','11')

                               
登录/注册后可看大图

7.17 replicate()和space()函数

select replicate('aa',5)select space(5)select replicate('aa',5)+space(5)+replicate('aa',5)

                               
登录/注册后可看大图

7.18 reverse()函数

select reverse('aabbccddee')

                               
登录/注册后可看大图

7.19 cast()函数

select cast(111 as varchar(10))select cast(111 as varchar(10))+'aaaa'

                               
登录/注册后可看大图

7.20 case()函数



select *,case id when '1' then '一号' when '2' then '二号' else '别的'endfrom studentselect *,case when age
作者: 吟予南歌4    时间: 2020-8-10 17:48
转发了
作者: 等待出現    时间: 2020-8-10 20:19
转发了
作者: 作死小分队小小泽    时间: 2020-8-11 23:00
转发了
作者: 爱廸光伏    时间: 2020-8-12 06:31
关于SQL数据库
作者: 君子达    时间: 2020-8-12 08:19
转发了
作者: 君子达    时间: 2020-8-12 08:23
转发了
作者: ZJKUSO    时间: 2020-8-12 08:40
都忘了
作者: 依海临风J    时间: 2020-8-12 09:14
转发了
作者: 用户2968671505852    时间: 2020-10-22 06:17
转发了




欢迎光临 创意电子 (https://www.wxcydz.cc/) Powered by Discuz! X3.4