一、对数据库的基本操作
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 ) 字段;