SQL基础
1.创建用户,用户访问数据库(防火墙需要关闭)
grant all privileges on *.* to 'root' @'%' identified by “123456” with grant option
2.权限生效:flush privileges;
3.create database 数据库名称; ------创建数据库
4.create table 表名(字段名1 数据类型 comment“注释”,字段名2 数据类型,......)comment“注释”;--------创建表结构
5.常见的数据类型
int (n)-----可以设置最大范围,char(n),varchar(n),date,time,datetime,flaot(m,d),double(m,d),decimal(m,d)------m代表总位数,d代表小数--------decimal 用于字符串来存储,精度高
6.主键:主键值不能重复,因此主键可以唯一标识一行数据
一个表只能有一个主键
主键可以自动设置为 NOT NULL(非空)
主键是非必需的,也就是说,一个表可以不声明主键字段
语法:字段名 数据类型 primary key atuo_increment comment “备注”
注释:单行:-- 空格
多行:/* */
sql 增删改查
1.插入一条数据,对所有字段赋值
insert into 表名 values(值1,值2.....值n)
例如:insert into member(“1”,“赵二”,“10001”)
2.插入一条数据,对部分字段赋值(如果字段和sql中关键字段冲突,可以加上反引号)
insert into 表名 (字段1,字段2) values(值1,值2);
3.插入多条记录,对部分字段赋值、对所有字段赋值
insert into 表名 (字段1,字段2) values(值1,值2),
(值1,值2)
,(值1,值2);
insert into member(“1”,“赵二”,“10001”),
(“2”,“赵三”,“10002”)
4.修改表中的数据
update 表名 set 字段名1=新值1,字段名2=新值2,.....where 条件表达式
5.删除数据库
drop database 数据库名;
6.删除表
drop table 表名;
7.删除数据
删除所有记录: delete from 表名;
删除符合条件的记录:delete from 表名 where 条件表达式
8.清空表
delete from 表名;:不会影响自增长的字段值
truncate table 表名:会影响自增长的字段值
9.查询
单表查询
查询单个表的所有字段:select * from member; -------*代表所有字段
查询单个表的部分字段:select 字段名1,字段名2.....from member;
查询部分数据:select * from member where 条件表达式;
多表查询 :表与表存在关系,存在联系
select *from 表1,表2---------结果为笛卡尔积
select * from 表1,表2 where 表1.字段名1=表2.字段名2;
10.as 关键字
表名 as 别名-------as 可以去掉,以空格代替
字段名 as 别名-------支持中文
查询id 为1 或者为2,或者3 的用户
select * from where id=1 or id =2 or id=3;、
select * from where id in(1,2,3)
13.not in 不在....里面
select * from member where id not in(1,2,3)
14.like 模糊查询
%:表示可以是任意字符,也可以是空字符串
完全匹配: select * from member where regname like '小'
部分匹配:select * from member where regname like '小%'----以小字开头的
部分匹配:select * from member where regname like '%小'----以小字结尾的
部分匹配:select * from member where regname like '%小'%----包含小字的
15.count 用法----纵向统计
select count(*) from member-----统计有多少行数
select count(1) from member ---------每行第一个字段都为1 ,并计数
select conut (memberid)from member
16.distinct 去重
单个字段去重-----select distinct(MemberID) from invest--------查询所有投资的id
多个字段去重------select distinct(A,B ,C) from invest------A,B,C三个字段完全相等时,表示重复
17.between ....and的用法-----小值在前,大值在后
查询余额在100,200之间的用户信息
select * from member where leaveamount between 100 and 300;
18.group by ---------通过....来分组 avg-----统计平均值函数,max------最大投资额,min----------最小投资额,sum-----总投资额,count-------投资次数
统计投资用户平均投资金额
select memberid,avg(amount) from invest group by memberid
group by 字段1 字段2 字段3--------三个字段完全相同才为一组
19.mysql 分页----------降低对服务器的压力
-----一页10条,返回第一页------limit m,n :m表示索引,n 表示多少条记录
select * from member limit 0,10
select * from member limit m offset n;------偏移量
select * from member limit 10;-----top语法,取最前面的10条
查询出可用余额最多的前10个用户
select * from member order by leaveamount desc limit 10
20.子查询
select * from member where id=(select max(id) from member);
21.sql常用函数
获取系统当前日期时间:sysdate()
获取系统当前日期:curdate()
获取系统当前时间:curtime()
获取给定日期的年份:year(date)
获取给日期的月份:month(date)
为给定日期增加一个时间间隔的函数:DATE_ADD(date,INTERVAL expr unit)------select DATE_ADD(SYSDATE(),INTERVAL 1 DAY)
字符串拼接函数:concat(字段1,字段2)
字符串截取函数:SUBSTR(字段1,截取开始的位置position,截取字符个数)
字符串的长度:length(字符串)