- 查看已有数据库(表)
show batabases(tables);
- 创建数据库
create batabase ‘basename’;
- 删除数据库
drop database ‘basename’;
- 选择使用数据库(切换数据库)
use ‘basename’;
- 创建表
create tablec ‘tablename’
(
SubjectNo int primary key auto_increment, -- primary key 表示主键,主键非空 auto_increment:自增
SubjectNAme varchar(50),
ClassHour int,
GradeID int
);
-
查看创建表结构
show create table 'tablename'(\G); -- \g 和 ; 效果一样,\G格式化输出
describe(desc) tablename;
-
添加数据
insert into tablename[(字段1,字段2,字段3,...)] values('值1','值2','值3',....)[,('值1','值2','值3',....)]; # 可以一次性添加多条数据
insert into tablename (字段名)
select 字段名 from tablename2
-
删除数据
DELETE from student WHERE sno = '101';
-
修改表
- 添加字段
alter table tablename add 字段名 类型 [first]; #first 将属性添加到第一列,否则添加到最后一列
alter table tablename add 字段名 类型 after 字段2; #将属性添加到指定列之后
- 修改表名
alter table 旧表名 rename as 新表名;
- 修改字段
alter table 表名 modify 字段名 类型【属性】;
alert table 表名 change 旧字段名 新字段名 类型 【属性】;
- 删除字段
alter table 表名 drop 字段名
- 修改字段的位置
alter table 表名 modify 属性名 属性 after 属性名|frist
- 添加字段
-
更新数据
updata tablename set column_name = value [, column_name2 = value2,...]
[where condition];
注:
1. value 为修改后的数据,可以为变量、具体值、表达式、或者嵌套的select结果
2. condition 为筛选条件,如不指定则修改所有该表的所有列数据
3. update select 语句(注意:必须使用inner join)
语法 update a inner join (select yy from b) c on a.id =c.id set a.xx = c.yy -
表的约束
完整性约束条件是对字段进行限制,要求用户对该属性进行的操作复合特定的要求。
mysql中基本的完整性约束条件:
约束条件 | 说明 |
---|---|
primary key | 主键,可以唯一的标识对应的元组 |
unique | 标识属性是唯一的 |
foreign key | 外键,是与之联系的某表的主键 |
not null | 该属性不能为空 |
auto_increment | 标识该属性的值自动增加 |
default | 为该属性设置默认值 |
- unique 允许字段为空,primary key 字段不能为空,且一个表只能有一个主键(主键可以组合使用),但是可以有多个unique字段。
- 多字段主键:
create table tablename( propName1 propType1,propName2 propType2,......constraint pk_name primary key (propName1,propName2));
在属性定义完成后统一设置,constraint会给约束起一个名字。 - auto_increment: 一个数据库表中只能有一个字段使用该约束,该字段必须是整数类型
- foreign key: 外键约束是保证多个表之间的参照完整性,设置外键约束的两个表之间具有父子关系,即子表的某个字段的取值范围由父表决定。设置外键约束的字段依赖于数据库中已经存的父表的主键,但外键可以为NULL。
create table tablename( propName1 propType1,propName2 propType2,......constraint fk_pro foreign key (propName1) peferences tablename2 (propName2) );
-
基本的查询
select * from tablename;
-
truncate 与 delect
相同: 都能删除数据、不删除表结构,但truncate速度更快
不同: 使用truncate table 重新设置auto_increment计数器;使用truncate不会对事务有影响