鼠标设置外键
第一步:新建数据库
create database 第六章(数据库名称)
on(
name=第六章,
filename='E:\湛娟的SQL\第六章_log.mdf',
size=5MB,(初始大小)
maxsize=20,(存储上限)
filegrowth=2(增长增量)
)
log on(
name=第六章_log,
filename='E:\湛娟的SQL\第六章_log.ldf',
size=2mb,
maxsize=10mb,(记得打逗号)
filegrowth=1mb
);(记得打分号)
创建一个数据库第二步:创建表
新建表
create table zhanjuan(表名)(
name (列名)varchar(10)(类型)
default 湛娟(默认值)
primary key(主键)
identity (1,1)初始值为1,递增1
null(空值)
not null(非空值)
foreign key(外键名)references (主表名)(主键名)
unique 唯一键
)
SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过CREATE TABLE语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
[if !supportLists]· [endif]NOT NULL(非空约束)
[if !supportLists]· [endif]UNIQUE(唯一约束)
[if !supportLists]· [endif]PRIMARY KEY(主键约束)
(主键必须包含唯一的值。
主键列不能包含NULL值。
每个表都应该有一个主键,并且每个表只能有一个主键。)
[if !supportLists]· [endif]FOREIGN KEY(外键约束)
[if !supportLists]· [endif]CHECK(检查约束)
[if !supportLists]· [endif]DEFAULT(默认值约束)
[if !supportLists](1) [endif]NOT NULL(非空约束)
NOT NULL约束强制列不接受 NULL 值。
NOT NULL约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
第三步:增删改查
select * from 表名(显示所有列)
一次添加一行数据:
insert into 表名(列名,列名,列名...)values(‘ ’,‘ ’)(字符类型,和日期时间类型必须要用单引号)
一次添加多行数据:
insert into 表名(列名,列名,列名...)select(‘ ’,‘ ’)union
select (‘ ’,‘ ’)union
select (‘ ’,‘ ’)
更新数据表记录--update
update 表名 set 列名=值1,列名=值2,..
根据指定条件更新记录
update 表名 set 列名=值1,列名=值2,..where 列名(where后接查询条件)
删除表记录
delete from 表名(会删除这个表里面所有列的数据)where...
按照指定内容删除就要where
select选择列表
1.查询语句必须的字句只有select语句和from语句
2.where字句用于对查询结果进行过滤
3.group by字句根据指定列分组,having 字句对分组的结果进行过滤
4.order by 字句用于对查询结果进行排序。asc表示升序排序,desc表示降序排序(默认为升序)
选择列表
(当查询结果集需要返回表中全部列时)
select *from 表名
查询部分列
select 列名 from 表名
(可在多列名查询)
列标题
select 列名as 要改的列标题 as...from 表名
(可以省略as)
使用distinct过滤重复行
select distinct 列名 from表名
创建一个临时表
create table zhanjuan【表名】(num 【列名】int【列名的数据类型?】)
向zhanjuan表中插入数据
insert into zhanjuan values(数值)
ps:page63 QAQ
单条件查询
select *from 表名 where ..
多条件查询 就是加一个and/or
空值 is null
非空值 is not null
定制显示查询结果↓
查询结果排序↓
单列排序↓
select *from 表名 order by 列名 asc 【升序】(默认为升序)
desc【降序】
多列排序
使用top限制查询结果数量
select top n * 列名 (若不填列名则是全部列名)from 列名 正整数)
ps:select top 5*(全部列)form 表名 order by 列名(前5的)
top n percent(按百分比返回数据行)
like 运算符
“%”通配符可以匹配0到多个任意字符
ps:张小龙 张% %龙(开头,结尾匹配) 张%龙(中间匹配)%小%(两端匹配)
“_”通配符仅匹配任意一个字符
ps: 张_龙 张_ _
% 和_ 一起的运用:
ps:%小_ ...
[]通配符用于指定一个字符集合
page78 TAT
in 运算符
select*from 表名where 列名 in(‘ 某列名的数据’)
between...and运算符page80 QAQ
第四步:
备份一个表的内容
select * into 新表 from 旧表 (*表中全部列,如果没有*可以自己选择列)
SQL server 2017数据库语句
1.添加行:insert into 【表名】(列) values(值)
2.一次性添加多行:insert into 【表名】(列字段) select 【值】union select【值】
3.更新表记录 update 【表名】 set 【列名】【表达式】where 【条件】
4.删除表记录 delete from【列名】where 【条件】
5.选择列 select 【列名】from 【表名】注意:可以用*代表所有列
6.显示列标题 select 【列名】as 【列标题】 …… from【表名】
7.显示列标题 select 【列名】 【列标题1】,【列名】【列标题2】from 【表名】
8.过滤重复行 select distinct 【列名】from 【表名】
9.创建临时表 create table 【表名】(【列名1】【数据类型1】,【列名2】【数据类型2】);
10.查询SQL语句 select 【列】,【列】【运算符】【数字】 from 【表】
11.and与 , or 或
12.单列排序select * from 【表名】order by 【列名】
13.多列排序 select * from 【表名】order by 【列名】,【列名】
14.使用like 模糊查询 select 【列字段】from 【表名】where【列】like 【字符%】注意:%代表多个任意字符,%可以放在任意位置;_为任意一个字符,用法和%一样;[ ]用于指定一个字符集合。
15.In运算符查找 select * from【表名】where in(【要查询的值】)。
16.某个数字段查找 select * from 【表名】where 【要查询的列】between 【开始值】and【结束值】by 【列名】
17.替换字符串函数 replace(‘主字符串’,‘要替换的’,‘替换为’)
18.字符串反转函数 reverse(‘要反转的字符串’)
19.STR函数 str(‘浮点数’,字符串长度,小数后的位数)
20.Substring函数 substring(【列或字符串】,【开始位置】,【到此位置】)
21.getdate函数 列getdate() 返回系统时间和日期
22.Day函数 day()
23.Month函数 month(‘日期’) 返回日期中的月份
24.Year函数 year(‘日期’) 返回日期中的年份
25.Datediff函数
datediff(【五个值:year,quarter,month,daypfyear,day】,【日期段1】,【日期段2】)
26.Dateadd(【年,月,日】,【增加的】,【日期和时间】)
27.Power函数 power(【数值】,【多少次方】)
28.Rand随机数函数
29.Round函数 浮点四舍五入 round(【小数】,【小数位数】)
30.Cast函数 cast(【列】as 【类型名】)
31.Convert函数 convert(【类型】,【日期】,【整型数据】)
32.Sum函数 sum(【列名】或【表名.列名】) 求这一列的和
33.Max函数 max(【列名】或【表名.列名】)
34.Min函数 min(【列名】或【表名.列名】)
35.Avg函数 avg(【列名】或【表名.列名】)
36.Count函数 count(【列名】或【表名.列名】)
37.Group by子句 group by【列名】
38.多字段分组 如: select rankid 部门 id ,address 地区,count(*) 地区人数 from employee group by rankid,address
39.Having子句 如:select address,max(salary) from employee group by address having max(salary)>12000 order by max(salary)
40.内连接查询 select * from 【表名1】join rank 【表名2】 on 【表名1.列名】=【表名2.列名】 where 【条件】
41.多表连接查询 select 【列字段】 from 【表名】 join dept 【表名】 on 【表名.列名】=【表名.列名】 join rank 【表名】on 【表名.列名】=【表名.列名】 where 【条件】
42.外连接查询 左外连接 select 【列字段】 from 【表名】left join dept 【表名】on 【表名.列名】=【表名.列名】 where 【条件】 右外连接 左外连接 select 【列字段】 from 【表名】rigth join dept 【表名】on 【表名.列名】=【表名.列名】 where 【条件】
从一个数据库的表迁移到另外一个数据库代码
如果另一个库中没有同名的表
select * into b数据库.dbo.a表 from a数据库.dbo.a表 where 条件
如果是追加到另一个表中
inert into b数据库.dbo.a表
select * from a数据库.dbo.a表 where 条件
不同数据库的格式: [数据库名.所有者名.表名]
INSERT INTO 数据库B.dbo.表2
SELECT * FROM 数据库A.dbo.表1 WHERE ....
网友评论