Linux系统-MySQL数据库(中)

一、对数据库的基本操作

1、创建数据库

         语法:create database [if not exists]  数据库名 [default charset 字符编码];

        ①、创建数据库。

               语法: create database 数据库名;

               例如:

mysql> create database db01;                    # 创建一个名为 db01 的数据库
Query OK, 1 row affected (0.00 sec)

mysql> 

          ②、创建数据库,若数据库不存在则创建, 存在则不创建。

                  语法:create database if not exists 数据库名;

mysql> create database if not exists db02;    # 当 db02 数据库不存在时创建
Query OK, 1 row affected (0.00 sec)

mysql> 

          ③、创建数据库,若数据库不存在则创建, 存在则不创建, 并指定数据库编码。

                  语法:create database if not exists 数据库名 default charset 字符编码;

mysql> create database if not exists db03 default charset utf8;  # 创建数据库 db03,编码为utf8
Query OK, 1 row affected (0.00 sec)

mysql> 

2、查看当前系统中存在哪些数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db01               |
| db02               |
| db03               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.03 sec)

mysql> 

3、查看 数据库的建库语句

语法: show create database 数据库名;

mysql> show create database db03;         # 通过查看建库语句 发现 db03 库字符编码 utf8 
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| db03     | CREATE DATABASE `db03` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create database db01;         # db01 库字符编码  latin1 
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| db01     | CREATE DATABASE `db01` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

4、使用数据库,并查看当前使用的是哪个数据库

使用数据库的语法格式:use 数据库;

查看当前数据库名格式:select database();

mysql> use db01;                  # 使用 db01 库
Database changed
mysql> select database();         # 查看当前所使用的库
+------------+
| database() |
+------------+
| db01       |
+------------+
1 row in set (0.00 sec)

mysql> use db02;                  # 使用 db02 库
Database changed
mysql> select database();         # 查看当前所使用的库
+------------+
| database() |
+------------+
| db02       |
+------------+
1 row in set (0.00 sec)

mysql> 

5、删除数据库

语法:drop database 数据库名;

mysql> drop database db03;                 # 删除 db03 库
Query OK, 0 rows affected (0.35 sec)

补充说明:

①、mysql 数据库默认数据存储的路径为 /var/lib/mysql

②、创建的数据库默认都存在:/var/lib/mysql/数据库名


二、对表的基本操作

1、创建表 

        语法: create table [if not exists] [数据库名.]表名(字段名 字段类型 [约束条件]..)

                    [engine=InnoDB default charset=utf8];

    

mysql> create table db01.stu( id int primary key, name varchar(20), age int not null)engine=InnoDB default charset=utf8;
Query OK, 0 rows affected (0.38 sec)

mysql> exit;

2、查看建表语句

语法: show create table [数据库名.]表名;

mysql> show create table db01.stu;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                         |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stu   | CREATE TABLE `stu` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> 

3、查看当前数据库下有哪些表

语法: show tables;


4、向表中插入数据

语法:

插入所有字段:insert into [数据库名.]表名 values(值1,值2.....);

插入某几个字段:insert into [数据库名.]表名(字段名1,字段名2....) values(值1,值2.....); 

mysql> desc db01.stu;                                    # 查看表结构
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into db01.stu values(1,'张三',18);         # 插入所有字段
Query OK, 1 row affected (0.01 sec)

mysql> insert into db01.stu values(2,'李四',20);
Query OK, 1 row affected (0.00 sec)

mysql> insert into db01.stu(id,age) values(3,30);        # 插入某些字段
Query OK, 1 row affected (0.00 sec)

mysql> 

5、查看表中的数据

语法:

查看所有字段: select * from [数据库名.]表名

查看某些字段: select 字段名1,字段名2,.... from [数据库名.]表名

mysql> select * from db01.stu;            # 查看 所有字段
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | 张三   |  18 |
|  2 | 李四   |  20 |
|  3 | NULL   |  30 |
+----+--------+-----+
3 rows in set (0.00 sec)

mysql> select id,name from db01.stu;      # 查看 某些字段      
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | NULL   |
+----+--------+
3 rows in set (0.00 sec)

mysql> 

6、删除表中的数据

语法:

清空表中数据:delete from [数据库名.]表名

删除表中某些数据:delete from [数据库名.]表名 where 条件...

mysql> select * from db01.stu;             # 1. 查看当前表中的记录
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | 张三   |  18 |
|  2 | 李四   |  20 |
|  3 | NULL   |  30 |
+----+--------+-----+
3 rows in set (0.00 sec)

mysql> delete from db01.stu where id=3;    # 2. 删除 id=3 的记录
Query OK, 1 row affected (0.00 sec)

mysql> select * from db01.stu;             # 3. 再次查看当前表中的记录
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | 张三   |  18 |
|  2 | 李四   |  20 |
+----+--------+-----+
2 rows in set (0.00 sec)

mysql> delete from db01.stu;               # 4. 清空表中的记录
Query OK, 2 rows affected (0.01 sec)

mysql> select * from db01.stu;
Empty set (0.00 sec)

mysql> 

7、修改表结构

①、添加字段

语法:alter table [数据库名.]表名 add 字段名 字段类型 [约束条件...] [[after | before] 字段名]

mysql> desc db01.stu;                                            # 查看表结构
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> alter table db01.stu add phone varchar(20) not null after age;
Query OK, 0 rows affected (0.01 sec)                             # 修改表结构
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc db01.stu;                                            # 查看修改后的表结构
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
| phone | varchar(20) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> 

②、修改字段(包括修改字段名、字段类型、约束等)

语法:alter table [数据库名.]表名 change 字段名  新字段名 字段类型 [约束条件...] ;

mysql> desc db01.stu;                                   # 查看 stu 表结构
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
| phone | varchar(20) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter table db01.stu change phone tel varchar(18);
Query OK, 0 rows affected (0.34 sec)
Records: 0  Duplicates: 0  Warnings: 0                  # 修改 stu 表结构的phone字段

mysql> desc db01.stu;                                   # 字段名 phone 改为 tel, 类型和约束都改变了
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
| tel   | varchar(18) | YES  |     | NULL    |       |   
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> 

③、 删除字段

语法:alter table [数据库名.]表名 drop 字段名;

mysql> desc db01.stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
| tel   | varchar(18) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter table db01.stu drop tel;                  # 删除 stu 表中的 tel 字段
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc db01.stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> 

补充说明:

修改表结构的一般格式可以总结为

alter table 表名 (add | change | drop ) 字段;

猜你喜欢

转载自blog.csdn.net/u010559460/article/details/87934898