文章目录
数据库的创建
1、数据库的创建:
基础的创建语法:
CREATE DATABASE 命令/create database 命令/Create Database 命令
MySQL是不区分大小写的,所以输入哪种都可以。
mysql 是负责存储 MySQL 各种信息的数据库,它保存了管理用户信息的表 user 等。除此之外,它还保存了存储 MySQL 信息的数据库及示例数据库
MySQL [(none)]> CREATE DATABASE db1
-> ;
Query OK, 1 row affected (0.004 sec)
这个数据库的创建的结果返回值:
Query OK, 1 row affected (0.004 sec)
表示查询成功,更改了一行,花费时间为0.004
秒。
数据库名和表名(→ 1.1.2 节)在 Windows、macOS 和 Linux 上的处理方法并不
相同。在 Windows 和 macOS 的环境中不区分字符的大小写,但是在 Linux 环境中却区分大小写。虽然,我们可以使用中文来进行数据库和表名和列名,但是这样会增大问题发生的概率,所以不建议使用中文。
查看上述的注意事项:
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| TESTFLASK |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.001 sec)
MySQL [(none)]> use testflask;
ERROR 1044 (42000): Access denied for user 'zyp'@'localhost' to database 'testflask'
MySQL [(none)]> use TESTFLASK;
Database changed
【语法的建议错误】:
- 确认命令最后是否输入了
;
。 - 如果没有输入
;
的话,直接按回车键,命令行就会显示->
标记。这个表示对应的命令行还没结束,此时只要输入;
即可。 - 如果显示了
You have an error in your SQL syntax
,请确认一下命令的拼写是否出错误。 - 如果显示了
Can't create database 'db1'; database exists
(db1 已经存在,无法再次创建),就表示数据库 db1 已经被创建过了
1.1、展示创建的所有的数据库:
使用
SHOW DATABASES
命令用于确认数据库的信息。
对应的使用效果,如下所示:
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| TESTFLASK |
| db1 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.001 sec)
可以在这个里面看到我们所创建的数据库的信息。当输出内容无法容纳在MySQL
监视器的一个屏幕中时,我们只要确认这个行数信息就可以了。
1.2、使用use
来指定使用的数据库:
一些RDBMS
要求在启动MySQL
监视器的同时指定数据库,但是MySQL
并没有对此提出要求。
使用use
来指定需要使用的数据库:
# use 数据库名
use db1;
命令的最后没有输入“;”呢?在 SQL 语句中,命令的最后通常需要输入;
,但是 use
不是 SQL
语句,所以不输入;
也没有问题。另外,我们可以用 \u
来代替 use
,使用 \u db1
命令指定数据库。
使用SELECT DATABASE();
来查看当前使用的数据库。
可以使用指定数据库来启动MySQL
监视器。通过如下的指令:
mysql db1 -u root -proot
2、创建表:
在创建表时,需要事先指定输入数据的类型是什么、列名是什么。
SHOW 是其他 RDBMS 的 SQL 中所没有的,它是 MySQL 特有的命令。
INT
与VARCHAR
的两种数据类型。
使用CREATE TABLE
命令来创建表。在()
内使用空格分开列名和数据类型,各个列之间使用,
分隔。
CREATE TABLE 表名 (列名1 数据类型1,列名2 数据类型2...);
例如,下面使用SQL
语句来进行表的结构的构造:
empid | name | age |
---|---|---|
VARCHAR(10) | VARCHAR(10) | INT |
对应的使用方法:
CREATE TABLE tb1(empid VARCHAR(10),name VARCHAR(10),age INT);
2.1、显示所有的表:
使用
SHOW TABLES;
命令,来显示数据库中所有的表。
使用指定字符编码创建表 => 在创建的命令之后,加上CHARSET=utf8
选项。
对应的完全的指令为:
CREATE TABLE tb1 (empid VARCHAR(10), name VARCHAR(10),age INT) CHARSET=utf8;
2.2、访问其他的数据库:
当从其他的数据库访问数据库db2中的表table的所有记录时,可以使用如下的命令:
SELECT * FROM db2.table;
此命令在没有使用use
选择数据库的状态下也可以执行。
在启动监视器的时候指定数据库:
[zyp@iZ0jl9sgt76d4kh58mvinxZ ~]$ sudo mysql mysql -u root -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 263
Server version: 8.0.35 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [mysql]>
2.3、确认表的列结构
DESC 表名;
使用上述的命令显示表的列结构。
对应的使用方式:
mysql> DESC tb1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| empid | varchar(10) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.05 sec)
Null
表示“允许不输入任何值”,Default
表示“如果什么值都不输入就用这个值” Field
表示列名,Type
表示数据类型。
创建表的时候,需要将列和数据结构一起创建出来。
2.4、向表中插入数据:
使用
INSERT INTO TableName VALUES(data1, data2...);
在VALUES
后面的括号中按照列的顺序用,
来区分各数据。按照下面的指令,来进行插入操作:
INSERT INTO tb1 VALUES('A101','hahah',40);
这样就插入了第一条记录。
当我们输入F7
键可以让历史命令列表显示出来,方便我们后面可以直接的进行对使用过的指令进行管理。
2.5、指定列名插入记录:
对应的语法和上述的语法非常的相似:
INSERT INTO 表名 (列名1, 列名2...) VALUES (数据1, 数据2...);
按照上述的例子就是:
INSERT INTO tb1 (age,name,empid) VALUES (23,'test','A104');
我们使用这样的方式就可以不按照顺序来将一组数据全部输入到表tb1
中。
并且使用这样的方式可以一次性输入多条数据。
对应的使用的语法为:
INSERT INTO tb1 (empid,name,age) VALUES ('A101','ppp',40),('A102','ttt',28),
('A103','bbb',20),('A104','aaa',23),('A105','hahaha',35);
3、数据的显示:
使用
SELECT
命令能够让列的数据显示出来。显示各个列的数据:
SELECT 列名1, 列名2, 列名3… FROM 表名;
当需要显示表tb1
中的列name
和empid
的时候可以使用如下的方法:
SELECT name,empid FROM tb1;
当然,也可以使用正则表达式中的*
来表示表中的所有的列。
我们可以使用SELECT * FROM 表名;
来显示所有的记录。
SELECT
命令还可以输出与显示一些与数据库无关的值。比如使用:
select '测试'
,就会只单纯的输出‘测试’这个字符串。也可以进行一些简单的计算:SELECT (2+3)*4;
4、表的简单的复制操作:
对应的使用的指令:
CREATE TABLE tb1A SELECT * FROM tb1;
这个语句的简单的使用就是,将表tb1
中的内容复制到表tb1A
上。
使用之前学习的SHOW TABLES;
语句来进行所有创建的表的显示。
【实验总结】:
在进行数据库的插入操作的时候出现的问题:
指令:INSERT INTO tableName VALUES (xxxxxx):
中对应的INTO
和VALUSE
两个属性没有进行添加。导致插入语句出现报错的问题。