花括号{} 在其中选择
方括号[] 可选可不选
1.登录mysql
mysql -u(用户名) -p(密码) -P(端口号)-h(服务器名称)
mysql -uroot -proot -P3306 -h127.0.0.1(本地回环地址)
2.退出mysql
exit;
quit;
\q;
3.创建数据库
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;
CREATE DATABSE t1;
4.删除数据库
DROP {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;
DROP DATABASE t1;
5.显示所有数据库
SHOW DATABASES;
6.使用数据库
USE 数据库名称;
7.当前打开数据库
SELECT DATABASE();
8.创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
...
);
CREATE TABLE tb1(
username VARCHAR(20),
age TINYINT UNSIGNED;
salary FLOAT(8,2) UNSIGNED
);
9.查看数据表列表
SHOW TABLES [FROM db_name];
除了查看当前数据库中的数据表列表,还能查看别的数据库中的数据表列表:
SHOW TABLES [FROM mysql];
10.查看数据表结构
SHOW COLUMNS FROM tbI_name;
SHOW COLUMNS FROM tb1;
11.数据表的插入记录
INSERT [INTO] tbI_name [(col_name, ...)] VALUES(val, ...);
(1).省略所有字段
INSERT tb1 VALUES('TOM', 25, 7863.25);
(2).指定字段
INSERT tb1(username, salary) VALUES('John', 4500.63);
12.数据表的查找
SELECT expr,... FROM tb1_name;
SELECT * FROM tb1; (*代表字段的过滤)
13.修改数据表
添加单列:
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFRER col_name]
FIRST 将你添加的这一列添加到最前面
AFTER col_name 将你写的这一列添加到col_name这一列的后方
如果省略,你加入的列将加入到所有列的后面
添加多列:
ALTER TABLE tbl_name ADD[COLUMN](col_name column_definition,...)
只能在原来数据表下方添加,不能指定位置关系。
删除单列:
ALTER TABLE tbl_name DROP [COLUMN] col_name;
删除多列:
ALTER TABLE tbl_name DROP [COLUMN] col_name1,DROP [COLUMN] col_name2,...;
删除一列并新增一列:
ALTER TABLE tbl_name DROP [COLUMN] col_name1,ADD [COLUMN] col_name column_definition [FIRST | AFRER col_name];
组合操作,只需要用逗号隔开
增加主键约束:
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
添加唯一约束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
添加外键约束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] [index_type] (index_col_name,...)
14.修改表中数据
UPDATE (表名) SET (要修改的数据) (过滤条件)
UPDATE student SET name = '张三' WHERE id = 1;
13.空值与非空值
NULL,字段值可以为空;
NOT NULL, 字段值禁止为空
在创建数据表时,可以指定属性可为空或不可为空,如果不可为空,在赋值的时候就不能把属性赋为NULL
此时,username不可以为空,age可以为空
14.自动编号和主键约束
AUTO_INCREMENT 和 PRIMAR KEY
每张数据表只能存在一个主键,主键保证记录的唯一性,意味着主键字段的赋值不能相同
主键自动为NOT NULL
自动编号必须和主键一同使用,但是主键可以单独使用。
创造了一个数据表,其中字段id是自动编号并且为主键,只需输入username的值;
我们只输入username的值,ID自动编号了。
再创建一张数据表,字段id为主键但是不自动编号
不能为主键字段赋相同的值。
15.唯一约束
UNIQUE KEY
唯一约束也可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个唯一约束
16.默认约束
DEFAULT
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
在这张数据表中,sex字段从1,2,3中选择,其默认值为3
我们没有赋值给sex字段,系统将其默认赋值为3
17.外键约束
FOREIGN KEYp
保持数据一致性,完整性
实现一对一或一对多的关系
外键约束的要求
1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
创建父表provinves
创建子表users
有外键的这张表称为子表,子表所参照的表称为父表
pid称为外键列,id称为参照列,他们必须有相同或相似的数据类型
外键约束的参照操作
1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
3.RESTRICT:拒绝对父表的删除或更新操作。
4.NO ACTION:标准SQL关键字在,在MySQL中与RESTRICT相同。
创建CASCADE操作的子表users1
在父表中添加数据
在子表users1中添加数据
删除父表中id为3的数据
我们发现子表中pid为3的数据也一并删除了,因为我们子表约束操作为CASCADE,在删除父表中某个约束值时,子表也会同时删除该记录。
18.表级约束和列级约束
对一个数据列建立的约束,称为列级约束
对多个数据列建立的约束,称为表级约束
列级约束既可以在列定义时声明,也可以在列定义后声明
表级约束只能在列定义后声明