sql 语句

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 别名-------支持中文

11.排序---降序:DESC -------升序:ASC(默认是升序)

order by 字段名

12.in 用法

查询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(字符串)

 

posted @ 2020-09-26 22:18  228331zf  阅读(147)  评论(0编辑  收藏  举报