数据库相关

如何创建自己的数据库和自己的数据表?
SQL:结构化查询语言
  (1)数据定义语言 DDL   create ,alter ,drop 针对于数据库对象(数据库,表,视图...)
  (2)数据查义语言DQL  select   ,查询表中的数据,..
  (3)数据操作语言 DML ,insert,update,delete,针对于表中的数据
  (4)数据控制语言 DCL , grant ,revoke 


数据定义语言DDL
(1)创建一个自己的数据库
create database 数据库名;

 
显示服务器上的所有数据库  
show databases ;
使用指定的数据库
use 数据库名;
 举例:use myschool;

 如何创建数据表
create table 表名(
   字段  数据类型,
   字段  数据类型
);

 

向表中插入测试数据 DML insert
insert into 表名 [列名....] values (值.....);
举例:
insert into student values (1001,'zhangsan','男',20,now(),'sxt403','zhag@126.com');

修改表结构 (列的增加,列的删除,列的修改)alter

(1)删除表中的列
alter table 表名 drop 列名;
举例:alter table student drop age;

(2)修改表中的列 ( 列的名称,或列的数据类型的限制)
change  列名
举例:alter table student change sex gender varchar(3);

modify  列的数据类型
举例:alter table student modify clazzname varchar(40);

(3)向表中插入一个新列 add
举列:alter table student add age int(4);

表都不要了,直接删除表 drop 

drop table student;

 

 

Oracle :Oracle数据库管理系统
         1)创建用户
         2)在用户下创建表
          

create user bjsxt2 identified by sxt;
grant dba to bjsxt2;
create table student
(
     stuno number(2),
      stuname varchar2(20)
);

MySQL :MySQL数据库管理系统
         1)创建数据库
          create database 数据库名;
         2)在数据库下创建表
           use 数据库名;

create table student(
 stuno int(4),
 stuname varchar(20)
);

如何使用MySQL,要会三创建
(1)创建数据库  (通常是一个项目《小项目 》)
(2)创建数据表   :用于存储数据
(3)创建约束    :对添加到表中的数据进行限制(不合法的,不合理的数据不允许填入)

约束的类型
  (1)主键约束 primary key 
  (2)非空约束 not null
  (3)默认约束 default 

主键的特征:
  (1)非空且唯一
  (2)一个表只能有一个主键,这个主键可以由一列或多列组成,由多列组成的主键称为“复合主键”
如何添加主键?有两种方式
  (1)在创建表中直接添加 
  (2)表在创建之后,使用alter修改表结构添加主键
 -- (1)创建表时添加主键
create table stu1(
 stuno int(4) primary key,
 stuname varchar(20)
);
-- (2)先创建表,再修改表结构
create table stu2(
 stuno int(4),
 stuname varchar(20)
);
alter table stu2 add constraint pk_stuno primary key (stuno);
-- (3)复合主键
create table stu3(
 stuno int(4),
 stuname varchar(20)
);
alter table stu3 add constraint pk_stuno2 primary key (stuno,stuname);
非空约束和 默认约束只能在创建表时添加
 create table stu4(
  stuno int(4) primary key,
  stuname varchar(20) not null,
  gender varchar(2) default '男'
);
-- 添加测试数据
 insert into stu4 (stuno,stuname) values (1001,'zhangsan'); -- 性别默认为男
-- 报错的情况 ,验证了stuname not null
 insert into stu4 (stuno,gender) values (1002,'女');

自动增长列

 create table stu5(
 stuno int(4) primary key auto_increment ,
 stuname varchar(20)
);
insert into stu5 (stuname) values ('zhangsan');
select * from stu5;

可以使用图形化界面点点选选来完成

 

 

数据库表的外键约束

外键约束要有两张表
其中一张是主键表,另外一张是外键表
关系就是一对多, 主键是不允许重复(主键表)
                          外键是可以重复的 ( 外键表)

班级表(主键表)和学生表(外键表)
(1)先创建主键表,再创建外键表
(2)为外键表添加外键约束
(3)先为主键表添加测试数据,再为外键表添加测试数据
--如果要是删除,则需要先删除外键表的数据,再删除主键表的数据

 -- 创建主键表
create table clazz(
 clazzid int(4) primary key  auto_increment,
 clazzname varchar(10) not null,
 room varchar(10)
);
-- 创建外键表
create table student(
 stuno int(4) primary key auto_increment,
 stuname varchar(20) not null,
 gender varchar(2) default'男',
 clazzid int(4)
);
-- 为学生表添加外键约束
alter table student add constraint fk_clazzid foreign key (clazzid)
REFERENCES clazz (clazzid);
-- 添加测试数据
insert into clazz (clazzname,room) values ('零基础java班','403');
insert into clazz (clazzname,room) values ('高薪大数据就业班','506');
insert into clazz (clazzname,room) values ('美女最多前端班','508');
-- 向学生表添加测试数据
insert into student (stuname,clazzid) values ('zhangsan',4); -- 报错clazz只能在1,2,3中选择
insert into student (stuname,clazzid) values ('zhangsan',2);
select * from clazz
select * from student
delete from clazz where clazzid=2; -- 无法删除成功,因为2号班级有学生
/** 外键的三种策略
 (1) 不允许   ,要想删除班级,必须手动删除该班级下的学生
     alter table student add constraint fk_clazzid foreign key (clazzid)
   REFERENCES clazz (clazzid);
 (2)级联cascade ,在删除班级的同时,将学生也删除
 (3)set null ,将班级删除,班级所对应的学生的的班级设置为null
*/
-- 删除外键
alter table student drop foreign key fk_clazzid ;
-- 测试外键是否被删除
insert into student (stuname,clazzid) values ('zhangsan',4); 
delete from student where stuno=7;
-- 重新添加外键
 alter table student add constraint fk_clazzid foreign key (clazzid)
   REFERENCES clazz (clazzid) on delete set null; -- 删除主键表中的数据时,外键表中对应的数据设置为null
delete from clazz where clazzid=2; 
update student set clazzid=1 where stuno=6;
-- 重新添加外键约束
alter table student add constraint fk_clazzid foreign key (clazzid)
   REFERENCES clazz (clazzid) on delete set null on update cascade ;
select * from clazz;
select *from student;
delete from clazz where clazzid=3;

添加外键时要求先查看两个表中的数据,是否一致,否则添加不成功

级联  :删除主键时,外键所对应的数据也都跟着一起删除
alter table student add constraint fk_clazzid foreign key (clazzid)
   REFERENCES clazz (clazzid) ON delete CASCADE ;

 

DML :数据操作语言   insert, update ,delete

 insert :向表中添加测试数据
 语法 : (1)向表中的全部列添加测试数据
             insert into表名 values (值.....);
          (2)向表中的部分列添加测试数据
             insert into  表名 (列名....) values (值....);

          举例:  insert into student values  (1001,'zhagnsan','男'); 
                    insert into student (stuno,stuname) values (1002,'李四');

update:修改表中已存在的数据
         修改一个值   :udpate  表名 set 列名=值  [where ];

        修改多个值  :update 表名 set  列名1=值1,列名2=值2,... [where]
       update emp set job='aaa',sal=222 where empno=7654;


delete :删除表中的数据
      oracle: delete [from ]表名 [where]
       mysql : delete from 表名 [where];

如果你想删除表中全部数据,建议使用truncate table 表名,效率更高
 注意事项:是否有外键约束


如果要删除表结构呢?drop table 表名

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值