SQL--结构化的查询语言

时间:2023-12-20 17:41:26

SQL--结构化的查询语言
T-SQL:Transact-SQL (SQL的增强版)

逻辑运算符
and &&
or ||
not !

关系运算符

等于 =
不等于<>或!=

sql中的注释:--

1.如何编写T-SQL语句,选择要操作的数据库?
use 数据库名

2.打开表显示所有的数据?
select*from 表名

3.编写的SQL语句,保存在拓展名为.sql文件中

4.编写sql语句,向表中插入1条数据

insert into 表名(列名列表)
values(值列表)

5.操作表,表明和列名,不区分大小写

6.添加数据时,注意选项
1>标识列不要出现在列名列表中
2>字符类型的值,要用''引起来
且不要超出长度
3>值的个数和类型,
要和列名列表中的个数和类型要一一对应
4>外键列的值,必须引用主键表中主键的值

第四次课
1.插入多行数据
1.存在新表,新建表格式和原表一样
insert into 新表表名
select 列名
from 数据来源的表名
2.不能存在新表 (数据过来了,约束没有了)
select 源表的列名
into 新表
from 新表名
3.原表中添加多条数据
insert into 表名(列名列表)
select 值列表 union(联合)
............
select 值列表 添加多条数据不能用default 最后一个没有union

2.修改
update 表名 set
要修改的列名=修改后的值

按条件修改指定的数据:
update 表名 set
要修改的列名=修改后的值
where 条件

PS:更新数据时【主键的值不能修改】

3.删除
delete from 表名 【where<删除条件>】

删除表中的所有行
truncate table 表名 类似没有where的delete语句

相同点:都可以删除表中的数据
不同点:1.语法不同。delete语句可以根据指定的条件删除数据,truncate 会删除所有数据
2.有外键约束的表只能用delete语句
3.truncate 删除的速度更快,不可以恢复
4.delete删除数据后,标识列会继续生成,而truncate会重新从标识种子开始计数

又一次课

本章内容

一、模糊查询
1、like关键字,只适合文本类型
2、where 列名 like '通配符'
3、常用通配符
1.表示占用1个字符位置:_
2.表示任意长度字符的:%
3.在某个范围:[]
4.不在某个范围:[]
4、between的作用
5、in关键字的作用
6、常见的面试题:查询表中第M-N条记录(没有标识列或标识列的值)
语法:select top(N-M+1)*from 表名
where 列名 not in (select top(M-1) 列名 from 表名) 列名最好选择主键列
ps:如果查询结果不准确,select 语句后需要添加 order by 语句进行排序

二、聚合函数
1、作用:
2、常用的聚合函数:SUM,AVG,MAX,MIN,COUNT(统计时包括'' 不包括NULL的值)

又一次课

本章内容
一、分组查询
1、语法
select ...
where ...--数据的筛选
group by 分组列名
having ...--分组后where
order by...--排序

2、注意
select 显示的列名,如果没有用聚合函数包含,必须在group by 子句中出现,否则select语句查询错误

错误信息:因为该列没有包含在聚合函数里面 或group by 子句中

3、 where -- group by -- having -- order by --顺序

4、where 和having 的异同点?
相同点:都是用于按条件筛选
区别:1.出现的位置有限定,where出现在表名的后面
having只能出现在group by 的后面
2.where条件中不能有聚合函数,having中可以包含聚合函数

二、多表查询操作
1、常用的多表查询
1.内连接--inner join
语法:
方式1:
select 列名 from 表1,表2
where 表1.通用列=表2.通用列
【and 条件...】

方式2:
select 列名 from 表1
inner join 表2
on 表1.通用列=表2.通用列
【where 条件...】
2.外连接
左外连接--left join
右外链接--right join
2、什么叫通用列?
通用列,也叫公共列,2个有关系的表中建立主外键的列
父(主,主键)表--子(从,外键)表
主键列------>外键列

1.理解数据库基本概念

·数据库的作用--保存数据

·常用的数据库?
--Oracle,SQL server,DB2,MySql

·数据库中包括:表、关系、操作对象

·数据库中的表由行(记录)和列(字段)组成
表:oop中是类
一行(记录):一个对象或实体
列(字段):oop中的属性

DB--数据库(DataBase)

数据库管理系统--DBMS

DBA--数据库管理员

操作:
增(insert) 删(delete) 改(update) 查(select)

数据冗余--存在重复

2.熟知SSMS的基本操作
2.1、打开SQL Server2008

2.2、系统数据库
3.创建和配置SQL Server 数据库

时下流行的数据库
1.Oracle (java使用的比较多)
Oracle公司的产品
产品免费、服务守卫
2.SQL Server
针对不同用户群体的多个版本
易用性好
3.DB2
IBM公司的产品
支持多操作系统、多种类型的硬件和设备
4.MySQL (java使用的比较多)
开放源代码
网站应用广泛

第二次课
1、数据库的组成
*.mdf和*.ndf文件(主,次文
*.ldf文件--日志文件

默认初始值大小,mdf文件3M,日志文件1M。

2、新建用户数据库
步骤1:在磁盘中新建一个文件夹(保存数据库文件)
步骤2:再按步骤完成数据库的新建(设置数据库的名称和储存的路径,选择步骤1中的文件夹)

3、新建登录名和用户名(简单权限设置)--以windows身份或者sa登录后再去新建
3.1新建(sqlserver身份验证的)登录名
只需要设置密码即可(取消强制密码过期)
3.2新建(数据库)用户名--关联用户数据库
选择你要访问的【数据库名】,展开【安全性】,选择【用户】,右键点击选择【新建用户】,
输入用户名,同时关联用户名

是否设置成功,用自己【新建的登录名】成功登录后,能展开自己【新建的数据库】

4、数据库的相关配置

分离、附加、收缩。数据的导入导出的操作等。

方式1:直接停止sqlserver服务

方式2:脱机

方式3:分离

通过新建登录名和用户名,达到简单的登录权限的控制

方式一:
创建登录名时,在用户映射中直接设置

方式二:
在数据库里创建关联用户

第三次课
一、创建表
1.如何新建表

2.常见的数据类型

2.1文本类型(字符串或字符)
java中的String:varchar,nvarchar(可变长度)
java中的char:char(固定长度)
char(10)和varchar(10)保存数据的区别
保存的实际数据,长度<=10,比如为5个长度
char(10),所占的空间长度仍然为10
varchar(10)和nvarchar(10),所占的空间长度实际为5
2>如果长度超出10,char和varchar都会报错。
但navarchar不会报错,会更具实际值的长度而自动扩展长度

2.2日期格式--datetime yyyy-MM-dd(年/月/日)

2.3整数--int

2.4小数点数字--float

2.5货币类型--money

2.6布尔类型--java中boolean 数据库中:bit
二、完善表结构

1.1域(字段、列名)完整性
限制数据类型,检查约束,外键约束,默认值,非空约束等实现
1.2实现完整性:
唯一约束,主键约束,标识列等实现
1.3应用完整性,外键约束实现

1.4自定义完整性(本学期课程不设计)
规则、存储过程、触发器等实现

2.主键可以有多个列,联合主键

选择主键:最少性 稳定性

3.外键约束

步骤1:确定父(主)表,子(从)表

步骤2:打开子(从)表,找到列(公共列),设置主外键关系

三.操作表示常见问题

1.列名为英文,不允许为中文列名

2.修改时不能保存,在工具中设置

3.标识列只能为int类型,插入数据时,不能手动添加,根据表示种子及标识增量自动产生一个值
值:不会因为删除数据而重新开始

4.主键的值是唯一的,不能重复,主键的值不能修改。

5.建立外键约束时,公共字段的名称可以不同,但数据类型要一致