目录
数据类型
image 可用来储存图像
char(字节大小)文本数据类型 定长 通过字节的方式限定长度
varchar(字节大小)文本数据类型 动长 通过字节的方式限定长度
nchar(长度)文本数据类型 通java 字符串类型 通过内容的长度方式限定长度
nvarchar(长度)文本数据类型 动长 通过内容的长度方式限定长度
SQL 的组成
运算符
外键
外键跟着一个主键 外键必须和主键关联 外键必须和主键一个数据类型
创建表格
student表个中的teacher 是外键 他要和 teacher表格中的主键id 建立关系
因为一个学生对应一个老师的编号
所以 student 表格中的 teacher 是次类
teacher 中的 id 是 主类
所以我们要和 student 中的 teacher 设置关系
先添加一个关系
然后设置 主键 外键
注意:我 外键 填写的内容必须是 主键有的
新建关系图
有钥匙插着的是 主键(主要的) 没有钥匙的是外键(次要的)
Check约束
约束:添加输入条件
扩展限制名字长度长度
len(name)>=2 and len(name)<6
添加条件
插入数据
指定列名 插入数据是不可以用双引号
insert into teacher (列名) values ('添加的数据');
查询列表信息
select * from 表格名;
不写列名
insert into teacher values ('添加的数据');
基础查询数据
查询数据
查询列表所有信息
select * from ClassTable
指定插入数据
insert into ClassTable(id,type,name) values('A1109','开发','1107班');
select * from 表格名
插入数据
insert into ClassTable values('A1109','开发','1107班')
添加的时候使用默认值
insert into student (number,name) values (default,'你好')
查询指定的列
查询指定的列
select name,age from member;
select 列名 from 表格名;
把查询的数据复制到另一个表格中
查询出来的name age 复制到s2表中
insert into s2 select name,age from member
查询数据出入新的表格中
把查询到的结果,复制到一个不存在的表格中
会自动创建新表
注意:只能执行一次
select 查询的列名 into 新建的表格名 from 查找的表格名
select name,skill into ababab from member
多行插入
一次插入多行数据
insert into 表名(列表)
select(列名)union
删除数据
删除一行
delete from 表格名 where 变量名 = 条件 ;
一定要加条件
一定要加条件
使用delete 语句清空了所有的数据后
再次添加新的数据
自增长的id 是从删除的 id 后面开始的
删除整个表
清空数据
注意:有性能问题 建议删除大量的数据 只有一条数据就用delete
truncate table 表名
修改数据
修改命令
update sanguo set attack = 100000 where id = 35;
一定要加添加
后果:会导致整个表变成这个
查询数据
带一个条件的查询
select * from sanguo where cointry='吴国';
select * from sanguo;
select * from sanguo where cointry='吴国' and attack > 80;
select * from 表格名 where 条件;
select name as 姓名,attack as 攻击力 from sanguo where cointry='吴国'
select * from sanguo
as 给 表格列名起别名
列名 as 别名
错误示范:
select name + attack from sanguo where cointry='吴国'
select * from sanguo
正确
select name + cointry as 英雄 from sanguo where cointry='吴国'
相同的数据类型可以拼接
不相同的数据类型不可以拼接
这样也可以,但不建议
select name 英雄 from sanguo where cointry='吴国';
查询空数据
空查找
查询为null的数据
select * from sanguo;
select * from sanguo where conutry is null;
查询不为空的数据
查询不是 null 的数据
select * from sanguo;
select * from sanguo where conutry is not null;
select 姓名=name from sanguo
起别名有三种用法 一种是 as 一种是 空格 一种是 =
常量起别名
实例:
数据库表格就有序的对象数组
查询数据并限定行数
select top 3 * from sanguo;
select * from sanguo where conutry is not null;
按百分比来显示行数
select top 30 percent * from sanguo;
select * from sanguo where conutry is not null;
案例
升序降序查询
升序排序
order by 列名 asc
降序
order by 列名 desc
打印
注意:从1开始
select charindex('cd','abcdef')
字符串函数
演示
select ltrim(' 你好 ');
select rtrim(' 你好 ')
select right('买卖提.吐尔松',3);
select replace('你是暗红色','暗','浅');
select stuff('ABCDEFG',4,1,'你好我是');
注意:原字符串是 ABCDEFG 删除的是第4个后的第几位数 如果是 0 就不删除如果是 1 就删除 D
实操
日期函数
常用的是:
getdate();
datediff();
数学函数
系统函数
把一行数据的所有的O 改成 0
排序
通配符
模糊查询
_
select * from sanguo where name like '张_'
查出所有姓张而且是两个名字的人
%
select * from sanguo where name like '张%'
查出任意长度姓张的人
查找所有带白的
select * from sanguo where name like '%白%'
[]
字符集
select * from sanguo where name like '张[飞辽]'
[^]
除了字符集
取反
select * from sanguo where name like '张[^辽]'
查找两个字用户,不姓张的
select * from sanguo where name like '[^张]_'
查找包括最大值最小值