mysql-数据库的基本操作

目录

 

1.数据库的基本操作

(1)创建数据库

(2)选择数据库

(3)删除数据库

(4)对数据库的修改

2.数据表的基本操作

(1)创建数据表

(2)查询数据表

(3)删除数据表

扫描二维码关注公众号,回复: 3611751 查看本文章

(4)对数据表的修改

3.数据的基本操作

(1)增加数据

(2)查询数据

(3)修改数据

(4)删除数据


1.数据库的基本操作

(1)创建数据库

create database NAME;          //这里我创建一个名字为 school的数据库

mysql> create database school;
Query OK, 1 row affected (0.35 sec)

(2)选择数据库

use NAME;         //选择数据库school

mysql> use school;
Database changed

(3)删除数据库

drop database NAME;          //删除刚刚创建的数据库 school

mysql> drop database school;
Query OK, 0 rows affected (0.39 sec)

为了方便后面的操作,我再重新创建数据库school

(4)对数据库的修改

导出所有数据,新建一个数据库,导入数据,删除旧数据。

2.数据表的基本操作

(1)创建数据表

create table NAME(

                                    value1   数据类型1,

                                    value2   数据类型2,

                                    value3   数据类型3,

                                                .

                                                .

                                                .

                                    valuen  数据类型n

                              );

mysql> create table guy(
    -> id char(3),
    -> name varchar(20),
    -> age int(2),
    -> gpa double(3,2)
    -> );
Query OK, 0 rows affected (0.61 sec)

(2)查询数据表

  1. 查询数据库中的所有表

show tables;          //查看改数据库中的所有数据表

mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| guy              |
+------------------+
1 row in set (0.00 sec)

      2. 查询数据库中某表的数据z及其性质

describe 表名;          //可简化为  desc NAME;

mysql> desc guy;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | char(3)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(2)      | YES  |     | NULL    |       |
| gpa   | double(3,2) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

(3)删除数据表

drop table 表名;

mysql> drop table guy;
Query OK, 0 rows affected (0.65 sec)

            为了方便后面的操作,我重新生成一个数据表 guy 同上

(4)对数据表的修改

1.改表名

alter table oldNAME rename to newNAME;         

此处我将数据表名字guy改为student。

mysql> alter table guy rename to student;
Query OK, 0 rows affected (0.58 sec)

mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| student          |
+------------------+
1 row in set (0.00 sec)

2.改数据名字

alter table 表名  change 旧数据名 新数据名 新数据类型;

将数据id修改为number并修改其数据类型为char(4)。

mysql> alter table student change id number char(4);
Query OK, 0 rows affected (1.15 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| number | char(4)     | YES  |     | NULL    |       |
| name   | varchar(20) | YES  |     | NULL    |       |
| age    | int(2)      | YES  |     | NULL    |       |
| gpa    | double(3,2) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

3.改数据类型

alter table 表名 modify 数据名 数据类型;

mysql> alter table student modify number char(3);
Query OK, 0 rows affected (1.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| number | char(3)     | YES  |     | NULL    |       |
| name   | varchar(20) | YES  |     | NULL    |       |
| age    | int(2)      | YES  |     | NULL    |       |
| gpa    | double(3,2) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

4.改数据位置

(1)alter table 表名 modify 数据1 数据1的数据类型 first | after 数据2;
            (将数据1的位置放到第一或者放到数据二的后面)

一.first的用法

把数据类型为 varchar(20) 的 name 放到第一个位置;

mysql> alter table student modify name varchar(20) first;
Query OK, 0 rows affected (0.87 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(20) | YES  |     | NULL    |       |
| number | char(3)     | YES  |     | NULL    |       |
| age    | int(2)      | YES  |     | NULL    |       |
| gpa    | double(3,2) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

二.after的用法

将数据类型为 char(3) 的number 放到name后面。

mysql> alter table student modify number char(3) after name;
Query OK, 0 rows affected (0.37 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(20) | YES  |     | NULL    |       |
| number | char(3)     | YES  |     | NULL    |       |
| age    | int(2)      | YES  |     | NULL    |       |
| gpa    | double(3,2) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

(2)alter table 表名 change 数据1 数据 2  数据1的数据类型 first | after 数据3;

将数据二覆盖掉数据一,再排在第一(first)的位置或者数据三的后面

这里将数据一二设成一个值就可以达到想要的效果了。

mysql> alter table student change number number char(3) after age;
Query OK, 0 rows affected (1.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(20) | YES  |     | NULL    |       |
| age    | int(2)      | YES  |     | NULL    |       |
| number | char(3)     | YES  |     | NULL    |       |
| gpa    | double(3,2) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

3.数据的基本操作

(1)增加数据

1.1次增加数据表的1个对象

insert into 表名(数据名1,数据名2,数据名3,...)values(数据1,数据2,数据3,...);          //注意values前面没有逗号

mysql> insert into student(name,age,number,gpa)values('tom',21,'101',3.45);
Query OK, 1 row affected (0.32 sec)

mysql> select *from student;
+------+------+--------+------+
| name | age  | number | gpa  |
+------+------+--------+------+
| tom  |   21 | 101    | 3.45 |
+------+------+--------+------+
1 row in set (0.00 sec)

2.1次添加多组对象

insert into 表名(数据名1,数据名2,数据名3...) values(数据1,数据2,数据3...),(数据1,数据2,数据3...)...;

//(注意多个数据之间是有逗号的啊)

mysql> insert into  student(name,age,number,gpa)values('mike',18,'102',2.59),('nancy',20,'103',3.03);
Query OK, 2 rows affected (0.36 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select *from student;
+-------+------+--------+------+
| name  | age  | number | gpa  |
+-------+------+--------+------+
| tom   |   21 | 101    | 3.45 |
| mike  |   18 | 102    | 2.59 |
| nancy |   20 | 103    | 3.03 |
+-------+------+--------+------+
3 rows in set (0.00 sec)

3. 不声明数据名插入数据

insert into 表名 values(数据1,数据2,数据3...);          //缺点,必须输入一个对象的所有数据种类;

他可以输入多个对象,也可以输入单个对象。

mysql> insert into student values('michael',19,'104',3.57);
Query OK, 1 row affected (0.40 sec)

mysql> select *from student;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| tom     |   21 | 101    | 3.45 |
| mike    |   18 | 102    | 2.59 |
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
+---------+------+--------+------+
4 rows in set (0.00 sec)

mysql> insert into student values('jerry',20,'105',2.38),('rose',19,'106',3.77);
Query OK, 2 rows affected (0.35 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select *from student;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| tom     |   21 | 101    | 3.45 |
| mike    |   18 | 102    | 2.59 |
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
| jerry   |   20 | 105    | 2.38 |
| rose    |   19 | 106    | 3.77 |
+---------+------+--------+------+
6 rows in set (0.00 sec)

(2)查询数据

1.查找表内的所有数据

select *from 表名

2.between...and...

select *from 表名  where  数据名  between ...and...;

寻找gpa是3.03到3.57之前(闭区间)

mysql> select *from student where gpa between 3.03 and 3.57;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| tom     |   21 | 101    | 3.45 |
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
+---------+------+--------+------+
3 rows in set (0.00 sec)

3.where

select *from 表名 where 范围;

mysql> select *from student where age=19;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| michael |   19 | 104    | 3.57 |
| rose    |   19 | 106    | 3.77 |
+---------+------+--------+------+
2 rows in set (0.00 sec)

4.or

select *from 表名 范围一 or 范围二;

mysql> select *from student where age=19 or age =20;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
| jerry   |   20 | 105    | 2.38 |
| rose    |   19 | 106    | 3.77 |
+---------+------+--------+------+
4 rows in set (0.00 sec)

5.and同 'or'

6.select 数据名 from 表名;

mysql> select age from student;
+------+
| age  |
+------+
|   21 |
|   18 |
|   20 |
|   19 |
|   20 |
|   19 |
+------+
6 rows in set (0.00 sec)

7.like

模糊查询,与符号'%'  '_'搭配使用   

'%':匹配任意长的字符

'_':匹配一个字符

select  *from 表名 where 数据名 like 'a%';            //某数据中以a开头的数据
           select  *from 表名 where 数据名 like 'a%b';          //某数据中以a开头b结尾的数据
           select  *from 表名 where 数据名 like '_a__';         //某数据中第二个字符为 'a'前面一个字符后面两个字符

mysql> select *from student where name like '%a%';
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
+---------+------+--------+------+
2 rows in set (0.00 sec)

8.查询表是否为空

select *from 表名 where 数据名 is null;

mysql> select *from student where name is null;
Empty set (0.00 sec)

9.查询表是否为空

select *from 表名 where 数据名 is not null;         //有输出

mysql> select *from student where name is not null;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| tom     |   21 | 101    | 3.45 |
| mike    |   18 | 102    | 2.59 |
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
| jerry   |   20 | 105    | 2.38 |
| rose    |   19 | 106    | 3.77 |
+---------+------+--------+------+
6 rows in set (0.00 sec)

10.将查询结果排序

select distinct 数据名 from 表名 order by 数据名;                      //默认升序
           select distinct 数据名 from 表名 order by 数据名 desc;             //加desc降序

mysql> select distinct number from student order by number  desc;
+--------+
| number |
+--------+
| 106    |
| 105    |
| 104    |
| 103    |
| 102    |
| 101    |
+--------+
6 rows in set (0.00 sec)

(3)修改数据

1.修改一类数据

update 数据名

set 数据名 = xxx;                                //修改数据

where 范围;                                          //查找数据位置

mysql> update student
    -> set gpa = 3.00
    -> where gpa < 3;
Query OK, 2 rows affected (0.38 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select *from student;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| tom     |   21 | 101    | 3.45 |
| mike    |   18 | 102    | 3.00 |
| nancy   |   20 | 103    | 3.03 |
| michael |   19 | 104    | 3.57 |
| jerry   |   20 | 105    | 3.00 |
| rose    |   19 | 106    | 3.77 |
+---------+------+--------+------+
6 rows in set (0.00 sec)

2.修改多个数据,将某数据全部修改

update 表名

set 数据名 = xxx;

mysql> select *from student;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| tom     |   21 | 101    | 4.00 |
| mike    |   18 | 102    | 4.00 |
| nancy   |   20 | 103    | 4.00 |
| michael |   19 | 104    | 4.00 |
| jerry   |   20 | 105    | 4.00 |
| rose    |   19 | 106    | 4.00 |
+---------+------+--------+------+
6 rows in set (0.00 sec)

(4)删除数据

delete from 表名 where 范围;

mysql> delete from student where age = 21;
Query OK, 1 row affected (0.40 sec)

mysql> select *from student;
+---------+------+--------+------+
| name    | age  | number | gpa  |
+---------+------+--------+------+
| mike    |   18 | 102    | 4.00 |
| nancy   |   20 | 103    | 4.00 |
| michael |   19 | 104    | 4.00 |
| jerry   |   20 | 105    | 4.00 |
| rose    |   19 | 106    | 4.00 |
+---------+------+--------+------+
5 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/labuladuo12138/article/details/83046174