Sql mysql操作语句

版权声明:看,这是一只有梦想的程序猿 - by Pendant。 https://blog.csdn.net/benpaodelulu_guajian/article/details/79142076

mysql5.7 更改root密码:

在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string

切换到mysql数据库,更新 user 表:

update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';

这样密码就更新成了root   记得重启mysql服务

2018年10月17日

mysql  limit 偏移量,每页条数

偏移量 = (当前页数-1)* 每页条数     //页数从1开始

2018年6月20日

A表和B表,A表的id被绑定在B表中的aid字段,现在想查询A表中 没有被绑定到B表里的数据(简单的说B表里缺少的A表中的值)。

select A.* from A left join B on A.id = B.aid where b.aid is null;

2018-5-11

本地blog数据库赋予限并且新建管理员pendant:

grant all privileges on blog.* to 'pendant'@'localhost' identified by '123123' with grant option;

允许任意ip使用管理员pendant连接数据库,此时pendant等同于root

grant all privileges on *.* to 'pendant'@'%' identified by 'passwd' with grant option;

命令行导入数据表sql:

1.进入数据库安装目录下的bin文件夹然后把要导入的test.sql文件放进去 ;

2.cmd命令行进入同样的文件夹输入:mysql -u root -p --default-character-set=utf8 数据库名<test.sql

命令行导出数据库sql:

1.进入cmd 进入mysql安装的bin文件夹 ;

2.mysqldump  -u root -p 数据库名>导出文件名.sql

(2018-2-24)

测试数据库是Mysql,在Navicat 里面直接操作数据。

测试表:a,b

垃圾编辑器,插入代码,选择sql,写了两个小时,最后发表的时候发现只有前面一小半的内容,insert以后的都没有,草稿箱的内容也没了,还要重写。

初级:


# 基本查询 select

select * from a;

# select distinct 返回唯一不同的值


select distinct area,id from b   #返回area唯一的值,取值取第一次出现的

# where 子句 用于过滤记录


select * from b where id < 50

# AND 或 OR 运算符用于基于一个以上的条件对记录进行过滤

select * from b where id<50 or id>15000  #第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录

select * from b where id>50 and gid =5  #第一个条件和第二个条件都成立,则 AND 运算符显示一条记录
 

# order by 用于对结果集进行排序


select * from b where id<65 order by id desc # 根据 id 对查询结果集进行倒序排序(由大到小)

# insert into 用于向表中插入新记录


insert into a values(null,'4','pandent',100,unix_timestamp(now()),1)  #第一种写法,如果不指定列,则需要把每一列的值都写上,按列的顺序,这里的顺序是指设计表的时候,栏目(列)的顺序,不是打开表看到的栏目(列)顺序,打开表看到的栏目顺序是可以更改的,更改之后,插入还是按设计表的时候的栏目(列)顺序
 
这是打开表看到的列的顺序,grade在后。

这是设计表时栏目的添加顺序,第一种写法,应该根据这个顺序来插入值。grade在signuptime之前。

insert into a(game_id,point,signuptime,nickname) values('4',100,unix_timestamp(now()),'pandent') #第二种写法,指定列,按先后顺序增加对应的值

# update  更新表中已存在的数据记录

update  a  set  nickname = 'pandent' where id = 23313   # 如果不加where 则整张表更新,即所有的nickname都变为pandent

#delete  删除表中的记录

delete from a where id> 23313 # 如果省略了where 条件,则整张表会被清空

# select ...limit.... 规定要返回的数据条数

select id from a limit 2 # 返回前两条数据,limit 放在最后 where,order by 都在limit前面

#操作符

#like 操作符 用于在where字句中搜索列中的指定模式

select * from a where nickname like 'pande%'  #  like 一般搭配通配符 查询nickname 前几位是pande的信息

#通配符

1. % 替代0个或多个字符

2. _ 替代1个字符

3. [charlist] 匹配charlist字符列中任何一个字符 比如[abcd] 匹配 abcd中的任何一个

select id from a where nickname like 'pand%' #查询nickname 前面是pand开头的信息id

select * from a where nickname like 'a_d%' #查询 nickname 中第一个字符是a,第三个字符是b的的信息id

# in 用于在where 子句中规定多个值

select nickname from a where id in (8503,23313,8512)

# between 用于选取介于两个值之间的数据范围内的值,包含边界,可以是文本,数值,日期

select id from a where id between 8503 and 8600

#join 连接 用于把两个或多个表的行结合起来

1. inner join

select a.nickname,b.area from a inner join b on a.id=b.wechat_id  where a.id =23313

# inner join 是两表取交集,即查询出来的结果集中两个表同时都包含该条数据的信息,最终才会显示结果集。a表有pandent的信息,但是b表没有pandent的信息 因为最终结果是空

2. left join

select a.nickname,b.area from a left join b on a.id=b.wechat_id  where a.id =23313

# left join 是左表取全集,即查询出来的结果集中左表包含该条数据的信息,即可显示。左表有就有,左表没有就没有。a表有pandent的信息,但是b表没有pandent的信息 ,结果还是显示出来了pandent,只不过area显示的是空。

3. right join

select a.nickname,b.area from a right join b on a.id=b.wechat_id  where b.id =15071

# right join 是右表取全集,即查询出来的结果集中右表包含该条数据的信息,即可显示。右表有就有,右表没有就没有。b表包含id=15071的信息,结果显示出来了area,只不过nickname显示的是空。
 

# union 合并两个或多个select语句结果

1.UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

2.默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

3.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

select area from b where id<=55 union all select area from b where id BETWEEN 56 and 66 UNION ALL select area from b where id in (67,68,69)

#结果为 1-69所有的area信息,包含重复。

# insert into NewTableName  select * from OldTableName  从一个表复制数据,然后把数据插入到一个已存在的表中。旧表中任何已存在的行都不会受影响。

insert into d select id,area from b  # 注意 这里从b表查询出来两个字段的消息,那么d表应该有两个字段,不多不少,但是字段名称可以不一样,如果从b表查询出来三个字段,那么d表必须有三个字段。

# create table TableName  select * from NewTable  新建一个表并复制所查询的数据到新表

create table f select id,area from b  # 从b表中查询了多少个字段,那么新表f中就有多少个字段,但是新表f不包含主键等设置,该命令常用语表的备份
 

 

猜你喜欢

转载自blog.csdn.net/benpaodelulu_guajian/article/details/79142076