一、新建表
新建学生表(student):
create table student
(
id int not null,
name varchar2(50),
sex varchar2(25),
birthday varchar2(225),
createtime timestamp,
primary key(id),
t_id int FOREIGN KEY REFERENCES teacher(t_id) //一个外键
);
<!--可建立联合主键,例如primary key(id,name),这样id和name都是主键,且id不允许重复,name也不允许重复。-->
给表添加主键、外键:
<!--为没有添加主键的表添加主键,这里是复合主键的例子-->
ALTER TABLE student ADD CONSTRAINT pk_studentid PRIMARY KEY (id,name)
<!--为已经添加“有名字的”主键的表删除主键,这里删除的名为pk_studentid的主键-->
ALTER TABLE student DROP CONSTRAINT pk_studentid
<!--为没有添加外键的表添加外键,这里是添加多个外键的例子-->
ALTER TABLE student ADD CONSTRAINT fk_students FOREIGN KEY (t_id) REFERENCES teachers(t_id)
<!--为已经添加“有名字的”外键的表删除外键,这里删除的名为fk_students的外键-->
ALTER TABLE student DROP CONSTRAINT fk_students
给表和字段添加注释:
<!--给表添加注释-->
comment on table student is '学生基本信息';
<!--给表中字段添加注释-->
comment on column student.birthday is '出生日期';
建立自增序列sequence(可选):
CREATE SEQUENCE student_sequence
increment by 1 -- 每次递增1
start with 1 -- 从1开始
nomaxvalue -- 没有最大值
minvalue 1 -- 最小值=1
NOCYCLE -- 不循环
建立触发器trigger(可选):
CREATE OR REPLACE TRIGGER BeforeStudentInsert BEFORE INSERT ON student FOR EACH ROW BEGIN SELECT student_sequence.nextval INTO :new.id FROM dual;
END;
二、对表的修改
1.给表重命名
语法:alter table table_name rename to new_table_name;
例子:alter table student rename to new_student;
2.给表添加字段
语法:alter table tablename add (column datatype [default value][null/not null],….);
例子: alter table student add (teachername varchar2(30) default ‘张三’ not null);
3.修改表字段
语法:alter table tablename modify (column datatype [default value][null/not null],….);
例子:alter table student modify (teachername varchar2(30) default ‘张三’ not null);
4.删除表字段
语法:alter table tablename drop (column);
或者alter table tablename drop column column_name
例子:alter table student drop column teachername;
5.主键约束
添加有名称的主键约束:alter table table_name add constraint pk_name primary key (id);
删除有名称的主键约束:alter table table_name drop constraint pk_name;
6.修改表字段类型
例子:alter table student alter column birthday decimal(18, 4) not null
三、简单的sql语句(增删改查)
1.插入(insert)
向Student表中插入一条数据:
语法:insert into 表名称 values (值1,值2,······) 例子:insert into Student values (1,'zhangsan','男','1992-01-01')
2.删除(delete)
(1)删除特定条件的数据
语法:DELETE FROM 表名称 WHERE 列名称 = 值 例子:delete from Student where name ='zhangsan'
(2)删除表中全部数据
语法:DELETE FROM 表名称 例子:delete from Student
(3)清空表数据:
语法:TRUNCATE TABLE 表名称
例子:truncate table tb <!-- 只清空表中数据,但是保留表 -->
(4)删除表:
语法:DROP TABLE 表名称
例子:drop table Student <!-- drop会连表一起删除 -->
3.更新(update)
语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 例子:update Student set name = 'lisi',sex='男' where id=1
4.查询
(1)查询表中所有数据
语法: select * from 表名
例子: select * from Student
(2)查询表中满足某条件的数据
语法:SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值 例子:select * from Student where sex= '男' and name='lisi'
(3)模糊查询
语法:SELECT 列 FROM 表名称 WHERE 列 LIKE 值 例子:SELECT * FROM Student WHERE name LIKE 'li'
(4)去除查询结果中的重复值
用distinct可以去处重复值,保留相同值,加到查询内容的前面做修饰。
例子:SELECT distinct name FROM Student <!-- 这会去除重复的名字,只保留一条重复的数据显示 -->
(5)查询结果排序
升序:
select * FROM student ORDER BY id <!--order by 默认是升序-->
降序:
select * FROM Student ORDER BY id DESC <!--在后面加desc则排序规则是降序-->