MySQL学习笔记(1)---基础语句

Mysql学习笔记之常用基础语句

  1. 查看帮助:
help create;
  1. 创建、删除、查看数据库
create database test_data;
show databases like "test%";
drop database test_data;
  1. 连接数据库
use test;
select databases();#查看数据库,相当于pwd
select user();#查看当前连接数据库的用户,相当于whoami
  1. 创建用户、授权、收回权限
grant all on test_gbk.* to 'testuser'@'localhost' identified by '123456';#赋予testuser所有权限,密码
flush privileges; #刷新权限
show grants for 'testuser'@'localhost';
revoke insert,update,select,delete on test_gbk.* from 'testuser'@'localhost';#收回权限
create user test identified by 'BaC321@#';#创建用户
update mysql.user set authentication_string=password('A1b2c3#!@') where user='test'; #修改密码
  1. 创建、删除表
 create table test(id int(4)not null,name char(20)not null);
 show tables;#查看表
 desc test; #查看表结构
drop tables test;#删除表
show create table test1\G 
  1. 增删改查
insert into T1 values('zhang','man');
 select * from T1 where name like '%an%';
  select count(*) as toaolcount from T1;
  alter table T1 add age int(4) not null;
  alter table T1 drop age;
  update T1 set age=25 where name='zhang';
  delete from T1 where age='22';
  alter table T1 add primary key(name);
  1. 查询
  • 基本查询
  • 投影查询
  • 排序
  • 分页
SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 5 OFFSET 0;
  • 聚合查询
    求总数、合计值、平均值、最大值和最小值;
  • 多表查询
    多个表的笛卡尔积
  • 连接查询
  1. 实用sql语句
  • 插入或替换
    插入一条已存在的数据,用replace,若id已存在,则删除记录,这样就无需再查询
REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);
  • 插入或更新
    如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录,此时,可以使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...语句:
 INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;
  • 插入或忽略
    如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就啥事也不干直接忽略,此时,可以使用INSERT IGNORE INTO ...语句:
INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);
  • 快照
    对class_id=1的记录进行快照,并存储为新表students_of_class1:
CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;
  • 写入查询结果集
    结合INSERTSELECT
    如果查询结果集需要写入到表中,可以结合INSERTSELECT,将SELECT语句的结果集直接插入到指定表中。
    例如:
INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;
  • 强制使用指定索引
    查询时数据库会分析查询语句,选择一个合适的索引,但有时数据库的查询优化器不一定能使用最优索引。如果我们知道如何选择索引,可以使用FORCE INDEX强制查询使用指定的索引。例如:
SELECT * FROM students FORCE INDEX (idx_class_id) WHERE class_id = 1 ORDER BY id DESC;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值