-
空值与非空值 NULL: 字段值可以为空 NOT NULL; 字段值禁止为空 CRATEA TABLE tb2( username VARCHAR(20)NOT NULL, age TINYINT UNSIGNED NULL )//创建数据表tb2; SHOW COLUMNS FROM tb2;//查看tb2数据表列表结构 INSERT tb2 VALUES("Tom",NULL);//在tb2中插入记录 SELECT*FROM tb2;//查找数据表记录; INSERT tb2 VALUES(NULL,25);//ERROR: column "username" cannot be null查看全部
-
内连接;在查询时只显示符合连接条件的记录,若一开始在两个表中某一列创建连接,然后在一张表中添加新的记录,且此记录不符合原有的连接条件。然后查询,但最后查不到新加的内容
查看全部 -
MySQL在SELECT语句,多表更新,多表删除语句中支持JOIN操作
连接类型;内连接,左外连接,右外连接。
当多表中有重复的列名时,可以使用tb1_name AS alias 或者 table_subquery AS alias
查看全部 -
多表更新一步到位
通过tdb_goods_brands数据表来更新tdb_goods数据表(注意给表起别名)
通过ALTER TABLE语句修改数据表结构
查看全部 -
多表更新
语法:UPDATE table_references SET col_name1={expr1 | DEFAULT}
[,col_name2={expr2 | DEFAULT}] ... [WHERE where_condition],需要表的参照关系,这就是将要讲的连接。
表的参照关系:一张表通过INNER JOIN或者LEFT OUTER JOIN去连接另外的一张表并通过ON指定连接条件,也可以给表起别名。
连接表的语法:table_reference {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN} table_reference ON conditional_expr。
连接表处理使用表的名称以外,还需要使用连接类型。
连接类型一共分为3中:在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的。
【1】INNER JOIN:内连接.
【2】LEFT [OUTER] JOIN:左外连接。
【3】RIGHT [OUTER] JOIN:右外连接。
查看全部 -
使用INSERT...SELECT插入记录
语法:INSERT [INTO] tbl_name [(col_name,...)] SELECT ...它是将查询的结果写入到数据表,列名省略也可以,否则列名之间用逗号隔开。
INSERT语句有两种形式:INSERT SET和INSERT VALUES,区别在于INSERT SET 可以使用子查询,因为一般这样写,INSERT SET A字段=多少,这里的=是比较运算符,可以引发子查询。
如果一张表中存在很多记录,并且这张表中存在很多重复的信息,例如:上面课程中商品表中的品牌字段和商品类型,汉字占的字节数一定比数字占的字节数多,如果数据越来越多,那么数据表就会越来越庞大,查找的时候速度就会变得很慢,所以我们可以通过外键来解决这个问题,但是使用外键至少有两张数据表,而现在就有一张数据表,所以就要再创建两张数据表存储商品的分类和品牌。
但是此时分类表里还没有数据信息,我们需要从商品表中查找所有的分类信息插入到分类表中,在查找的时候按分类来进行分组,并且插入时有两种方式,方式1录入7条INSERT语句,但这样太麻烦,方式2使用INSERT...SELECT将查询的结果直接写入数据表
将分组以后的结果插入到我们新创建的数据表当中
但是此时商品表还没有分类表的外键,需要参照分类表更新商品表,以前学习的是单表更新,但是现在商品表需要参照分类表进行更新,所以这就是多表更新。查看全部 -
产生子查询的情况有三类
AVG求平均值,ROUND(...,2)对某个数四舍五入且保留到小数位数的两位
所谓子查询,可理解为将两步的查询合为一步,可以将原有查询条件WHERE中的比较运算符的右操作数换为另一个能产生相同结果的查询
语法结构:
operand comparison_operator [ANY | SOME | ALL]subquery
查看全部 -
sql结构化查询语言
子查询可以返回标量,一行,一列,或子查询
查看全部 -
SELECT * FROM DAYTWO LIMIT 2————只有一个参数,从第一条开始返回两条。(默认从上到下第一条语句为0,与id号无关)
SELECT * FROM DAYTWO LIMIT 2,2————从返回第三第四条语句
查看全部 -
HAVING where_condition
HAVING后面保证;1;为一个聚合函数求最大最小平均值等只有一个返回结果(),2;要么为一个在select语句中出现过的字段。
eg.SELECT sex,age FROM DAYTWO GROUP BY 1 HAVING age
两个条件保证一个就OK
查看全部 -
GROUP BY 列名跟在“SELECE 列名 FROM 表名”后面。ASC为升序,DESC为降序。若存在多个分组条件,中间以逗号隔开
查看全部 -
1.查询表达式中列的顺序可以与原表中的顺序不一致,
2.查询时,可以用数据表名.列名更加强了确定性(防止后期多表连接时有列名重复)
3.查询时,若原字段(列)的名字较复杂,可以使用别名来称呼原字段;
原名 AS 新名,原名1 AS 新名1,原名2 AS 新名2,
查看全部 -
如果省略where条件,所有的记录将全部被更新
查看全部 -
MySQL修改数据表(添加约束)
添加主键约束:ALTER TABLE 表名 ADD [CONSTRAINT [symbol(给主键取的名称)]] PRIMARY KEY [index_type] (index_col_name,...)
添加唯一约束:ALTER TABLE 表名 ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
添加外键约束:ALTER TABLE 表名 ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name) REFERENCES 参照表名(参照列)
添加/删除默认约束
ALTER TABLE 表名 ALTER [COLUMN] 列名 {SET DEFAULT 默认值 | DROP DEFAULT}
查看全部 -
MySQL修改数据表(添加和删除列)
添加单列:ALTER TABLE 表名 ADD [COLUMN] 列名 列定义 [FIRST(添加这一列放在指定列前方)|AFTER 列名(添加这一列放在指定列的后面)]。(如果省略FIRST或者AFTER则插入表最后面)
添加多列:ALTER TABLE 表名 ADD [COLUMN] (列名,列定义,...)
1、添加的列需要放置在();
2、不能指定位置关系,只能在数据表的下方。
删除单列:ALTER TABLE 表名 DROP [COLUMN] 列名
删除多列:ALTER TABLE 表名 DROP 列名,DROP,列名2
查看全部
举报