MySQL建表和建数据库语句


一、数据库操作语言

 

数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。

 

SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。

 

SQL 语言的作用:

 

1. 数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。

 

2. 数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。

 

3. 数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。

 

4. 数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。

 

使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)

在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。

二、创建数据库

1. 连接 MySQL

输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。

mysql -u root -p


最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。
2. 查看当前的数据库
使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。

show databases;(截图有点麻烦,所以后面都是代码了,哈哈!)
 1 mysql> show databases;
 2 +--------------------+
 3 | Database           |
 4 +--------------------+
 5 | information_schema |
 6 | mysql              |
 7 | performance_schema |
 8 | student_system     |
 9 | sys                |
10 +--------------------+
11 5 rows in set (0.00 sec)
12 
13 mysql>

刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。

3. 创建数据库

 

使用 create database 数据库名; 创建数据库。

create database MyDB_one;
 1 mysql> create database MyDB_one;
 2 Query OK, 1 row affected (0.02 sec)
 3 
 4 mysql> show databases;
 5 +--------------------+
 6 | Database           |
 7 +--------------------+
 8 | information_schema |
 9 | mydb_one           |
10 | mysql              |
11 | performance_schema |
12 | student_system     |
13 | sys                |
14 +--------------------+
15 6 rows in set (0.00 sec)

创建数据库成功后,数据库的数量变成了6个,多了刚才创建的 MyDB_one 。
4. 创建数据库时设置字符编码
使用 create database 数据库名 charset utf8; 创建数据库并设置数据库的字符编码,一般建议设置为utf8mb4;为了方便理解比较,再创建一个mydb_two的数据库;

create database MyDB_two charset utf8mb4;
 1 mysql> create database MyDB_two charset utf8mb4;
 2 Query OK, 1 row affected (0.00 sec)
 3 
 4 mysql> show databases;
 5 +--------------------+
 6 | Database           |
 7 +--------------------+
 8 | information_schema |
 9 | mydb_one           |
10 | mydb_two           |
11 | mysql              |
12 | performance_schema |
13 | student_system     |
14 | sys                |
15 +--------------------+
16 7 rows in set (0.00 sec)

5. 查看和显示数据库的编码方式

使用 show create database 数据库名; 显示数据库的创建信息。

show create database MyDB_one;show create database MyDB_two;
 1 mysql> show create database MyDB_one;show create database MyDB_two;
 2 +----------+-------------------------------------------------------------------+
 3 | Database | Create Database                                                   |
 4 +----------+-------------------------------------------------------------------+
 5 | MyDB_one | CREATE DATABASE `MyDB_one` /*!40100 DEFAULT CHARACTER SET utf8 */ |
 6 +----------+-------------------------------------------------------------------+
 7 1 row in set (0.00 sec)
 8 
 9 +----------+----------------------------------------------------------------------+
10 | Database | Create Database                                                      |
11 +----------+----------------------------------------------------------------------+
12 | MyDB_two | CREATE DATABASE `MyDB_two` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
13 +----------+----------------------------------------------------------------------+
14 1 row in set (0.00 sec)

因为utf8mb4相对于utf8来说要更加稳定一点,所以我们打MySQL默认的utf8改为utf8mb4;

6. 使用 alter database 数据库名 charset utf8mb4;修改数据库编码

alter database MyDB_one charset utf8mb4;

 1 mysql> alter database MyDB_one charset utf8mb4;
 2 Query OK, 1 row affected (0.00 sec)
 3 
 4 mysql> show create database mydb_one;
 5 +----------+----------------------------------------------------------------------+
 6 | Database | Create Database                                                      |
 7 +----------+----------------------------------------------------------------------+
 8 | mydb_one | CREATE DATABASE `mydb_one` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
 9 +----------+----------------------------------------------------------------------+
10 1 row in set (0.00 sec)

7. 进入或切换数据库

 

使用 use 数据库名 进入或切换数据库。

use MyDB_one;
 1 mysql> use mydb_one; 2 Database changed 3 mysql> 

刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。
8. 显示当前数据库 select database();

select database();

1 mysql> select database();
2 +------------+
3 | database() |
4 +------------+
5 | mydb_one   |
6 +------------+
7 1 row in set (0.00 sec)

进入数据库中,可以使用 select database(); 来查看当前处于哪个数据库中。长时间操作数据库时,在很多数据库中来回切换后,查看当前的数据库,避免操作错了数据库。

三、创建数据表

 

1. 查看当前数据库中的表

使用 show tables;查看当前数据库中有哪些表。

show tables;
 1 mysql> show tables; 2 Empty set (0.00 sec) 

在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。

2. 创建表使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。

create table Phone_table(pid int, name char(20), price int);
 1 mysql> create table Phone_table(pid int, name char(20), price int);
 2 Query OK, 0 rows affected (0.23 sec)
 3 
 4 mysql> show tables;
 5 +--------------------+
 6 | Tables_in_mydb_one |
 7 +--------------------+
 8 | phone_table        |
 9 +--------------------+
10 1 row in set (0.00 sec)

在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。

3. 显示表信息

 

用 desc  表名; 来显示已创建的表的信息。

desc Phone_table;
1 mysql> desc phone_table;
2 +-------+----------+------+-----+---------+-------+
3 | Field | Type     | Null | Key | Default | Extra |
4 +-------+----------+------+-----+---------+-------+
5 | pid   | int(11)  | YES  |     | NULL    |       |
6 | name  | char(20) | YES  |     | NULL    |       |
7 | price | int(11)  | YES  |     | NULL    |       |
8 +-------+----------+------+-----+---------+-------+
9 3 rows in set (0.00 sec)

4. 给表增加字段
使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。

alter table Phone_table add color char(20);
 1 mysql> alter table Phone_table add color char(20);
 2 Query OK, 0 rows affected (0.40 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+----------+------+-----+---------+-------+
 7 | Field | Type     | Null | Key | Default | Extra |
 8 +-------+----------+------+-----+---------+-------+
 9 | pid   | int(11)  | YES  |     | NULL    |       |
10 | name  | char(20) | YES  |     | NULL    |       |
11 | price | int(11)  | YES  |     | NULL    |       |
12 | color | char(20) | YES  |     | NULL    |       |
13 +-------+----------+------+-----+---------+-------+
14 4 rows in set (0.00 sec)

添加后,刚才的表中多了一个字段,新增成功。
5. 删除表的字段
使用 alter table 表名 drop 字段名; 删除一个表中已存在的字段。

alter table phone_table drop price;
 1 mysql> alter table phone_table drop price;
 2 Query OK, 0 rows affected (0.32 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+----------+------+-----+---------+-------+
 7 | Field | Type     | Null | Key | Default | Extra |
 8 +-------+----------+------+-----+---------+-------+
 9 | pid   | int(11)  | YES  |     | NULL    |       |
10 | name  | char(20) | YES  |     | NULL    |       |
11 | color | char(20) | YES  |     | NULL    |       |
12 +-------+----------+------+-----+---------+-------+
13 3 rows in set (0.00 sec)

删除字段后,表中不再有该字段。
6. 修改字段的数据类型
使用 alter table 表名 modify 字段名 数据类型; 修改表中现有字段的数据类型。

alter table Phone_table modify name varchar(12);

 

 1 mysql> alter table Phone_table modify name varchar(12);
 2 Query OK, 0 rows affected (0.61 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+-------------+------+-----+---------+-------+
 7 | Field | Type        | Null | Key | Default | Extra |
 8 +-------+-------------+------+-----+---------+-------+
 9 | pid   | int(11)     | YES  |     | NULL    |       |
10 | name  | varchar(12) | YES  |     | NULL    |       |
11 | color | char(20)    | YES  |     | NULL    |       |
12 +-------+-------------+------+-----+---------+-------+
13 3 rows in set (0.00 sec)

7. 修改字段的数据类型并且改名
使用 alter table 表名 change 原字段名 新字段名 数据类型; 修改表中现有字段的字段名和类型。

alter table Phone_table change name pname char(18);
 1 mysql> alter table Phone_table change name pname char(18);
 2 Query OK, 0 rows affected (0.84 sec)
 3 Records: 0  Duplicates: 0  Warnings: 0
 4 
 5 mysql> desc phone_table;
 6 +-------+----------+------+-----+---------+-------+
 7 | Field | Type     | Null | Key | Default | Extra |
 8 +-------+----------+------+-----+---------+-------+
 9 | pid   | int(11)  | YES  |     | NULL    |       |
10 | pname | char(18) | YES  |     | NULL    |       |
11 | color | char(20) | YES  |     | NULL    |       |
12 +-------+----------+------+-----+---------+-------+
13 3 rows in set (0.00 sec)

现在,将表的 name 改成了 pname ,同时修改了 pname 的数据类型。

 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM