MYSQL常用操作命令

一、安装Mysql

    在WSL上安装Mysql,sudo apt install mysql-server

Mysql安装成功之后,默认的root用户密码为空,(注意:MYSQL 8.0以上的版本修改root密码的方式有所改变),可以使用命令来创建root用户的密码:
1.启动Mysql服务器

sudo service mysql start

2.选择数据库

use mysql

3.修改root用户的密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Aa663366***';

4.刷新权限

flush privileges

5.重启数据库

sudo service mysql restart

6.此时即可使用root用户的密码进入数据库

mysql -uroot -p

二、Mysql常用操作

1.查询Mysql是否已经启动

ps -ef |grep mysql

2.选择某个数据库

use mysql;
create database testdb charset "utf8"; #创建一个叫testdb的数据库,且让其支持中文 

3.显示所有表

show tables;

4.查看表结构

desc user;

5.显示表构建语句

show create table user;

6.新建表

create table user(
id int auto_increment not null primary key ,
username char(32),
password char(32));

7.主键
主键分为单主键与多字联合主键,主键特点如下:
主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。

8.外键
1.要在表里设置外键关联
2.从表的外键列的类型和主表的关联列的类型要求一致或兼容
3.主表的关联列必须是一个key(一般是主键或唯一键)
4.插入数据时,必须先插入主表,再插入从表;
删除数据时,先删除从表,再删除主表;
——摘自 https://www.cnblogs.com/lthIU/p/8258225.html

create table `user_class`(  
`id` int auto_increment primary key, 
`user_id` int ,
`grade` char(23),
key `fk_key` (`user_id`),
constraint `fk_key` foreign key (`user_id`) references `user` (`id`) );

9.新增表数据

insert into user (username,password) values('a','a123'),('b','b123'),('c','c123'),('d','d123');

10.删除表数据

delete from user where id=1;

11.修改表数据

修改数据内容:update user set username="aaa" where id=2;
删除列:alter table user drop username;
新增列:alter table user add username char(64);
修改列属性: alter table user modify username int;
修改列名称属性:alter table user change username uuu int(10);

12.查询表数据
语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]

offset:偏移量,跟在limit后面,表明当前搜索到的数据向下偏移1位(即选择下一行的数据)

select * from user limit 1 offset 1;

13.关系(join)
join按关系分为三类:
1.left join 获取左表所有记录,即使右表没有对应匹配的记录。
2.right join 获取右表所有记录,即使右表没有对应匹配的记录。
3.inner join 获取两个表中字段匹配关系的记录。

select * from A inner join B on A.a=B.b;
select * from A left join B on A.a=B.b;
select * from A right join B on A.a=B.b;
#full join
select * from A right join B on A.a=B.b union select * from A left join B on A.a=B.b;

14.GROUP BY

select a,count(a) from A group by a;
#with rollup ,筛选结果最后加入一个汇总行
select a,count(a) from A group by a with rollup;
#使用 coalesce 来设置一个可以取代 NUll 的名称
select coalesce(a,"count num"),count(a) as countcount from A group by a with rollup;
+-------------------------+------------+
| coalesce(a,"count num") | countcount |
+-------------------------+------------+
| aaa                     |          1 |
| b                       |          1 |
| c                       |          1 |
| d                       |          1 |
| count num               |          4 |
+-------------------------+------------+

15.排序(ASC、DESC)
SELECT field1, field2,…fieldN table_name1, table_name2…
ORDER BY field1, [field2…] [ASC [DESC]]
使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

select * from A where a like binary "%a" order by id desc;
select * from A  order by id desc;

16.事务
mysql> begin; #开始一个事务

mysql> insert into a (a) values(555);

mysql>rollback; 回滚 , 这样数据是不会写入的
mysql>commit; 提交

17.排名
select id,num,@rank:=@rank+1 paixu from test_score t1 join (select @rank:=0) t2 order by num desc;

18.索引
索引也是一张表,索引增快了查询速度,但是会降低更新表的速度(要更新数据还要保存索引文件)
一个表里的主键默认就是索引

#显示表中的索引字段
show index from user;
#创建索引
create index index_name_lala on user (uuu(length));
#删除索引
drop index index_name_lala on user;

创建表的时候直接指定索引

create table mytable(
id int not null,
username char(32) not null,
index in_uname (username(32))
 );

唯一索引:与普通索引类似
特点:
1.索引值必须唯一,但是允许有空值
2.组合索引,则列值的组合必须唯一

#创建唯一索引
create unique index index_name_lala on mytable (username(32));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值