MySQL基础命令
文章目录
- 1.DML操作
- 1.3update语句
- 2.DCL操作
- 3.实战案例
- 3.1.搭建mysql服务
- 3.2创建一个以你名字为名的数据库,并创建一张表student
- 3.3查看下该新建的表有无内容(用select语句)
- 3.4往新建的student表中插入数据(用insert语句)
- 3.5修改lisi的年龄为50
- 3.6以age字段降序排序
- 3.7查询student表中年龄最小的3位同学跳过前2位
- 3.8查询student表中年龄最大的4位同学
- 3.9查询student表中名字叫zhangshan的记录
- 3.10.查询student表中名字叫zhangshan且年龄大于20岁的记录
- 3.11.查询student表中年龄在23到30之间的记录
- 3.12修改wangwu的年龄为100
- 3.13.删除student中名字叫zhangshan且年龄小于等于20的记录
1.DML操作
DML操作包括增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT),均属针对表的操作。
1.1insert语句
mysql> insert hwf(id,name,age) values(1,'zhanglang',5),(2,'yongshao',6),(3,'nigger',6),(4,'jilao',8),(5,'jiaopi',7);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
1.2select语句
字段column表示法
表示符 | 代表什么 |
---|---|
* | 所有字段 |
as | 字段别名,如col1 AS alias1当表名很长时用别名代替 |
条件判断语句where
操作类型 | 常用操作符 |
---|---|
操作符 | >,<,>=,<=,=,!= BETWEEN column# AND column# LIKE:模糊匹配 RLIKE:基于正则表达式进行模式匹配IS NOT NULL:非空IS NULL:空 |
条件逻辑操作 | AND OR NOT |
//查询所有字段
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
//查询名字
mysql> select name from hwf;
+-----------+
| name |
+-----------+
| zhanglang |
| yongshao |
| nigger |
| jilao |
| jiaopi |
+-----------+
5 rows in set (0.00 sec)
//以id升序排列(一般都是以升序排列的)
mysql> select * from hwf order by id;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
//以id降序排序
mysql> select * from hwf order by id desc;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 5 | jiaopi | 7 |
| 4 | jilao | 8 |
| 3 | nigger | 6 |
| 2 | yongshao | 6 |
| 1 | zhanglang | 5 |
+----+-----------+------+
5 rows in set (0.00 sec)
//升序排序取前两个
mysql> select * from hwf order by id limit 2;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
+----+-----------+------+
2 rows in set (0.00 sec)
//以升序排序跳过第一个取下面两个
mysql> select * from hwf order by id limit 1,2;
+----+----------+------+
| id | name | age |
+----+----------+------+
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
+----+----------+------+
2 rows in set (0.00 sec)
//查询年龄大于,小于,大于等于,小于等于
mysql> select * from hwf where age > 4;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
mysql> select * from hwf where age >=5;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
mysql> select * from hwf where age < 6;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
+----+-----------+------+
mysql> select * from hwf where age <= 6;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
+----+-----------+------+
3 rows in set (0.00 sec)
//查找年龄等于5和名字为zhanglang
mysql> select * from hwf where age =5 and name = 'zhanglang';
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
+----+-----------+------+
1 row in set (0.00 sec)
//查询年龄在5和7之前
mysql> select * from hwf where age between 5 and 7;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 5 | jiaopi | 7 |
+----+-----------+------+
4 rows in set (0.00 sec)
//查找年龄不为空的内容
mysql> select * from hwf where age is not null;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
//查找年龄为空的内容
mysql> select * from hwf where age is null;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 6 | heipi | NULL |
+----+-------+------+
1 row in set (0.00 sec)
1.3update语句
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
| 6 | heipi | NULL |
+----+-----------+------+
6 rows in set (0.00 sec)
mysql> update hwf set age = 20 where name = 'heipi';
Query OK, 1 row affected (0.00 sec) //将heipi年龄修改为20
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
| 6 | heipi | 20 |
+----+-----------+------+
6 rows in set (0.00 sec)
1.4delete语句
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
| 6 | heipi | 20 |
+----+-----------+------+
6 rows in set (0.00 sec)
mysql> delete from hwf where id = 6; //将id等于6的字段删除
Query OK, 1 row affected (0.00 sec)
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
//删除整张表的内容
mysql> delete from hwf;
Query OK, 5 rows affected (0.01 sec)
mysql> select * from hwf;
Empty set (0.00 sec)
mysql> desc hwf;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
1.5truncate语句
truncate与delete的区别:
语句类型 | 特点 |
---|---|
delete | DELETE删除表内容时仅删除内容,但会保留表结构DELETE 语句每次删除一行,并在事务日志中为所删除的 每行记录一项可以通过回滚事务日志恢 复数据非常占用空间 |
truncate | 删除表中所有数据,且无法恢复表结构、约束和索引等保持不变, 新添加的行计数值重置为初始值执行速度比DELETE快, 且使用的系统和事务日志资源少通过释放存储表数据所用的数据页来删除数据, 并且只在事务日志中记录页的释放对于有外键约束引用的表, 不能使用TRUNCATE TABLE删除数据不能用于加入了索引视图的表 |
mysql> select * from hwf;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | zhanglang | 5 |
| 2 | yongshao | 6 |
| 3 | nigger | 6 |
| 4 | jilao | 8 |
| 5 | jiaopi | 7 |
+----+-----------+------+
5 rows in set (0.00 sec)
mysql> truncate hwf;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from hwf;
Empty set (0.00 sec)
mysql> desc hwf;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2.DCL操作
2.1创建授权grant
权限类型(priv_type)
权限类型 | 代表什么? |
---|---|
ALL | 所有权限 |
SELECT | 读取内容的权限 |
INSERT | 插入内容的权限 |
UPDATE | 更新内容的权限 |
DELETE | 删除内容的权限 |
指定要操作的对象db_name.table_name
表示方式 | 意义 |
---|---|
. | 所有库的所有表 |
db_name | 指定库的所有表 |
db_name.table_name | 指定库的指定表 |
mysql> grant all on *.* to 'joy'@'192.168.159.101' identified by '123456'; //授权joy用户在192.168.159.101上远程登陆访问所有数据库所有表权限
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all on *.* to 'tom'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec) //授予tom用户可以在任何位置远程登陆访问所有数据库和表
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0OBpsf7E-1658823763966)(http://re6nm1tjj.bkt.clouddn.com/3.png)]
2.2查看授权
mysql> show grants; //查看当前用户的权限信息
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> show grants for 'joy'@'192.168.159.101'; //查看joy的权限
+--------------------------------------------------------+
| Grants for joy@192.168.159.101 |
+--------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'joy'@'192.168.159.101' |
+--------------------------------------------------------+
1 row in set (0.00 sec)
2.3取消授权revoke
mysql> revoke all on *.* from 'joy'@'192.168.159.101'
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
3.实战案例
3.1.搭建mysql服务
1、wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
2、rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
3、yum module disable mysql //禁用mysql
4、yum -y install mysql-community-server mysql-community-client mysql-community-common mysql-community-devel --nogpgcheck
3.2创建一个以你名字为名的数据库,并创建一张表student
mysql> create database huangweifeng;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| huangweifeng |
| mysql |
| performance_schema |
| runtime |
| sys |
+--------------------+
6 rows in set (0.00 sec)
mysql> use huangweifeng;
Database changed
mysql> create table student(id int(11) not null primary key auto_increment ,name varchar(100),age tinyint(4));
Query OK, 0 rows affected (0.11 sec)
mysql> show tables;
+------------------------+
| Tables_in_huangweifeng |
+------------------------+
| student |
+------------------------+
1 row in set (0.00 sec)
mysql> desc student;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
3.3查看下该新建的表有无内容(用select语句)
3.4往新建的student表中插入数据(用insert语句)
mysql> insert student (name,age) values('tom',20),('jerry',23),('wangqing',25),('sean',28),('zhang)shan',26),('zhangshan',20),('lisi',null),('chenshuo',10),('wangwu',3),('qiuyi',15),('qiuxiaotian',20);
Query OK, 7 rows affected (0.01 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 6 | zhangshan | 20 |
| 7 | lisi | NULL |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
+----+-------------+------+
11 rows in set (0.01 sec)
3.5修改lisi的年龄为50
mysql> update student set age = 50 where name = 'lisi';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 6 | zhangshan | 20 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
+----+-------------+------+
11 rows in set (0.00 sec)
3.6以age字段降序排序
mysql> select * from student order by age desc;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 7 | lisi | 50 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 3 | wangqing | 25 |
| 2 | jerry | 23 |
| 1 | tom | 20 |
| 6 | zhangshan | 20 |
| 11 | qiuxiaotian | 20 |
| 10 | qiuyi | 15 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
+----+-------------+------+
11 rows in set (0.00 sec)
3.7查询student表中年龄最小的3位同学跳过前2位
mysql> select * from student order by age limit 2,3;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 10 | qiuyi | 15 |
| 1 | tom | 20 |
| 11 | qiuxiaotian | 20 |
+----+-------------+------+
3 rows in set (0.00 sec)
3.8查询student表中年龄最大的4位同学
mysql> select * from student order by age desc limit 4;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 7 | lisi | 50 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 3 | wangqing | 25 |
+----+-----------+------+
4 rows in set (0.00 sec)
3.9查询student表中名字叫zhangshan的记录
mysql> select * from student where name = 'zhangshan';
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 5 | zhangshan | 26 |
| 6 | zhangshan | 20 |
+----+-----------+------+
2 rows in set (0.00 sec)
3.10.查询student表中名字叫zhangshan且年龄大于20岁的记录
mysql> select * from student where name = 'zhangshan' and age > 20;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 5 | zhangshan | 26 |
+----+-----------+------+
1 row in set (0.00 sec)
3.11.查询student表中年龄在23到30之间的记录
mysql> select * from student where age between 23 and 30;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
+----+-----------+------+
4 rows in set (0.00 sec)
3.12修改wangwu的年龄为100
mysql> update student set age = 100 where name = 'wangwu';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 6 | zhangshan | 20 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 100 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
+----+-------------+------+
11 rows in set (0.00 sec)
3.13.删除student中名字叫zhangshan且年龄小于等于20的记录
mysql> delete from student where age <= 20 and name = 'zhangshan';
Query OK, 1 row affected (0.00 sec)
mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 100 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
+----+-------------+------+
10 rows in set (0.01 sec)
han且年龄小于等于20的记录
```bash
mysql> delete from student where age <= 20 and name = 'zhangshan';
Query OK, 1 row affected (0.00 sec)
mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 100 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
+----+-------------+------+
10 rows in set (0.01 sec)