修改表名 rename
ALTER TABLE 旧表名 RENAME [TO] 新表名;
alter: 修改
rename: 重命名
添加字段 add
ALTER TABLE 表名 ADD 字段名 数据类型 [属性]
修改字段 change
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
删除字段 drop
ALTER TABLE 表名 DROP 字段名;
删除表: drop table 表名;
删除数据 :drop database test1;
对表中字段的属性值操作:添加设置额外属性等
primary key 给字段添加唯一键主键属性(不可重复,且不为空)
alter table 表名 add constraint 字段名 primary key 表名(字段名);
primary key : 唯一的,主键。
add constraint: 添加 约束
给表添加外键字段 外键, FOREIGN KEY。
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)
REFERENCES 关联表名(关联字段);
FOREIGN KEY: 外键
ADD CONSTRAINT: 添加 约束
REFERENCES :关联 引用
(添加外键: 是需要你这个外键 字段的类型一致, 且字段属性不能为空的not null,设置成主键!)
练习:
#对一个表中字段增删改查的操作练习。 alter table 来操作一个表的修改
#先创建一个表。
CREATE TABLE mybook(id INT ,bookname VARCHAR(40),money INT);
#先给我们的mybook表改名为book
ALTER TABLE mybook RENAME book;
#给book 表添加一个字段,作者author
ALTER TABLE book ADD author VARCHAR(40) NOT NULL;
#删除book表中 author 这个字段。 drop
ALTER TABLE book DROP author;
DML语句,对表中的数据进行操作。
添加数据:
添加数据: insert into 表名 values(字段对应数据1,字段对应数据2,……);
注意: 表名,后面可以添加字段名,表示要往对应字段下面添加数据。
字段名可以是多个,用逗号隔开。添加的值,也要和字段数量一一对应。
添加多条数据:
当我们要给一个表中添加多条数据的时候。
insert into 表名 values(一条数据),(第二条数据),(第三条数据);……
如何修改:修改数据,和数据里面的约束。change 改变字段。
delete 删除字段,之后在重新创建,后边会学习专门对属性操作。
从原表中选择数据,添加到新表中。
方法1:
INSERT INTO 新表(字段1,字段2……)SELECT字段1,字段2……FROM 原表;
方法2:
CREATE TABLE 新表(SELECT 字段1,字段2 …… FROM 原表);
更新数据:
update :
update 表名 set 字段名=字段值, 字段名=字段值,字段名=字段值 where 条件。
删除数据:
DELETE FROM 表名 [WHERE条件];
delete from 表名; (后边不跟条件的话,就删除所有表中内容)
添加了auto_increment 这个属性的字段,具备自增的属性。
当你删除了,中间的一些列表内容的内容的时候,就会产生自增列表断开的问题。
我们想要数据删除后,现在剩下的数据,仍然给我保持一个序列排序,且序号连续。
TRUNCATE TABLE 表名;
这个属性字段,可以给我们把自动增长的属性字段,重新排序。
聚合函数 :
avg() :求平均数
count() :计算数量的
sum() : 求和的
min() 求最小值
max () 求最大值
字符串函数:
注意:在所有mysql字符串操作中,最开始的索引是从1开始的。
CONCAT(str1,str1...strn) 链接字符串,后面可以跟多个参数-字符串
INSERT(str,pos,len,newstr) 替换字符串
str 原字符串,
pos起始索引,
len向后替换几位
newstr新字符串。
LOWER(str) 全部转化成小写
UPPER(str) 全部转化成大写
SUBSTRING (str,num,len) :截取一个子字符串,
str :操作的字符串
num :起始位置
len : 要截取的长
时间日期函数“
CURDATE() 获取当前日期 current 当前的
CURTIME() 获取当前时间
NOW() 获取当前日期和时间
WEEK(date) 返回日期date为一年中的第几周
YEAR(date) 返回日期date的年份
HOUR(time) 返回时间time的小时值
MINUTE(time) 返回时间time的分钟值
DATEDIFF(date1,date2) 返回日期参数date1和date2之间相隔的天数
ADDDATE(date,n) 计算日期参数date加上n天后的日期
数学函数:
CEIL(x) 返回大于或等于数值x的的最小整数
FLOOR(x) 返回小于或等于数值x的最大整数
RAND() 返回0~1间的随机数 ,小数。
子查询:SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询)
in子查询,当我们父查询条件选择where 跟的字段接收的结果超过一个的时候用in
in 后面可以接收多个子查询返回结果
# NOT IN 就是对 选择包含的条件进行取反 操作。
# 最终的查询结果,是除了条件赛选出来的内容 以外的所有表数据
连表查询:select 字段 from 一个表 表引用名
inner join 要关联的表名 on 关联字段= 被关联字段
where 查询条件
如果是多个 表查询,用这个连表查询,比较方便。
连表查询,比子查询的优势,就是,可以方便关联多张表,查询关联数据。
#Subquery returns more than 1 row 报错:子查询返回的结果超过一条就会报错