MySql的语法

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;

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值