创建数据库
CREATE DATABASE 1707DB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
查看创建好的数据库的定义
show create database 1707DB;
查看所有存在的数据库
show databases;
删除数据库
drop database dabase_name;
drop table if exists dabase_name;
创建数据表
create table s_emp(
id int(4) not null auto_increment,
name varchar(8) not null,
age int(3),
primary key (id)
);
使用主键
- 主键,又称主码,是表中一列或多列的组合.主键约束(primary key constraint)要求主键列表唯一,并且不允许为空。主键能够唯一的标识表中的一条记录,可以结合外检来定义不同数据表之间的关系。并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,他们之间是一一对应的。主键分为两种,单字段主键和多字段联合主键
- 单字段主键
主键由一个字段组成,SQL语句格式分为以下两种。
(1)在定义的同时制定主键,语法规则
字段名 数据类型 PRIMARY KEY[默认值]
create table tb_emp2(
id int(11) primary key,
name varchr(25),
deptId int(11),
salary float
);
(2)在定义完所有的列之后指定主键
[CONSTRAINT<约束名>]|PRIMARY KEY
create table s_emp(
id int(4) not null auto_increment,
name varchar(8) not null,
age int(3),
primary key (id)
);
- 多字段联合主键
主键由多个字段联合组成,语法规则如下:
PRIMARY KEY[字段1, 字段2]
定义数据表tb_emp,假设表中没有id,为了唯一确定一个员工,可以把name、deptId联合起来作为主键
create table tb_emp4(
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY(name, deptId)
);
使用外键约束
外键用来在两个表之间建立连接,他可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空,则么一个外键值则必须等于另一个表中的主键的某个值。
外键:首先他是表中的一个字段,他可以不是本表中的主键,但对应另外一个表的主键。外键主要作用就是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有与关联的行。
创建外键的语法规则:
[CONSTRAINT<外键名>]FOREING KEY 字段名1 [,字段名2] REFERENCES<主表名> 主键列1 [,主键列2,。。。]
使用非空约束
NOT NULL
唯一约束
(1)定义完列之后直接定义约束
字段名 数据类型 UNIQUE
(2)在定义完所有列之后指定唯一约束
[CONSTRAINT<约束名>] UNIQUE(<字段名>)
==使用默认约束==
字段名 数据类型 DEFAULT 默认值
==设置表的属性值自动增加==
字段名 数据类型 ATUO_INCREMENT
默认的自增字段id的值从1开始,每次添加一条新纪录,该值就会增加1.
查看数据表结构
DESCRIBE/DESC语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。语法规则:
DESCRIBE 表名; 或者 DESC 表名;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(25) | YES | | NULL | |
| deptId | int(11) | YES | MUL | NULL | |
| salary | float | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
- NULL表示该列是否可以为空
- key表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多洗
- Default表示该列是否有默认值
- Extra表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等
==查看表详细结构语句==
SHOW CRATE TABLE<表名\G>;
如果不加“\G”参数,显示的结果可能非常混乱,加上参数“\G"之后,可使显示结果更加直观,易于查看
修改数据表
==修改表名==
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
==修改字段数据类型==
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
==修改字段名==
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>
==添加字段==
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
FIRST或者AFTER已存在的字段名,用于指定新增字段在表中的位置,如果SQL语句中没有这两个参数,则默认将新增将的字段设置为数据表的最后列
==删除字段==
ALTER TABLE <表名> DROP <字段名>
==修改字段的排列位置==
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>
==更改存储引擎==
ALTER <表名> ENGINE=<更改后的存储引擎名>
==删除表的外键约束==
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束>
==删除没有关联的表==
DROP TABLE [IF EXISTS] 表1,表2.。。
数据类型和运算符
数据类型 | 说明 | 存储需求 | 有符号 | 无符号 |
---|---|---|---|---|
TINYINT | 很小的整数 | 1个字节 | -128~127 | 0~255 |
SMALLINT | 小的整数 | 2个字节 | -32768~32767 | 0~65535 |
MEDIUMINT | 中等大小的整数 | 3个字节 | -8388608~8388607 | 0~16777215 |
INT(INTEGER) | 普通大小的整数 | 4个字节 | -2147482648~2147483647 | 0~4294967295 |
BIGINT | 极大整数值 | 8个字节 | -9233 372036854775808~9223372036 854775807 | 0~18446744073709551615 |
FLOAT | 单精度浮点数 | 4个字节 | -3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) |
DOUBLE | 双精度浮点 | 8个字节 | -1.797 693 134 862 315 7 E+308 ~2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E-308 | 0 和 2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308 |
日期和时间
类型 | 大小(字节) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2037 年某时 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
字符串数据类型
数据类型 | 说明 | 存储需求 |
---|---|---|
CHAR(M) | 固定长度非二进制字符串 | M字节,1<=M<=255 |
VARCHAR(M) | 边长非二进制数字 | L+1字节,在此L<=M和1<=M<=255 |
TINYTEXT | 非常小的非二进制字符串 | L+1字节,在此L<2^8 |
TEXT | 小的非二进制字符串 | L+2字节,在此L<2^16 |
LONGTEXT | 大的非二进制字符串 | L+4字节,在此L<2^32 |