②字段重命名(既可以给字段重命名,又可以修改约束)
alter table 表名 change 旧字段名 新字段名 列属性;
alter table teacher1 change age age1 int(11);
复制代码
(4)删除表的字段
alter table 表名 drop 字段名;
alter table teacher1 drop age1;
复制代码
(5)删除表
如果要删除的表存在,则删除drop table if exists 表名;
drop table if exists teacher1;
复制代码
所有的创建和删除操作都尽量加上判断,以免报错
二、列的数据类型详解
1.数值
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
int 标准的整数 4个字节 常用
bigint 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 8个字节
decimal 字符串形式的浮点数
2.字符串
char 字符串固定的大小 0-255
varchar 可变字符串 0-65535 常用
tinytext 微型文本 2^8-1
text 保存大文本 2^16-1
3.时间和日期
date 日期格式:YYYY-MM-DD
time 时间格式:HH:mm:ss
datetime 日期格式:YYYY-MM-DD HH:mm:ss 常用
timestamp 时间戳,从1970.1.1至现在的毫秒数 常用
year 年份表示
4.null
没有值,未知
注意,不要使用NULL进行运算,结果为NULL
三、数据库的字段属性(重点)
1.unsigned
无符号的整数
不能声明为负数
2.zerofill
0填充的
假设你现在要写一个长度为10的int类型,但是你只写了个1,则他会用自动给你在1前面填充9个零
3.自增
通常理解为自增,自动在上一条记录的基础上+1(默认)
通常用来设计唯一的主键~index,必须是整数类型
可以自定义设置主键自增的起始值和步长
4.非空
假设设置为not null ,如果不给它赋值,就会报错!
Null,如果不填写值,默认就是null!
5.默认
设置默认的值
sex,默认值为男,如果不指定该列的值,则会有默认的值!
设置默认的值
四、MySQL数据管理
1.外键(了解即可)
删除有外键关系的表的时候,必须要先删除字表,才能删除父表
2.DML语言(全部背住)
insert
update
delete
3.添加
insert into 表名(字段名1,字段名2,字段名3,....) value(值1,值2,值3,....)==注意:一般写插入语句,我们一定要数据和字段一一对应!==(1)插入一行数据
insert into grade(gradename) value('大三');
复制代码
(2)插入多行数据
==注意:给一个字段添加多行值时,每个值都用括号括起来,且中间用逗号隔开。==
insert grade(gradename) value('大二'),('大一');
复制代码
insert into student(name,pwd,sex) values('张三','aaaa','男'),('李四','vvvv','女');
复制代码
4.修改
(1)修改一条数据
格式:update 表名 set colnum_name = value where 条件下面这行代码的意思是将student表中id=2的name值设置为TWQ
update student set name='TWQ' where id =2;
复制代码
(2)修改多条数据
条件:where子句,运算符id等于某个值,大于某个值,或在某个区间内修改操作符含义范围结果=等于5=6false或!=不等于56true</tdtd小于/tdtd56/tdtdtrue/td/trtrtd/tdtd大于/tdtd5>6false=6falsebetween a and b在a到b这个闭包区间内[a,b]trueand我和你 &&5>1 and 1>2falseor我或你5>1 or 1>2true5.删除
select Student_id,StudentResult+1 as 加一分后 from result;
复制代码
5.2 where条件子句
作用:检索数据中符合条件的值搜索的条件由一个或者多个表达式组成!结果为布尔值(1)逻辑运算符
运算符语法描述anda and b逻辑与ora or b逻辑或Notnot a逻辑非(2)where的运用
①查询23(学科编号)这个学科成绩在95到100之间的学生
//方式一:
select student_id as 学生编号,studentresult as 分数 from result
where studentresult>=95 and studentresult<=100 and subject_id=23;
//方式二:
select student_id as 学生编号,studentresult as 分数 from result
where studentresult between 95 and 100 and subject_id=23;
复制代码
注意:执行以上命令可能会如果没有修改MySQL的mode将会报以下错误
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'school.sub.subject_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决方式:
在Navicat或者sqlyog的命令中执行以下命令即可
~~~sql-- 插入100万条数据-- 写函数之前必须要写,标志delimiter $$ create function mock_data()returns intbegin declare num int default 1000000; declare i int default 0;
while i