MySQL的深入浅出(一)
程序员文章站
2022-05-29 21:30:35
...
初识MySQL
登陆数据库
- 配置环境变量:在系统环境变量path
C:\Program Files\MySQL\MySQL Server 5.7\bin
- 登陆数据库:
cmd命令行下:mysql -h 127.0.0.1 -P 3306 -u root -p
输入密码:
注意:大写P,端口号;小写p:密码
数据类型
- 整数类型
整数类型 | 字节 | 最大值 | 最小值 |
---|---|---|---|
TINYINT | 1 | 有符号-128 无符号0 |
有符号127 无符号255 |
SMALLINT | 2 | 有符号-32768 无符号0 |
有符号32767 无符号65535 |
MEDIUMINT | 3 | 有符号-8388608 无符号0 |
有符号8388607 无符号1677215 |
INT/INTEGER | 4 | 有符号-2147483648 无符号0 |
有符号2147483647 无符号4294967295 |
BIGINT | 8 | 有符号-9223372036854775808 无符号0 |
有符号9223372036854775807 无符号18446744073709551615 |
硬件十分发达:已经不需要考虑内存了,一般使用INT就够了(BIGINT太大了不怎么用)
- 浮点数据类型:
浮点数类型 | 字节 |
---|---|
FLOAT | 4 |
DOUBLE | 8 |
- 日期类型:
日期类型 | 字节 | 最大值 | 最小值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
(时间戳)TIMESTAMP | 4 | 19700101080001 | 2038年某一时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
- 字符串类型:
字符串类型 | 字节 | 描述及存储希求 |
---|---|---|
CHAR(M) | M | M为0~255之间的数 |
VARCHAR(M) | M | M为0~255之间的数 |
区别:
1)char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。
当你输入的字符大于指定的数时,它会截取超出的字符。
2)R。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,
把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。
为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。
约束
-
完整性检查就是指检查数据的准确性和完整性;
mysql数据库管理系统提供了一系列机制来检查数据库表中的数
据是否满足规定的条件,以保证数据库表中数据的准确性和一致性,这种机制就是 约束 ! -
约束:
| 关键字 | 解释 |
| ------- | ----|
| NOT NULL | 约束字段的值不能为空 |
| DEFAULT | 设置字段的默认值 |
| UNIQUE KEY | 字段的值唯一 |
| PRIMARY KEY | 主键非空且唯一 |
| AUTO INCREMENT | 字段自动增长 |
| FOREIGN KEY(FK) | 约束字段为表的外键 |企业里的默认外键名称:FK_数字编号,同一个数据库中的外键编号不能相同 1)自动增长约束必须是主键,而且数据类型是int 2)自动增长的数字不会回退 子表:拥有外键的表 父表:子表外键指向的主键所在的表 注意: 1)字表的取值范围受到父表的约束 2)先建父表,再建字表;先有父表数据,再有字表数据 3)删除的时候先删除子表,再删除父表
数据库的使用
- 系统自带的数据库:不同版本数据库软件默认数据库不同(莫动!!!)
information_schema
mysql
performance_schema
sys
以上四个为系统数据库(自带的)
sakila
world
- 查看命令
show databases;显示所有数据库
show tables;显示当前使用数据库的所有表
- 创建数据库(创建数据库的时候指定数据库字符集为utf8,不是UTF-8):
create dadabase 数据库名称;
create database if not exists 数据库名称 default charset=utf8;
- 删除数据库:
drop database 数据库名称;
- 使用数据库(选择一个数据库进行操作):use 数据库名称;
- 创建表:
create table commoditytype(
ct_id int(11) primary key,
ct_name varchar(50) not null //最后一行不用加逗号
)default charset=utf8; //建议写上,不写默认数据库编码;结束命令的分号别忘了
create table commodity(
c_id int(11) primary key,
c_name varchar(50) not null,
c_madein varchar(50) not null,
c_type int(11) not null,
c_inprice int(11) not null,
c_outprice int(11) ,
c_num int(11) default '100',
constraint fk_1 foreign key (c_type) references commoditytype (ct_id)
)default charset=utf8;
create table customer(
cu_id int(11) primary key,
cu_name varchar(50) not null,
cu_phone varchar(50) not null,
cu_gender int(11) not null default '1',
cu_address varchar(100) not null
)default charset=utf8;
create table `order`( //order是关键字使用反引号
o_id int(11) primary key auto_increment,
o_cuid int(11) not null,
o_cid int(11) not null,
o_num int(11) not null,
constraint fk_2 foreign key (o_cuid) references customer (cu_id),
constraint fk_3 foreign key (o_cid) references commodity (c_id)
)default charset=utf8;
-
desc 表名;描述表明
desc
`
order`
;
desc customer; -
表名,字段名等如果和数据库关键字相同,使用反引号(esc下,tab上)
上一篇: SQL多表查询