增删改查基础命令
乌班图安装默认版本的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。
**
**