#mysql
1.增删改查
1.连接数据库
#打开mysql
sudo service mysql start
#使用root登录,密码为空
mysql -u root
2.新建数据库
CREATE DATABASE mysql_shiyan;
3.连接数据库
use mysql_shiyan;
4.查看数据库中的表
show tables;
5.新建数据表
CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度)
);
CREATE TABLE employee
(
id int(10),
name char(20),
phone int(12)
);
除了常用的数据类型之外,还有各种其他类型的数据类型
CAHR和VARCHAR
对于“abc”字符串而言
CAHR(10) 的长度是固定的,表示存储的字符将占10个字节,包括7个空字符
VARCHAR(12)则只占用4个字节,增加一个字节存储字符串本身的长度
ENUM类型数据的值,必须是定义时枚举的值的其中之一,即是单选 SET的值可以是多选
6.插入数据
SELECT *FROM employee;
INSERT INTO employee(id,name,phone)
VALUES(01,'Tom',110110110);
INSERT INTO employee VALUES(02,'Jack',119119119);
INSERT INTO employee(id,name) VALUES(03,'Rose');
7.显示表中数据
SELECT *FROM employee;
8.删除数据库
drop database mysql_shiyan;
9.加载文件中的数据库
source /home/shiyan/desktop/mysql.sql;
2.mySQL约束
约束是一种限制,通过对表的行或者列的数据作出限制,确保表的数据的完整性和唯一性
| 约束类型: | 主键 | 默认值 | 唯一 | 外键 | 非空 |
|---|---|---|---|---|---|
| 关键字: | PRIMARY KEY | DEFAULT | UNIQUE | FOREIGN KEY | NOT NULL |
1.主键:PRIMARY KEY
区分完全一样的数据的唯一标识符
2.默认值约束:DEFAULT
people_num INT(10) DEFAULT 10,
INSERT 语句中如果DEFAULT 约束的位置没有值,那么这个位置就会被DEFAULT的数值填充
#正常插入的语句
INSERT INTO department(dpt_name,people_num) VALUES('dpt1',11);
#插入新的数据
INSERT INTO department(dpt_name) VALUES('dpt2');
+--------+----------+
|dpt_name|people_num|
+--------+----------+
|dpt1 + 11|
|dpt2 + 10|
+--------+----------+
3.唯一约束:UNIQUE
规定一张表的某一列是不能有重复值的,即每一个值唯一
UNIQUE(phone),
4.外键约束:FOREIGN KEY
既能保证数据的完整性,也能表现表之间的关系
比如,现在有用户表和文章表,给文章表中添加一个指向用户 id 的外键,表示这篇文章所属的用户 id,外键将确保这个外键指向的记录是存在的,如果你尝试删除一个用户,而这个用户还有文章存在于数据库中,那么操作将无法完成并报错。因为你删除了该用户过后,他发布的文章都没有所属用户了,而这样的情况是不被允许的。同理,你在创建一篇文章的时候也不能为它指定一个不存在的用户 id。
一个表能有多个外键,但是每个外键必须REFERENCES另一个表的主键,取值必须在它的参考列中有对应值
CONSTRAINT emp_fk FOREIGN KEY(in_dpt) REFERENCES department(dpt_name);
# 外键名字(自定义) in_dpt为外键 参考列是department表的dpt_name列
在 INSERT 时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列 (department 表的 dpt_name) 中没有 dpt3,则 INSERT 失败:
INSERT INTO employee VALUES(02,'Jack',30,3500,114114,'dpt3');
可见之后将 dpt3 改为 dpt2(department 表中有 dpt2),则插入成功:
5.非空约束:NOT NULL
被非空约束着的列,插入值的时候必须非空
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);