一.数据库的基本语法
1.用SQL语句向表添加字段。
基本语法格式:
alter table table_name add/drop/modify column column_num
1.增加一个字段
alter table user add column new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空
alter table user add column new2 VARCHAR(20) NOT NULL; //增加一个字段,默认不能为空
new 表示新添加字段的名字,其后为该字段的类型,可添加字段的约束条件,如图 default null,not null...
例如:
- 用SQL语句向Course表添加Semester字段。
- 语句为:ALTER table Course add column Semester int;
2.删除一个字段
alter table user drop column new2; //删除一个字段
3.修改一个字段
alter table user modify new1 varchar(10); //修改一个字段的类型
2.建立和删除索引
建立索引是加快查询速度的有效手段,用户可以几次快速定位到需要查询的内容
(1).建立索引的两种方式:
第一种:create 【unique】【cluster】index <索引名> on <表名>
第二种:alter table <表名> add index <索引名>
降序索引,升序索引分别在最后添加(字段 desc\ asc)
例如 alter table sc add index idx_scg(sno asc,cno desc,grade asc)
(2).删除索引的两种方式:
第一种:drop index < 索引名>
第二种:alter table <表名> drop index <索引名>
3.数据查询
数据查询是数据库的核心操作
(1)一般格式为:
select 【all\distinct】<目标列表达式>
from <表名或视图名>
[where <条件表达式>
group by <列名> [having<>]
order by <列名> [asc\desc]];
(2)举例为:
例如:求计算机专业应用的学生学号和姓名;
语句:
select sno,sname
from student
where clsno in
(select clsno from class where Specialty = '计算机应用');
结果如下
4.数据库备份与还原
备份 :
mysqldump –u <用户名> –p <待备份的数据库名称> > 备份名称.sql
结果如下所示:
输入语句后按回车,会出现如下结果Enter password: 输入用户密码 即可进行备份
备份成功及出现如下标志
注:需要现创建 备份名称.sql 文件
恢复:
mysql -u <> -p <待备份的数据库名称> < 备份文件所在地址
mysql -u root -p jwgl+2021215283 < D:\mysql_file\jwgl.sql
结果如下所示:
输入语句后按回车,会出现如下结果Enter password: 输入用户密码 即可进行恢复
恢复成功及出现如下标志
二.常见问题及解决
1.You can't specify target table 't_order' for update in FRO----mysql的异常
MySQL不支持在要修该的表中加入在本表的查询
例如语句:
update student set saddr = null where sno = (select min(sage) from student)
解决方案:
在MySQL中不支持,可间接完成(先创建一个表保存查询信息)
例如上列语句可改为:
create table tmp as select min(sage) as age from student
SET SQL_SAFE_UPDATES = 0关闭禁用安全模式
update student set saddr = null where sage = (select min(age) from tmp)
SET SQL_SAFE_UPDATES = 1 开启禁用安全模式
drop table tmp
2.把非主键的字段当作修改的条件时
报错:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
报错:you'Cannot add or update a child row: a foreign key constraint fails 同样适用
出现原因:外键表添加数据时,主键表数据还没有添加进去
可采用暂时关闭安全模式的方法:
SET SQL_SAFE_UPDATES = 0; 关闭安全模式
SET SQL_SAFE_UPDATES = 1; 开启安全模式
3.编写sql语句需注意的点:
(1)where 子句中不能用聚集函数作为条件表达式。聚集函数只能用于select子句和group by中的having子句。
(2)子查询的select 语句中不能使用order by 子句,order by 子句只能对最终结果排序