1.创建表的语句
CREATE TABLE [IF NOT EXISTS]tabke_name(
column_name data_type,
....
)
2. 查看数据表列表
SHOW TABLES [FROM db_name] [LINK 'pattern' | WHERE expr]
3. 查看数据表结构
SHOW COLUMNS FROM tbl_name //用来查看数据表中对应字段的类型
4. 插入记录
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)
5. 记录查询
SELECT expr,.. FROM tal_name
6.自动编码
//AUTO_INCREMENT
//1. 自动编码,且必须与主键组合使用
//2. 默认情况下,起始值为1,每次的增量为1
//PRIMARY KEY
// 1.主键约束
// 2.每张数据表只能存在一个主键
// 3.主键保证记录的唯一性
// 4.主键自动为NOT NULL
//自增的主键
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
//不自增的主键(主键不可相同)
CREATE TABLE tb3(
id SMALLINT UNSIGNED PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
7.唯一约束
//UNIQUE KEY
//1. 唯一约束
//2. 唯一约束可以保证记录的唯一性
//3. 唯一约束的字段可以为空值(NULL)
//4. 每张数据表可以存在多个唯一约束
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,//唯一约束
age tinyint UNSIGNED //无符号整形
);
8. 默认约束
//1. 默认值
//2. 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
sex ENUM('1','2','3') DEFAULT '3' //可以为空,默认赋值为3
);
9.外键约束
// FOREIGN KEY
//1. 保持数据一致性,完整性
//2. 实现一对一或一对多关系
//外键约束的要求
//1. 父表和字表必须使用相同的存储引擎,而且禁止使用临时表。
//2. 数据表的存储引擎只能为InnoDB
//3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;尔字符的长度则可以不同。
//4. 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
//修改MySql的配置文件 myini 中default-storage-engine = INNODB
//用来产看数据表创建的基本语法
SHOW CREATE TABLE tbl_name //可以查看详细的表的信息(表支持的引擎和编码)
//创建
CREATE TABLE provinces(
id SAMLLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
CREATE TABLE user(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pid SMALLINT UNSIGNED, //外界列
FOREIGN KEY (pid) REFERENCES provinces (id) //参照列
);
//用来查看是否表拥有索引
SHOW INDEXES FROM provinces;
//以网格形式展现当前的索引
SHOW INDEXES FROM provinces\G;
10.外键约束的参照操作
//1. CASCADE : 从父表删除或更新且自动删除或更新子表中匹配的行
//2. SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
//3. RESTRICT: 拒绝对父表的删除或更新操作。
//4. NOT ACTION: 标准SQL的关键字,在MYSQL中与RESTRICT相同。
CREATE TABLE user1(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id) DELETE CASCADE
);
//当插入记录时,必须先在父表增加记录,之后才能在子表中加入记录。
–
11. 表级约束与列级约束
//1. 对一个数据列建立的约束,称为列级约束
//2. 对多个数据列建立的约束,称为表级约束
//3. 列级约束既可以在列定义时声明,也可以在列定以后声明。
//4. 表级约束只能在列定义后声明。
–
12.修改数据表
//添加单列
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
//添加多列(不能指定列的位置)
ALTER TABLE tal_name ADD [COLUMN](col_name column_definition,...)
//删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
//增加主键约束
ALTER TABLE tal_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]] FOREIFN KEY [index_name][index_type](index_col_name,...) reference_definition
//增加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT}
//删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY
//删除唯一约束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
//删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
//修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]
//修改列名称
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col——name]
//数据表更名方法一
ALTER TABLE tbl_name RENAME [TO|AS]new_tbl_name
//数据表更名方法二
RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...
–
13.插入
//INSERT
//插入记录
INSERT [INTO]tbl_name SET col_name={expr|DEFAULT},...//与普通的插入不同点在于,此方法可以使用子查询SubQuery()
INSERT [INTO] tbl_name [(col_name),...] SELECT ... //此方法可以将查询结果插入到指定的数据表。
14.更新
//更新记录(单表更新)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
15.删除
//删除记录(单表删除)
DELETE FROM tbl_name [WHERE where_condition]
16.查找
SELECT select_expr[,slect_expr ...]
[
FROM tble_references
[WHERE where_condition]
[GROUP BY {col_name|position} [ASC|DESC],...]
[HAVING where_condition]
[ORDER BY {col_name|expr|postion}[ASC|DESC],...]
[LIMIT{[offset,]row_count|row_count OFFSET offset}]
]
//AS 用来赋予别名
//WHERE 对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。在WHERE表达式中,可以使用MYSQL的运算符
//GROUP BY 查询结果分组 [GROUP BY{col_name|position}[ASC|DESC],...] 其中ASC是升序 DESC是降序
//HAVING 分组条件 [HAVING where_condition] eg:SELECT sex,age FROM users GROUP BY 1 HAVING age>35; 或 SELECT sex FROM users GROUP BY 1 HAVING count(id)>=2;
//ORDER BY 对查询结果进行排序
//进行查询平均值
SELECT AVG(column_name) FROM tbl_name;
//设置平均值后的小数点
SELECT ROUND(AVG(column_name),2) FROM tbl_name;
//使用[NOT]IN的子查询 =ANY运算符与IN等效。!=ALL或<>ALL运算符与NOT IN等效
//使用[NIT]EXISTS的 如果子查询返回任何行,EXISTS将返回TRUE;否则为FALSE
//将查询结果写入数据表中
INSERT [INTO]tbl_name [(col_name,...)] SELECT...
//多表更新
UPDATE table_references SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
//例如
UPDATE tble_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brands=b.brands SET g.brand_name=b.brand_id;