库与表的基本操作

库的增删改查:

查看系统库语句: show databases; 

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
mysql: 授权库,主要存储系统用户的权限信息

sys:

 

创建数据库语法: create database 数据库名 charset utf8;

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
数据库命名规则:
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
# 基本上跟python或者js的命名规则一样

 

数据库的相关操作:

#查看数据库
show databases;
#查看当前库
show create database db1;
#查看所在的库
select database();

#选择数据库
use 数据库名

#删除数据库
DROP DATABASE 数据库名;
# 修改数据库的一些属性;
alter database db1 charset utf8;

 

表的增删改查:

语法:

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;


1.创建数据库

create database db2 charset utf8;


2.使用数据库

use db2;


3.创建a1表

create table a1(
  id int,
  name varchar(50),
  age int(3)
);

4.插入表的记录

insert into a1 values
(1,'mjj',18),
(2,'wusir',28);

ps:以;作为mysql的结束语

5.查询表的数据和结构

(1)查询a1表中的存储数据

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

mysql> select * from a1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | mjj   | 18  |
| 2 | wusir | 28  |
+------+-------+------+
2 rows in set (0.02 sec)

mysql>

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

 

(2)查看a1表的结构

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
mysql> desc a1;
+-------+-------------+------+-----+---------+-------+
| Field     | Type           | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id        | int(11)        | YES  |      | NULL    |       |
| name      | varchar(50)    | YES  |      | NULL    |       |
| age       | int(3)         | YES  |      | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.16 sec)
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

(3)查看表的详细结构

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
mysql> show create table a1\G;
*************************** 1. row ***************************
       Table: a1
Create Table: CREATE TABLE `a1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `age` int(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

6.复制表

(1)新创建一个数据库db3

mysql> create database db3 charset utf8;
Query OK, 1 row affected (0.00 sec)

(2)使用db3

mysql> use db3;
Database changed
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
#这是上个创建的db2数据库中的a1表
mysql> select * from db2.a1;
+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | mjj   |   18 |
|    2 | wusir |   28 |
+------+-------+------+
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

(3)复制db2.a1的表结构和记录

# 这就是复制表的操作(既复制了表结构,又复制了记录)
mysql> create table b1 select * from db2.a1;
Query OK, 2 rows affected (0.03 sec)

(4)查看db3.b1中的数据和表结构

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
#再去查看db3文件夹下的b1表发现 跟db2文件下的a1表数据一样
mysql> select * from db3.b1;
+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | mjj   |   18 |
|    2 | wusir |   28 |
+------+-------+------+
2 rows in set (0.00 sec)
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

 

ps1:如果只要表结构,不要记录

#在db2数据库下新创建一个b2表,给一个where条件,条件要求不成立,条件为false,只拷贝表结构
mysql> create table b2 select * from db2.a1 where 1>5;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看表结构:

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
# 查看表结构
mysql> desc b2;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int(3)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

#查看表结构中的数据,发现是空数据
mysql> select * from b2;
Empty set (0.00 sec)
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

 

ps2:还有一种做法,使用like(只拷贝表结构,不拷贝记录)

MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;
mysql> create table b3 like db2.a1;
Query OK, 0 rows affected (0.01 sec)

mysql> desc b3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int(3)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

mysql> select * from db3.b3;
Empty set (0.00 sec)
MySQL 之  第二章:  库与表的基本操作; 数据类型; 完整性约束; 外键;

 

7.删除表:

drop table 表名;

 

数据类型

mysql 是强类型语言;

1, 数字:
  1>, 整型:
    tinyint: 小整数 占1个字节
      默认有符号, 范围:-128~127;
      更改为无符号语法(设置):careat table t1(x tinyint unsigned) 范围:0~255;
    int: 大整数 占4个字节
    bigint: 极大整数值 占8个字节

============有符号tinyint==============
# 创建数据库db4
create database db4 charset utf8;

# 切换到当前db4数据库
mysql> use db4;

# 创建t1 规定x字段为tinyint数据类型(默认是有符号的)
mysql> create table t1(x tinyint);

# 验证,插入-1这个数
mysql>   insert into t1 values(-1);

# 查询 表记录,查询成功(证明默认是有符号类型)
mysql> select * from t1;
+------+
| x    |
+------+
| -1 |
+------+

#执行如下操作,会发现报错。因为有符号范围在(-128,127)
mysql>   insert into t1 values(-129),(128);
ERROR 1264 (22003): Out of range value for column 'x' at row 1


============无符号tinyint==============
# 创建表时定义记录的字符为无符号类型(0,255) ,使用unsigned
mysql> create table t2(x tinyint unsigned);

# 报错,超出范围
mysql>   insert into t2 values(-129);
ERROR 1264 (22003): Out of range value for column 'x' at row 1

# 插入成功
mysql>   insert into t2 values(255);
Query OK, 1 row affected (0.00 sec)
验证一有符号和无符号tinyint

相关文章:

  • 2021-07-31
  • 2021-12-01
  • 2021-07-15
  • 2021-07-11
  • 2022-02-15
猜你喜欢
  • 2021-11-20
  • 2022-12-23
  • 2021-04-23
  • 2022-12-23
  • 2022-03-06
  • 2022-12-23
相关资源
相似解决方案