sql基础操作
数据库类型,和创建数据库表,对于一些关系字符进行了解,约束条件,还有查询(where,group by ,having,order by),更改,删除和较为复杂的查询操作列表
1.文本转换
txt,asci(excle版本)想在mysql操作,得变成utf8:create database 数据库名称 character set utf8;
2.类型–常用
int整形,整数型,如果是有符号,则在语句后面加unsigned 变成无符号
float(m,d)(小)浮点型 ,double(m,d)(大) 浮点型
M为总体位数,d小数点后位数
字符串:Varchar(字符长度) 可变长度文本型,不需要换算字节 ,可节 省空间
Char 固定长度文本,空下来的就用空来填充
日期型:Datatime:YYYY-MM-DD HH:MM:SS
注意:一个汉字占两个字符的长度,但是sql仍然作为一个字符取
3.执行语句
数据库:
创建:create database 库名;
查询:show create database ;
**使用数据库:use 库名;这个操作数据库经常用
删除:drop database 库名;
drop table 表名;
drop class 类名;
表:
创建:create table 表名;
查看所有表:show tables;
创建表时候,字段用逗号,最后括号后用分号
**约束条件:(可多个一起用)**
primary key:主键,非空不重复 单个主键:sno int primary key 多个主键:primary key(sno,sname)**
not null:非空
unique:唯一约束,确保表的一列或多列不出现重复值
auto_increment:一个表只能有一个自增字段,自增字段必须为主键的一部分。默认情况下从1开始自增,不出现空值,唯一
default:默认值’:把空值null’改成默认值 跟着替代那个的类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104205132848.)
导入数据:
方法一:insert into student (“A001”,“小明”,“23”);
方法二:外部导入:
load data local infile ‘C:/Users/CDA/Desktop/data/t1.csv’------这里的路径要“/”
into table test1 ---------------------把文件加入test1表
fields terminated by ‘\t’ --------------------分割符是’\t’,操作前看你文件是什么分隔符
ignore 1 line ---------------不需要第一列,所以忽略
**查询:(select...from..)**
导入内容:select * from 表名;
行数: select count(*) from 表名;
检查表结构:desc 表名;
**更改,跟新:(alter table)**
改表名: rename
Alter table 表名1 rename 表名2;
改变字段后的属性 modify 把老的删掉
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104210032662.)
改变字段和字段后面属性 change 把老的删掉
. ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104210110769.)
增加新字段 add
. ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104210144890.)
改变顺序: first,after 之前的数据已经被删除,所以也要连着属性一起写
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104210204558.)
删除字段
alter table empdep drop maname
删除主键:alter table empdep drop primary key;
Select语句深入
select * from 表
where条件
group by 字段 having 条件、 groupby 分组 where分组前条件,having分组后条件
desc 字段 Desc降序,默认升序 若有两个字段,则先执行第一个字段,再执行第二 个字段
a.聚合类函数:avg,sum,max,min ,count
1、having放在group by 的后面
2、group by 后面只能放非聚合函数的列
3、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据, 条件中不能包含聚组函数,使用where条件显示特定的行。
4、having,是进行分组后,的筛选条件
b.连接方式(表*表):
内连接:Select * from 表1 inner join 表2 on 表A.key=表B.key ------ 内连接是链接相同key数据,不同不要
左连接:select * from 表1 left join 表2 on 表A.key=表B.key ------ 左连接是右边有左边有一样的key的数据都写上,若左有,右没有,则还是写,只是值为null
右连接:select * from表1 right join 表2 on 表A.key=表B.key------跟左连接一样的反过来
c.联合语句(多个查询语句)
Union结果去掉重复项:Select 表1.* from t1 union select t2.* from t2
Union all:结果没有去除重复项:Select 表1.* from t1 union all select t2.* from t2
相当于纵向合并:即使两表名字不同,计算机都是叠加一起,跟excle PQ不同(pq要有相同名称)
d.查询操作符列表:
注意:
all 和any语句,是跟比较符一起用
有时候,in和all相同,得出结果相同。
e.删除重复记录
Select distinct 字段 from表
以主键分组=没分组,因为主键只有一个
下面就是一些琐碎的知识:
1.不要直接打开sql文件,因为没有跟sql instance链接,而是 打开数据库后,把sql拖进里面
2.注释“-- ”横杠横杠空格 或者“#”
4.错误代码:1046 没有使用数据库
5.sys数据库的自己系统,不能改
Schemas下的是对象—子对象(表,视图(数据映射),存储过程(编写批处理),函数)