sql语句以及Mysql数据库知识

增删改查基础命令

乌班图安装默认版本的mysql的数据库
# 查看是否安装mysql
dpkg -l | grep mysql
# 安装mysql
apt install mysql-server
# 网络端口查询命令查询mysql是否安装并启动成功
netstat -tap | grep mysql
# 登录数据库
mysql -u root -p
# 第一次登录密码默认都为空
# 设置数据库初始化信息(密码等)
mysql_secure_installation
# 查看数据库状态(打开或者关闭)
systemctl status mysql
# 设置数据库可以被远程连接
参照以下两篇博客
https://www.cnblogs.com/opsprobe/p/9126864.html
https://blog.youkuaiyun.com/zhanaolu4821/article/details/93622812


进入某数据库
mysql -D database -u root -p

创建数据表
create table newtable


查询数据库
select name,age from students

±-------±----+
| name | age |
±-------±----+
| 王刚 | 20 |
±-------±----+
1 row in set (0.30 sec)

select * from students
±—±-------±----±----±---------+
| id | name | sex | age | tel |
±—±-------±----±----±---------+
| 1 | 王刚 || 20 | 12345678 |
±—±-------±----±----±---------+
1 row in set (0.00 sec)

条件查询
select 字段 from 表名 where 条件;

查询年龄大于20,并且小于30的信息(下述三种都可以,结果一样)
SELECT * FROM student WHERE age >= 20 && age <=30;
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;

查询年龄22岁,18岁 ,25岁的信息(下述两种方法结果相同)
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25) ;

查询数学成绩在20到80之间的学生
select * from student where math between 20 and 80;

查询地址属于杭州或香港的学生
select * from student where address in ('杭州','香港');

like运算符模糊查询
_:单个任意字符
%:多个任意字符
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT*FROM student WHERE NAME LIKE '_化%';
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查询姓名中包含马的人
SELECT * FROM student WHERE NAME LIKE '%马%';


查询英语成绩为NULL的信息
SELECT * FROM student WHERE english IS NULL; 



插入数据
insert into students values(NULL,“王刚”,“男”,20,“12345678”)

±—±-------±----±----±---------+
| id | name | sex | age | tel |
±—±-------±----±----±---------+
| 1 | 王刚 || 20 | 12345678 |
±—±-------±----±----±---------+
1 row in set (0.00 sec)


插入数据
insert into students values(NULL,“钟无艳”,“女”,100,“987654321”)
select * from students
±—±----------±----±----±----------+
| id | name | sex | age | tel |
±—±----------±----±----±----------+
| 1 | 王刚 || 20 | 12345678 |
| 2 | 钟无艳 || 100 | 987654321 |
±—±----------±----±----±----------+
2 rows in set (0.00 sec)


删除数据库的行
 delete from students where id=1
 select * from students
±—±----------±----±----±-----+
| id | name | sex | age | tel |
±—±----------±----±----±-----+
| 2 | 钟无艳 || 100 | 123 |
±—±----------±----±----±-----+
1 row in set (0.00 sec)


修改数据库
mysql> update students set id = 1 where id = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0

mysql> select * from students;
±—±----------±----±----±-----+
| id | name | sex | age | tel |
±—±----------±----±----±-----+
| 2 | 钟无艳 || 100 | 123 |
±—±----------±----±----±-----+
1 row in set (0.00 sec)

mysql> update students set id = 1 where id = 2;
Query OK, 1 row affected (0.40 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from students;
±—±----------±----±----±-----+
| id | name | sex | age | tel |
±—±----------±----±----±-----+
| 1 | 钟无艳 || 100 | 123 |
±—±----------±----±----±-----+
1 row in set (0.00 sec)

拓展常用命令

举例前提:

CREATE TABLE `a_table` (
  `a_id` int(11) DEFAULT NULL,
  `a_name` varchar(10) DEFAULT NULL,
  `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8


CREATE TABLE `b_table` (
  `b_id` int(11) DEFAULT NULL,
  `b_name` varchar(10) DEFAULT NULL,
  `b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

在这里插入图片描述

内连接

组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
在这里插入图片描述

关键字:inner join on
语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;

执行结果:
在这里插入图片描述

左连接(左外连接)

关键字:left join on / left outer join on
语句:select * from a_table a left join b_table b on a.a_id = b.b_id;
执行结果:
在这里插入图片描述

说明:
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。
左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
在这里插入图片描述

右连接(右外连接)

关键字:right join on / right outer join on
语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;
执行结果:
在这里插入图片描述

说明:
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
**加粗样式
**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值