- 1.数据库的基本操作
- 1.1查看数据库
- 1.2创建数据库
- 1.3 使用数据库
- 1.4 删除数据库
- 2.常用数据类型
- 2.1数值类型
- 2.2字符串类型
- 2.3日期类型
- 3.数据表的基本操作
- 3.1 创建表
- 3.2 查看指定表(结构)
- 3.3 查看当前有哪些表
- 3.4 删除表
- 【练习】
show databases;1.2创建数据库
create database 数据库名;
【注意】
1.3 使用数据库
数据库名只能是数字、字母、下划线,不能有其他特殊符号。
SQL中是不区分大小写的。
创建数据库的时候要保证你要创建的这个数据库一开始不存在,不然就会创建失败。
如果加上 if not existes ,此时就会执行成功,但是由于数据库已经存在,所以并不会真的创建新的数据库
自带的客户端是不带命令自动补全功能的,可以使用其他的编辑器来输入SQL,就会有高亮和补全,如VSCode编辑器。
可以通过上下方向键找历史命令,即找你之前输过的命令。
use 数据库名;
- use 数据库名;就是选中某个数据库,之后它就会提示Database changed,然后接下来的操作就是针对当前你选中的那个数据库进行的的操作,所以要想真正对数据库进行操作,必须得先通过use选中数据库,再进行后续操作。
drop database 数据库名;
- 删除数据库以后,内部看不到对应的数据库,里面的表和数据全部被删除。
- 注意:删除操作非常危险,一旦删了之后通过常规手段是无法找回的,这就是江湖上流传的一句话:从删库到跑路。
- drop database if exists 数据库名; if exists 表示如果存在才删除。
- –:表示注释
把数据库建立好之后如何进行组织和存储数据呢?
2.1数值类型有了数据库之后,要想真的去存储组织数据,还需要数据表,创建表的时候就需要指定表结构。表结构中就涵盖了有哪些字段,以及每个字段的类型是啥,常用的数据类型有
int 、double 、decimal、varchar、text。
分为整型和浮点型
| 数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
|---|---|---|---|---|
| bit[(M)] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时默认位是1,即只能存0和1 | char[] |
| tinyint | 1字节 | Byte | signed char | |
| smallint | 2字节 | short | short int | |
| int(常用) | 4字节 | Integer | int | |
| bigint | 8字节 | Long | long long int | |
| float(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数。会发生精度丢失 | Float | float |
| double(M,D) (常用) | 8字节 | 双精度,M指定长度,D指定小数位数。会发生精度丢失 | Double | double |
| decimal(M,D) (常用) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。数值精确 | BigDecimal | char[] |
| numeric(M,D) | M/D最大值+2 | 和decimal一样 | BigDecimal | char[] |
2.2字符串类型【扩展】
- 数值类型可以指定为无符号(unsigned),表示不取负数。但是尽量不要使用unsigned,因为对于int类型可能存放不下的数据,int unsigned 同样可能存放不下,与其如此,还不如设计时,将int 类型提升为bigint类型
- 1字节(bytes) = 8bit
- 对于整型类型的范围
- 有符号范围:-2^ (类型字节数 * 8-1) 到 2^ (类型字节数 * 8-1)-1,如int是4字节,就是-2^31 到2^31-1
- 无符号范围:0到2^ (类型字节数 * 8)-1 如int就是2^32-1
| varchar(size) (常用) | 0 - 65536字节,通过size指定长度 | 存可变长度字符串 | String | char[] |
|---|---|---|---|---|
| 数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
| text(一般常用) | 0 - 65536字节 | 存长文本数据 | String | char[] |
| mediumtext | 0 - 16777215字节 | 存中等长度文本数据 | String | char[] |
| blob | 0 - 65535字节 | 存二进制形式的长文本数据(如:存图片) | byte[] | char[] |
| 数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
|---|---|---|---|---|
| datetime | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换 | java.util.Date、java.sql.Timestamp | MYSQL_TIME |
| timestamp | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Date、java.sql.Timestamp | MYSQL_TIME |
要操作数据库中的表时,需要先使用该数据库,否则就不知道这个表是建在哪个数据库里面的。
use 数据库名;3.1 创建表
create table 表名 ( id int, name varchar(20) );
注意:mysql中,字段名在前,数据类型在后
创建表的时候,如果表名或者列名和SQL中的关键字重复了,就会报错;
可以把名字冲突的部分用反引号引起来,就能解决这个问题。
3.2 查看指定表(结构)desc 表名;
【小练习】下面我们来创建一个复杂一点的学生表试试吧!
可以先在文本中敲好,再复制粘贴到命令行,以免在命令行中打错又要重新打。
create table student1(
id int,
name varchar(16),
password varchar(20),
age int,
sex varchar(5),
birthday timestamp,
score decimal(3,1), -- decimal存小数,(3,1)表示有效数字有3位,小数点后1位
introduction text -- text 存长文本数据
);
3.3 查看当前有哪些表
show tables;3.4 删除表
drop table 表名;
注意:删除表也是非常危险的,一旦删除了通过常规手段也是无法恢复的,如果在工作中,使用删除表操作时要十分谨慎,确认之后再删除,以免犯错。
【练习】有一个商店的数据,记录客户及购物情况,有以下三个表组成:
- 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商proider)
- 客户customer(客户号customer_id, 姓名name, 住址address, 邮箱email, 性别sex,身份证card_id)
- 购买purchase(购买订单号order_id , 客户号customer_id, 商品号goods_id, 购买数量nums)
create table goods(
goods_id int,
goods_name varchar(20),
unitprice decimal(7,2),
category varchar(30),
proider varchar(40)
);
create table customer(
customer_id int,
name varchar(20),
address varchar(50),
email varchar(20),
sex varchar(5),
card_id varchar(20)
);
create table purchase(
order_id int,
customer_id int,
goods_id int,
nums int
);



