##进入数据库
mysql -u用户 -p密码
Server version: 5.5.52-MariaDB MariaDB Server ##mysql版本,5.1之后默认存储引擎为innoDB
##创建数据库指定默认编码格式
MariaDB [(none)]> create database TestA default charset 'utf8';
Query OK, 1 row affected (0.00 sec)
##选择数据库
MariaDB [(none)]> use TestA;
Database changed
MariaDB [TestA]>
##创建表
CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],
...
...
属性名 数据类型 [完整约束条件]
);
mysql字段类型:
- 数值类型:
- 字符串类型:
- 日期类型:
##创建表
MariaDB [TestA]> create table A
-> (id int,
-> name varchar(20),
-> datatime DATETIME);
Query OK, 0 rows affected (0.10 sec)
##查看表结构
MariaDB [TestA]> desc A;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| datatime | datetime | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql常见约束:
- 主键约束: PRIMARY KEY标识该属性为该表的主键,可以唯一的标识对应的列,通过它可
强制表的实体完整性
。主键不允许为空值,且不同两行的键值不能相同,表中可以不止一个键唯一标识行,每个键都称为候选键,但只能有一个为主键 - 外键约束:FOREIGN KEY标识该属性为该表的外键,是与之联系某表的主键,外键是用于建立和加强两个表数据之间的连接的一列或多列,通过它可以
强制参照完整性
,什么情况下使用外键:当一个表中的一列或多列的组合和其他表中的主键定义相同时,就可以将这些列或列的组合定义为外键,并设定与它关联的表的列。注意:当向具有外键的表插入数据时,如果与之相关联的表的列中没有与插入的外键列值相同的值时,数据库会拒绝插入数据。 即插入数据时,先插入主表,再插入从表, 删除数据时,先删除从表,再删除主表 - 唯一性约束:UNIQUE标识该属性的值是唯一的,指定一个或多个列的组合的值具有唯一性,为表中的一列或多列提供
实体完整性
。唯一性约束指定的列可以有NULL属性。主键也强制唯一性,但主键不允许为空值,故主键约束强度大于唯一性约束。因此主键不能在设定唯一性约束。 - 检查约束:CHECK对输入列或整个表中的值设置检查条件,以限制输入值,保证输入值的
数据完整性
,当对具有检查约束列进行插入或者修改时,将用该检查约束的逻辑表达式对新值进行检查,只有满足条件(逻辑表达式返回TURE)的值才能填入该列,否则报错,可以为每列指定多个CHECK约束。注意:mysql目前不支持CHECK约束,可以写不报错,但没用,mysql直接忽略。 实现CHECK约束的功能:使用触发器,来完成类似check的约束验证,使用set或enum方式来完成字符串的值范围check约束
- 默认约束: DEFAULT为该属性设置默认值,通过定义列的默认值或使用数据库默认值对象绑定表的列,以确保在没有为某列值指定数据时,来指定列的值。默认值可以是常量,表达式,NULL。注意:每个列中只能有一个默认约束,默认约束只能用于INSERT语句,约束表达式不能参照表中的其他列以及其他表,视图和存储过程。如果列不允许为空值,且没有指定默认约束,就必须明确指定列值
- 自增:AUTO_INCREMENT为该属性设置自增,这是MySQL的SQL语句的特色。常用于主键的自增,注意:指定了AUTO_INCREMENT的列必须要建索引,不然会报错,索引可以为主键索引,当然也可以为非主键索引。