文章目录
三种数据库
Oracle
Oracle公司的产品
产品免费 服务收费
SQL Server
微软出品的 Windows系统用的多
易用性好
MySQL
开源 免费 网站应用广泛
数据库操作
增:插入数据
删:删除数据
改:更新数据
查:检索数据
数据完整性约束
域完整性:指对列的约束
约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束
实体完整性:指对行的约束
约束方法:唯一约束、主键约束(不允许重复)、标识列
引用完整性:指对表与表之间关系的约束
约束方法:外键约束
自定义完整性:其他特定的约束
约束方法:规则、存储过程、触发器
数据类型
MySql
SQL Server
SQL语言四大类
数据查询语言DQL()
数据操作语言DML(manipulation) :select、update、insert、delete,用来操作数据库里面的数据
数据定义语言DDL(definition):create、alter、drop,主要用在定义或改变表(table)的结果,数据类型,表之间的链接和约束等初始化工作上,它们大多在建立表时使用
数据控制语言DCL(control) :用来设置或更改数据库用户或角色权限的语句,包括(grant、deny、revoke)
SQL语句
Structured Query Language:结构化查询语言
SQL语句的组成
SQL语句的运算符
不等于:<>
AND : 当且仅当两个布尔表达式都为true时,返回true
OR : 其中一个为true,则为true
NOT : 布尔表达式的值取反
SQL语句之插入语句
语法:
insert [into] 表名 (列名) values(值列表)
insert into student_table(Number,Name,Age) values('1','小燕子','19')
备注:
1、[ ]代表其中的内容可写可不写。当插入表中 全部列 数据时,表名后可省略列名,值列表的列数和顺序与表定义中的列要一致
2、标识列不能插入数据,非空列必须有对应值,插入数据时注意检查约束的限制
3、SQL语句不区分大小写
4、插入的数据必定是一个完整行,数据受行完整性的约束限制,每个数据都需要与相应列匹配,受域完整性约束限制,可用default插入默认值
5、插入多行数据,可以用下面的方法
将现有表中的数据插入到另一张新表中,语法:
insert into 表名(列名) select 列名 from <源表名>
insert into student_table(Number,Name,Age) select Number,Name,Age from student
SQL语句之查询语句(DQL)
语法:
select 列名 :查询全部列:* 查询部分列:直接写列名,逗号隔开
from 表名
where 查询条件表达式
order by 排序的列名[ASC或DESC]:ASC升序,DESC降序
select * from student_table :查询student_table表的所有列
select Name,Grade from student_table:查询姓名和成绩两列
select Name,Grade from student_table where Address='陕西渭南':查询指定行信息
查询不是陕西渭南的所有女生信息
select Name,Grade,Sex,Address from student_table where Address<>'陕西渭南' and Sex=1
特别用法
使用as为列起别名:
select Code as 学生编号, Name as 学生姓名, Address as 学生地址 from student_table
使用运算符:把两列合并到一列
select firstName +''+ lastName as 姓名 from student_table
使用等号:把两列合并到一列
select 姓名 = firstName +'.'+ lastName
查询Email列的空值
select Name from student_table where Email is null
限制查询行
SQL Server
select top 5 * from student_table :限制前五行
select top 20 percent * from student_table :限制前20%
MySQL
select * from student_table limit 0,5 :限制从第一行开始,显示五行
Oracle
select * from student_table where rownum<5 :使用rownum为虚列
查询排序
select * from student_table order by Grade :成绩默认升序排序
select * from student_table order by Grade desc :成绩降序排序
1、查询考试成绩乘以0.9再加5分计算后的综合成绩大于60分的记录,并进行升序排序
select Number as 学生编号,(Grade*0.9+5) as 综合成绩
from student_table
where (Grade*0.9+5) > 60
order by Grade
SQL Server常用函数
字符串函数
1、寻找一个指定的字符串在另一个字符串中的起始位置
select charIndex('adc','hjsadco',1) 返回:4
2、获得字符串长度
select len('SQL Server课程') 返回:12
3、把传递给它的字符串转换为大写
select upper('sql server课程') 返回:SQL SERVER课程
4、清除字符左边的空格
select Ltrim(' 张无忌 ') 返回:张无忌 右边空格保留
5、清除字符右边的空格
select Rtrim(' 张无忌 ') 返回: 张无忌
6、从字符串右边返回指定数目的字符
select Right('这就是爱糊里又糊涂',3) 返回:又糊涂
7、替换一个字符串中的字符
select replace('这就是爱糊里又糊涂','爱','恨') 返回:这就是恨糊里又糊涂
8、在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串
从第2个开始,删除3个
select stuff('ABCDEFG',2,3,'这就是爱') 返回:A这就是爱EFG
日期函数
1、获得当前的系统日期
select getDate() 返回:今天的日期
2、将指定的数值添加到指定的日期,返回新的日期
select dateAdd(mm,4,'02/01/2009') 返回:以当前的日期格式返回 2009-06-01 00:00:00.000
3、两个日期之间的指定指定日期部分的间隔
select datediff(mm,'01/01/2009','07/01/2009') 返回:6
4、日期中指定日期部分的字符串形式
select datename(dw,'02/01/2000') 返回:星期二
dw:Weekday
5、日期中指定日期部分的整数形式
select datepart(day,'01/12/2000') 返回:12
数学函数
1、返回从0到1之间的随机float值
select rand() 返回:0.973255274336449
2、取数值表达式的绝对值
select abs(-45.2) 返回:45.2
3、取大于或等于指定数值/表达式的最小整数
select ceiling(43.5) 返回:44
4、取小于或等于指定数值/表达式的最小整数
select floor(43.5) 返回:43
5、取数值表达式的幂值
select power(3,2) 返回:9(3的2次方)
6、将数值表达式四舍五入为指定精度
select round(43.5498,2) 返回:43.5500
7、对于正数返回+1,对于负数返回-1,对于0返回0
select sign(-43) 返回:-1
8、取浮点表达式的平方根
select sqrt(16.0) 返回:4
系统函数
1、转变数据类型
select convert(varchar(5),12345) 返回:字符串12345
2、返回当前用户的名字
select current_user 返回:你登录的用户名dbo
3、返回指定表达式的字节数
select datalength('还珠格格') 返回:8
4、返回当前用户所登录的计算机名字
select host_name() 返回:你所登录的计算机的名字DESKTOP-G5OMCQM
5、返回当前所登录的用户名称
select system_user 返回:DESKTOP-G5OMCQM\lisijing
6、从指定的用户ID返回用户名
select user_name(1) 返回:从任意数据库中返回“dbo”
数据库的创建与管理(DDL)
创建一个数据库
例:使用CREATE DATABASE命令创建一个名为“mrkj”的数据库。其中,主数据文件名称:“mrkj.mdf”,初始大小是10MB,最大存储空间为100MB,增长大小是5MB。日志文件名称:“mrkj.ldf”,初始大小是8MB,最大存储空间为50MB,增长大小是8MB。
create database mrkj
on **主数据文件
(name='mrdat', filename='G:\sql\mrkj.mdf', size=10, maxsize=100, filegrowth=5)
** 文件名 文件路径 文件大小 最大值 标识增量
log on **事务日志文件
(name='mingrilog', filename='G:\sql\mrkj.ldf', size=8mb, maxsize=50mb, filegrowth=8mb)
查看数据库列表
show databases;
使用数据库
use 数据库名
删除数据库
删除数据库必须满足的条件:
1、取消日志传送操作
2、删除备份
3、删除数据库快照
如果删除正在使用的数据库,系统会出现错误
drop database n1,n2...
修改数据库
alter database mrkj
指定要添加的数据库文件、事务日志文件
alter database mingri
add file
(name=mrkj, filename='G:\mrkj.ndf', size=10MB, maxsize=100MB, filegrowth=2MB)
add log file
数据库重命名
//将“mr”更名为“mrsoft”
exec sp_renamedb 'mr','mrsoft'
其他命令
to filegroup **指定要增加文件到哪个文件组
remove file **从数据库系统表中删除指定的文件,并且删除其物理文件。文件只有为空时才能被删除
remove filegroup **从数据库中删除指定的文件组
add filegroup **指定要增加的文件组
modify file **修改指定文件的文件名、容量大小、最大容量、文件
modify file group<filegroup_name><filegroup_property> **修改文件组属性
set **设置数据库属性
数据表基础
基本数据类型
整数数据类型 | 常用的一种数据类型,可以存储整数或小数 bit、int、smallint、tinyint |
---|---|
货币数据类型 | 用于存储货币值,使用前在数据前加上货币符号 money、smallmoney |
浮点数据类型 | 用于存储十进制小数 real、float、decimal、numeric |
日期/时间数据类型 | 用于存储日期类型和时间类型的组合数据 datetime、smalldatetime、date、datetime(2)、datetimestampoffset |
字符数据类型 | 用于存储各种字母、数字符号和特殊符号 char、nchar(n)、varchar、nvarchar(n) |
二进制数据类型 | 存储二进制数据 binary、varbinary |
图像和文本数据类型 | 用于存储大量的字符及二进制数据(Binary Data) |
创建数据表
例:创建数据表mingri,ID字段为int类型并且不允许为空,Name字段长度为50的varchar类型;Age为int类型
use db_2012 **打开数据库
create table [dbo].[mingri](
[ID] [int] not null,
[Name] [varchar](60),
[Age] [int]
)
修改数据表结构
向数据表中添加Sex字段/列
use db_2012 **打开数据库
alter table mingri
add Sex [char](2)
删除mingri数据表中的Sex字段/列
use db_2012
alter table mingri
drop column Sex
修改字段类型
alter table 表名
modify 字段名 char(10)
修改字段
alter table 表名 change 旧字段名 新字段名 bigint;
bigint是新字段的数据类型
删除数据表结构
drop table 表名;
drop table[database_name.[schema_name].| schema_name]
table_name [,...n][;]
**database_name:数据库名称
**schema_name:所属架构的名称
**table_name:要删除的表的名称
例:删除db_2012数据库中的数据表mingri
use db_2012
drop table mingri
往数据表里添加数据
insert语句可以向表中添加新记录或一个结果集
例:向数据表Employee添加数据记录
use db_2012
insert into Employee
(ID,Nmae,Sex,Age)values(12,'雨涵','女',24,null)
如果要添加表中所有字段的数据,可以省略列名
use db_2012
insert into Employee
values(14,'雨新','女',22,null)
修改/删除数据表中的数据或者字段
例1:将Employee表中所有员工的年龄加2岁
use db_2012
update Employee
set Age = Age + 2
例2:将Employee表中“小燕子”的性别改为女
use db_2012
update Employee
set Sex = '女'
where Name = '小燕子'
例3:删除Employee表中ID=17的员工的信息
delete语句用于删除表中的行
use db_2012
delete from Employee where ID=17