sql总结喔

简介: sql总结喔

--一、数据库基础

/*

如何开服务:2个 TCP/IP协议 SQL Server(MSSQLSERVER)

系统数据库:master(核心 模板) model(模型) msdb(警告日志) tempdb(临时)

数据库文件分为数据文件(.mdf/.ndf)和日志文件(.ldf)

数据库的骚操作:分离 附加 脱机 联机 导入 导出

如何创库:1.脚本 create database 库名  2.企业资源管理器/对象资源管理器

如何删库:1.脚本 drop database 库名 2.........

三个俗语:精度(例如:23434.543-->8) 小数位数(4343.23-->2) 长度(字节数 例如:小易nb-->6)

常用数据类型:

   整数:int

   小数:float/money

   字符串:varchar 超过8000个字节用 text

   日期时间:datetime

   布尔:bit

   图像:image

*/

--二、数据表

--如何脚本建表:

/*
create table 表名(
  列名 数据类型(长度) primary key,
  列名 数据类型
)
*/

--六大约束:

/*

1.主键约束:pk(primary key) 一个表只能有1个主键,但是这个主键是可以由多个列名共同组成的

2.外键约束:fk(references 表名(列名)) 插数据必须先主后从 删数据必须先从后主

3.检查约束:ck(check(ssex='男' or ssex='女'))

4.非空约束:not null/null

5.默认值约束:default('男')

6.唯一约束:unique

*/

--如何删除表:drop table 表名

--三、增删改 查

--3.1 增

/*

--单行插入

注意:

要插入的字段必须跟数据保持顺序、个数以及数据类型的一致

当你插入的是全部字段时,列名可以省略不写(跟建表的顺序一致)

如果主键设置了标识列,就不能手动维护(手动去赋值)

insert into 表名(列名,列名) values(数据,数据)

--多行插入

insert into 表名(列名,列名)

select 数据,数据

union

select 数据,数据

*/

--运用:插入 文成公主 女 16 大汉 这条数据

use db_1110

select * from tb_stu

insert into tb_stu(sname,ssex,sage,saddress)

values('文成公主','女',16,'大汉')

--3.2 删

--语法:delete [from] 表名 where 条件

--例如:把学号为5的学生删除

delete from tb_stu where sid=5

--3.3 改

--语法:update 表名 set 列名=要修改成什么 where 条件

--例如:把所有的男生姓名改成'蕉太狼'

update tb_stu set sname='蕉太狼' where ssex='男'

--3.4 查

--3.4.1 基础查询 ****

--语法:select 你要查询的列名(*) from 表名 where 条件

--查询全部 select * from 表名

--查询部分 select 列名,列名 from 表名

--查询全部住在大汉的女生

select * from tb_stu where ssex='女' and saddress='大汉'

--查询学号为1.3的学生 in(1,3)

select * from tb_stu where sid=1 or sid=3

--查询地址为空的学生姓名

select sname from tb_stu where saddress is null

--查询年龄在10-30之间的学生

select * from tb_stu where sage between 10 and 30

select * from tb_stu where sage>=10 and sage<=30

--按照年龄降序 asc升序

select * from tb_stu order by sage desc

--名字中含有'小'  姓'小': '小%' 第二个字符是小: '_小%'

select * from tb_stu where sname like '%小%'

select * from tb_stu where LEFT(sname,1)='小'

--前3条 50 percent

select top 3 * from tb_stu

--去除重复:distinct

--取别名: sname 姓名  sname as 姓名  姓名=sname

--3.4.2 高级查询

--联表:内联3种方式

/*

select 要查询的字段 from 表1 as a

inner join 表2 as b

on 表1和表2的关系

select 要查询的字段 from 表1 as a

join 表2 as b

on 表1和表2的关系

select 要查询的字段 from 表1 as a,表2 as b

where 表1和表2的关系

*/

use db_1114

select b.sno,b.sname,c.cname,a.degree from score as a,student as b,course as c

where a.sno=b.sno and a.cno=c.cno

--统计

/*
max min avg count sum 
group by:分组 
having:分组后过滤
where:分组前过滤
*/
use db_1110
--男生人数在1人以上的地方
select saddress from tb_stu where ssex='男'
group by saddress having COUNT(*)>1
--子查询
--查询比小易易年龄大的学生姓名
select sname from tb_stu where sage>(
    select sage from tb_stu where sname='小易易'
)
--查询笔试成绩大于70分的学生姓名
use db_1114
select * from stuInfo 
select * from stuMarks
--联表:
select a.stuName from stuInfo as a,stuMarks as b
where a.stuNo=b.stuNo and b.writtenExam>70
--子查询:
select stuName from stuInfo where stuNo in(
    select stuNo from stuMarks where writtenExam>70
)

--四、函数

/*

1.日期:getdate() year/month/day() datepart() dateadd() datediff(YY/MM/DD,'','')

2.字符串:len() substring('abcdefg',2,3) replace() charindex() left/right()

3.系统:datalength()/cast/convert()数据类型的转换

4.数学:abs/sqrt/power/ceiling/floor/round

*/

--五、补充知识点

/*

1.如何复制表以及其数据: select * into 新表 from 要复制的表

2.不要数据:where 恒不等式

3.isnull(a,b):如果a为空 就用b来替代

4.学会把查询出来的结果集再当做是一个新的表来查询

*/


相关文章
|
2月前
|
SQL 存储 关系型数据库
sql日常总结
sql日常总结
|
2月前
|
SQL 数据库 索引
八、SQL-Limite
八、SQL-Limite
29 0
|
SQL 网络协议 NoSQL
sql审核
sql审核
351 0
|
SQL 数据库
了解SQL
了解SQL
100 0
|
SQL 存储 缓存
或许你不知道的12条SQL技巧
或许你不知道的12条SQL技巧
|
存储 SQL NoSQL
SQL必知必会(一)
对于我们而言,数据库是一个以某种有组织的方式存储的数据集合。最简单的办法就是将数据库想象成一个文件柜。这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的。 数据库(DataBase) 保存有组织数据的容器(通常为一个或一组文件)
xttdbopen.sql
connect / as sysdba; alter database mount;alter database open; exit
742 0
|
SQL Go 移动开发
常用SQL收藏
原文:常用SQL收藏 MSSQL Split表字段 --拆分字符串之后匹配结果集合 CREATE FUNCTION [dbo].[fnSplit]( @sInputList VARCHAR(8000) -- List of delimited items , @sDelimi...
770 0
|
SQL 存储 数据库