博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql复习笔记
阅读量:5325 次
发布时间:2019-06-14

本文共 6395 字,大约阅读时间需要 21 分钟。

阅读目录

1.什么是SQL语句

2.使用sql语句创建数据库和表
3.创建数据表
4.数据完整性约束
5.四中基本字符类型说明
6.SQL基本语句
7.类型转换函数
8.日期函数
9.数学函数
10.字符串函数
11.联合结果集union
12.CASE函数用法
13.IF ELSE语法
14.WHILE循环语法
15.子查询
16.表连接Join
17.事务
18.视图
19.触发器
20.存储过程
21.分页存储过程
22.索引
23.临时表


1.什么是SQL语句

sql语言:结构化的查询语言。(Structured Query Language),是关系数据库管理系统的标准语言。

它是一种解释语言:写一句执行一句,不需要整体编译执行。

语法特点:

1.没有“ ”,字符串使用‘ ’包含

2.没有逻辑相等,赋值和逻辑相等都是=
3.类型不再是最严格的。任何数据都可以包含在‘ ’以内
4.没有bool值的概念,但是在视图中可以输入true/false
5.它也有关系运算符:> < >= <= = <> != ,它返回一个bool值
6.它也有逻辑运算符: !(not) &&(and) ||(or)
7.它不区别大小写

2.使用sql语句创建数据库和表

语法:

create database 数据库名称on primary --默认在主文件组上 ( name='逻辑名称_data' , --当你发现它不是一句完整的sql语句,而仅仅是一个处理结构中的某一句的时候,就需要添加 , size=初始大小,--数值不包含在‘’以内 filegrowth=文件增长 , maxsize=最大容量, filename='物理路径' ) log on ( name='逻辑名称_log' , --当你发现它不是一句完整的sql语句,而仅仅是一个处理结构中的某一句的时候,就需要添加 , size=初始大小,--数值不包含在‘’以内 filegrowth=文件增长 , maxsize=最大容量, --一般来说日志文件不限制最大容量 filename='物理路径' )
--判断数据库文件是否已经存在 :数据库的记录都存储在master库中的sysdatabases表中 --自动切换当前数据库 --使用代码开启外围应该配置器 exec sp_configure 'show advanced options' ,1 RECONFIGURE exec sp_configure 'xp_cmdshell',1 RECONFIGURE --自定义目录 xp_cmdshell可以创建出目录 'mkdir f:\project':指定创建目录 exec xp_cmdshell 'mkdir f:\project' use master --exists 函数判断()中的查询语句是否返回结果集,如果返回了结果集则得到true,否则得到false if exists( select * from sysdatabases where name='School') drop database School --删除当前指定名称的数据库 create database School on primary ( name='School_data',--逻辑名称.说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满 size=3mb,--初始大小 maxsize=100mb,--最大容量 filegrowth=10%,--文件增长一次增长10% filename='f:\project\School_data.mdf' ), --创建文件组 filegroup mygroup ( name='School_data1',--逻辑名称.说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满 size=3mb,--初始大小 maxsize=100mb,--最大容量 filegrowth=10%,--文件增长一次增长10% filename='F:\qiyi\School_data1.ndf' ) log on ( name='School_log',--逻辑名称 size=3mb,--初始大小 --maxsize=100mb,--最大容量 filegrowth=10%,--文件增长一次增长10% filename='f:\project\School_log.ldf' ), ( name='School_log1',--逻辑名称 size=3mb,--初始大小 --maxsize=100mb,--最大容量 filegrowth=10%,--文件增长一次增长10% filename='F:\qiyi\School_log1.ldf' )

3.创建数据表

语法:

create table 表名( 字段名称 字段类型 字段特征(是否为null,默认值 标识列 主键 唯一键 外键 check约束), 字段名称 字段类型 字段特征(是否为null,默认值 标识列 主键 唯一键 外键 check约束) ) 创建老师表Teacher :Id、Name、Gender、Age、Salary、Birthday
use Schoolif exists(select * from sysobjects where name='Classes') drop table Classes create table Classes ( Classid int identity(1,1), ClassName nvarchar(50) not null ) if exists(select * from sysobjects where name='teacher') drop table teacher create table Teacher ( Id int identity(1,1),--可以同时创建多个特征,用空格 分隔开。 identity是标识列,第一个参数是种子,第二个是增量 Name nvarchar(50) not null,-- not null标记它的值不能为null--不能不填写 ClassId int not null, Gender bit not null, Age int , Salary money, --如果不标记为 not null.那么就相当于标记了null Birthday datetime )

4.数据完整性约束

实体完整性:实体就是指一条记录。这种完整性就是为了保证每一条记录不是重复记录。是有意义的

  • 主键:非空和唯一.一个表只有一个主键,但是一个主键可以是由多个字段组成的 组合键
  • 标识列:系统自动生成,永远不重复
  • 唯一键:唯一,但是可以为null,只能null一次

域完整性:域就是指字段,它是为了保证字段的值是准和有效,合理值

  • 类型 是否null,默认值,check约束,关系

自定义完整性:

  • check约束 , 存储过程 触发器

引用完整性:一个表的某个字段的值是引用自另外一个表的某个字段的值。引用的表就是外键表,被引用的表就是主键表

  • 1.建立引用的字段类型必须一致
  • 2.建立引用的字段的意义一样
  • 3.建立主外键关系的时候选择 外键表 去建立主外键关系
  • 4.建立主外键关系的字段在主表中必须是主键或者唯一键
  • 5.对于操作的影响

    ①.在添加数据时,先添加主键表再添加外键表数据
    ②.在删除的时候先外键表数据再删除主键表数据

  • 级联的操作:不建议使用:会破坏数据完整性
  • 不执行任何操作:该报错就报错,该删除就删除
  • 级联:删除主表记录,从表引用该值的记录也被删除
  • 设置null:删除主表记录,从表对应的字段值设置为null,前提是可以为null
  • 设置为default:删除主表记录,从表对应的字段值设置为default,前提是可以为default

主键约束(PK Primary key)唯一键约束(UQ unique) 外键约束(FK foreign key) 默认值约束(DF default) check约束(CK check)

语法:

alter table 表名add constraint 前缀_约束名称 约束类型 约束说明(字段 关系表达式 值)
use Schoolif exists(select * from sysobjects where name='PK_Classes_Classid') alter table classes drop constraint PK_Classes_Classid alter table classes add constraint PK_Classes_Classid primary key(classid) --为id添加主键 alter table teacher add constraint PK_teacher_id primary key(id) --为name添加唯一键 alter table teacher add constraint UQ_Teacher_Name unique(Name) --同时创建salary的默认约束和age的check约束 alter table teacher add constraint DF_Teacher_Salary default(5000) for salary, constraint CK_Teacher_Age check(age>0 and age<=100) --为teacher表的classid字段创建主外键 if exists(select * from sysobjects where name='FK_Teacher_Classes_Classid') alter table teacher drop constraint FK_Teacher_Classes_Classid alter table teacher with nocheck --不检查现有数据 add constraint FK_Teacher_Classes_Classid foreign key(classid) references classes(classid) --on delete set default 级联操作 --不执行任何操作:该报错就报错,该删除就删除 --no action --默认选择 --级联:删除主表记录,从表引用该值的记录也被删除 --cascade --设置null:删除主表记录,从表对应的字段值设置为null,前提是可以为null --set null --设置为default:删除主表记录,从表对应的字段值设置为default,前提是可以为default --set default

5.四中基本字符类型说明

--len(参数) --获取指定参数内容的字符个数 select LEN('abcd') 【4】运行结果 select LEN('中华人民共和国') 【7】 --DataLength(参数):获取指定内占据的字节数--空间大小 select DataLength('abcd') 【4】 select DataLength('中华人民共和国') 【14】 --char类型:当空间分配后,不会因为存储的内容比分配的空间小就回收分配的空间。但是如果存储的内容超出了指定的空间大小,就会报错,当你存储的内容的长度变化区间不大的时候可以考虑使用char select LEN(char) from CharTest 【2】 select DataLength(char) from CharTest 【10】 --varchar var--变化的:当你存储的内容小于分配的空间的时候,多余的空间会自动收缩。但是如果存储的内容超出了指定的空间大小,就会报错 当存储的内容波动区间比较大时候使用varchar select LEN(varchar) from CharTest 【2】 select DataLength(varchar) from CharTest 【2】 --nchar-- n代表它是一个unicode字符。规定不管什么样的字符都占据两个字节。 char:空间是固定的 select LEN(nchar) from CharTest 【10】 select DataLength(nchar) from CharTest 【20】 --nvarchar n var char select LEN(nvarchar) from CharTest 【2】 select DataLength(nvarchar) from CharTest 【4】

图片描述

6.SQL基本语句

数据插入

调用方法 一 一对应原则:类型对应,数量对应,顺序对应。

语法: 形参 实参

insert into 表名([字段列表]) values(值列表) --数据必须要符合数据完整性 插入操作是单个表的操作 插入操作insert一次只能插入一条记录
use School--插入teacher所有字段的数据.如果在表后没有指定需要插入的字段名称,那么就默认为所有字段添加值 --但是一定需要注意的是:标识列永远不能自定义值--不能人为插入值 --仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Teacher'中的标识列指定显式值。 insert into Teacher values('张三',5,1,30,4000,'1984-9-11') insert into Teacher(Name,ClassId,Gender,Age,Salary,Birthday) values('张三',5,1,30,4000,'1984-9-11') --不为可以为null的字段插入值 :可以null的字段可以不赋值 --列名或所提供值的数目与表定义不匹配 insert into Teacher(Name,ClassId,Gender,Age,Salary) values('李四',5,1,30,4000) --非空字段一定需要赋值 :不能将值 NULL 插入列 'Gender',表 'School.dbo.Teacher';列不允许有 Null 值。INSERT 失败 insert into Teacher(Name,ClassId,Age,Salary) values('李四',5,30,4000) --为有默认值的字段插入值: --1.不写这一列让系统自动赋值 insert into Teacher(Name,ClassId,Gender,Age) values('王五',5,1,30) --指定 null或者default insert into Teacher(Name,ClassId,Gender,Age,Salary,Birthday) values('赵六',5,1,30,default,null) --数据必须完全符合表的完整性约束 insert into Teacher(Name,ClassId,Gender,Age,Salary,Birthday) values('赵六1',5,1,300,default,null) --任意类型的数据都可以包含在''以内,

转载于:https://www.cnblogs.com/cyblog-eastcn/p/4818171.html

你可能感兴趣的文章
JAVA学习5:用Maven创建第一个web项目(2)servlet演示
查看>>
lua解析赋值类型代码的过程
查看>>
python之路——面向对象进阶
查看>>
Serverless和PaaS的区别
查看>>
Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现
查看>>
hdu 4771 求一点遍历全部给定点的最短路(bfs+dfs)
查看>>
UML 序列图
查看>>
[JS 分析] 有_道_翻_译 MD5 加盐
查看>>
WPF控件深拷贝:序列化/反序列化
查看>>
JAVA_SE基础——32.this关键字调用本类的构造方法
查看>>
winform中datagridview选中行索引获取
查看>>
243. Shortest Word Distance
查看>>
查看被锁的数据[Z]
查看>>
SSM的例子-参考
查看>>
《构建之法》1
查看>>
【菜鸟学Python】案例一:汇率换算
查看>>
文献综述随笔(一)
查看>>
android bindService()
查看>>
JVM 参数设置
查看>>
Volley的基本使用(转)
查看>>