SQL基本操作
对SQL的基本操作根据操作对象进行分类:库操作,表操作(字段),数据操作
库操作:对数据库增删改查
创建数据库
Create database 数据库的名字[库选项]
库选项:用来约束数据库,分为两个选项
字符集设定:charsct/charcter set具体字符集
查看数据库
show database like `pattem`;--patterm是匹配模式
%表示匹配多个字符
_:表示匹配单个字符
更新数据库
数据库的名字不可以修改
数据库的修改仅限库选项:字符集和校对集(校队集依赖字符集)
Alter database 数据库[库选项];
Charsct/character set[=]字符集
删除数据库
drop database 数据库
表操作
新增数据表
Create table [if no exists]表名(
字段名字 数据类型 ;
字段名字 数据类型;
)
查看数据表、
show tables like '%s ';
更新数据库
修改学生表中的gender字段为sex。
alter table my_student change sex varchar(10);
添加学生表中的年龄字段
alter table my_student add sex varchar(10)
修改学生表中的年龄字段(age)
alter table student drop age
删除数据表
drop table 表
插入数据
insert into mytudent表 values(1,`itcats`,`male`)
insert into mystdent (number,sex) values(2,`男`)
查看数据
select * from mystudent;
select x,name from mystudent where id=1;
高级查询
select 字段 from 数据源 [where 条件子句 ] [groud by 子句]
[having 子句] [order by子句][himit子句]
凡是groud by语句不能用where来查要用having
distinct去重
子查询
select * from (select* from student)as s;
where子句
where子句:用来判断数据,筛选数据
判断条件:运算符:>< >= <= !=,<>,=,like and between....and in/not in
floor(rand()*20)取值0开始,floor 向下取余
group by 分组。根据某个字段段进行分组
分组的意思:是为了统计数据(按组统计,按分组字段进行数据统计)
SQL提供了一系列统计函数
count()max() avg() min() sum()
count()可以写字段
having子句与where子句条件一样
意义:where查询后再进行条件查询。
select id,count(*) from student group by id having count(*)>=2
order by 字段 desc 降序
limit限制
1.只用来限制长度 limit数据量
2.只用来限制起始位置 limit 0,2 0开始,长度为2
连接查询
意义:在用户查看数据的时候,需要显示的数据来自多张表
连接查询分为4种
内连接,外连接,自然连接和交叉连接
交叉连接=左表,右表
内连接
左表 inner jion右表 on 左表字段=右表字段(on可以,where没有on效率高)
外连接
以某张表为主,去处里面的所有记录,然后进行每条与另外一张表进行连接;
不管能不能匹配上条件,最终都会保留,能匹配正确保留,不能匹配其他表的话
都置空null,
左外连接
select s.c c.name from s_name s left join c_name c on s.c_id=c.id
-------左表为表
更新数据
Update 表名 set 字段
update mystudent set sex='famale' where name=`jim`
更新多个字段
update NetFlowStatus
set elapsed_sec=888,total_MB=999
where eth_num=0;
记住要写条件
delect from 表名 where sex=`mane`
要写条件
子查询
in any/some all
行子查询
分组查询都是去第一个,所以有排序的先排序再分组
字段数据类型(列类型)
SQL中将数据类型分为了三大类:数值类型,字符类型和时间日期类型;
数值型
数值型数据:都是数值
系统将数值型分为整数型和小数型。
整数型
Int:标准整型(常用)
Float:占4个字节ccshuju,精度范围大概为7为左右
double:占用8个字节存储数据,精度范围大概为15位左右
时间日期lx
Datetime时间日期:格式YYYY.mm.dd.HHH
Date 日期,就是datetime中的date部分
Time时间(段);指定的某个区间
Timestamp 时间擢 从1997年开始
Time
枚举字符串
枚举:enum 事先将所有可能的结果都设计好,
实际上存储的数据必须是规定好的数据中的一个。
枚举的使用方式
定义:enunm(可能出现的元素列表);//如enum(`男`;`女`;·`不男不女`;`妖`);
使用:存储数据,只能存储上面定义好的数据
create table student(
gender enum(`男`,`女`,·`保密`);
)
枚举原理:枚举在进行数据规范的时候(定义的时候);系统会自动建立一个数字与枚举元素对应关系
(关系放在日志中);然后在进行数据插入的
字段属性
主键
primary key主要的键
一张表只能一个字段可以使用对应的键。
更新主键和删除主键
没有办法直接更新主键
Alter table 表名 drop primary key;
唯一键(与主键区别可以多个字段为空,而且多个可以为空(空字段不参与唯一性比较))
unique
更新唯一键$删除唯一键
一般都删除,因为没有更新
Alter table 表名drop idnex number; 是特殊的索引
索引的意义
1.提升查询数据的效率
2.约束数据的有效性(唯一性)
Mysql中提供了多种索引
1.主键索引:primary key
2.唯一索引:unique key
等
外键
foreign key
增加外键
alter table my_foreign add[指定外键名] foreign key (外键字段) reference 父表主键my_class(id)