数据库操作
新建数据库:
create database if not exists 库名
库名不存在会创建,否则会报警或者报错
删除数据库:
drop database if exists 库名
展示数据库:
show database
展示所有数据库
使用数据库:use 库名
建表及增删查改:
desc 表名:显示表结构
show create table 表名:显示创建语句
select * from 表名:展示表的具体内容
create table if not exists 表名(字段名 列类型 属性 索引 注释 )表类型 表字符集 注释;
最后一个列的创建语句不加逗号
属性:
UNSIGNED
无符号的,声明该数据列不允许负数
ZEROFILL
0填充的。不足位数的用0来填充,如 int(3),5则为 005
AUTO_INCREMENT
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型,可定义起始值和步长
NULL 和 NOT NULL
默认为NULL,即没有插入该列的数值,如果设置为NOT NULL,则该列必须有值
DEFAULT
默认的用于设置默认值
例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值
表结构操作:
drop table if exists 表名:删除表
ALTER TABLE 旧表名 RENAME TO 新表名:修改表名
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ] after 在你所需要添加在哪个字段后面 :添加字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ] :修改字段的属性
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]:修改字段
ALTER TABLE 表名 DROP 字段名:删除字段
外键:
create table student( --为子表
stu_id int(4) primary key,
stu_name varchar(20),
grade_id int(4),
phone varchar(11) ,
address varchar(200),
constraint stu_g_id foreign key (grade_id) --自己的字段
references Grade(grade_id)--关联的表以及字段
);
--constraint 后面可以随便接字符,但是一般用两个表名以及关联字段组成,目的是为
了清晰的知道关联的表以及字段,关联的字段和类型必须相同
外键的作用:
1.把子表和父表字段绑定,子表字段的值只能来自父表
2.父表字段的索引和值不能随意变动,相对安全
已有表,增加外键
alter table 表名 add constraint 好记忆的关联的表和字段 foreign
key(自己的字段) references 父表表名(父表字段);
删除外键:
alter table 表名 drop foreign key 上面创建在constraint后的那个代码
添加数据:
insert into 表名(字段1,字段2,....)values
(值1,值2..)--填入和字段属性相配的代码
修改数据:
update 表名 set 要修改数据的字段名=修改的值 where condition--为了限定范围,
精确的修改某一个数据,当需要限定条件多时,可以用AND来连接
修改的值也可以时计算式,例如:class_hour=class_hour-100;
WHERE条件子句
=等于
<> 或 !=不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围之间BETWEEN 5 AND 10 表示[5-10],前后都能取到
AND并且5>1 AND 1>2
OR或5>1 OR 1>2
删除表:
delete from 表名 where condition--只是在表里没了,但是他的数据可以存在72小时,
是处于对数据安全的着想,方便恢复
truncate condition--删除的很彻底,存在3小时,但是由于他清除方式,即使回复,
也无法得到完整数据
最明显的区别在于:使用autoconf自然增长时,用delete删除时,继续添加时,数字会在
上次最后数字增加,用truncate时,会从1开始增加;
取随机数:(FLOOR(RAND()*9+1),FLOOR(RAND()*6+1),
ROUND(RAND()*70+30,2))