创建
以上的图就是sql中创建表的大致使用方法啦,每一个椭圆或者圆就是sql固定的语法,然后矩形就是我们自己自定义的,然后箭头代表着输入的顺序,如果箭头又回到某个起始处,表示这可以是一个循环,比如定义多个列,以下就带大家一起走一遍这个流程吧
我们按照这个图的输入顺序一个一个写
ok,第一个进入到一个椭圆,我们抄下来
create table
下一步进入到一个矩形,可以输入表名,那我就定义一个学生表
create table Student
下一步是一个圆,我们抄下来
create table Student (
下一步是一个矩形,可以输入列名,那我就定义一个名字列
create table Student (
name
下一步是一个矩形,可以输入列的类型,我们定义为varchar(10),表示变长,最多10个字符
create table Student (
name varchar(10)
下一步的箭头分叉,表示有多种选择,换句话说你可以不写not null, unique这些,这里为了演示,我就写了,大家知道能够忽略就行,sql中-- 表示注释
-- not null 表示该列的值不能为空
-- unique 表示该列的值唯一,即不能重复
-- default 表示默认,后面可以自己设置默认值,如果列没有初始值,就会自动使用默认值
-- 这三个可以一起使用
create table Student (
name varchar(10) not null unique default Jack
上一步我们直接写了了三个椭圆,若依这里是到default写完后,下一步又是一个分叉,我们这里走左边(即输入一个逗号)就构成了一个循环,表示再定义三个列,一个年龄,一个学号,一个系名
create table Student (
name varchar(10) not null unique default Jack,
age int,
id char(5) not null unique,
dept_name varchar(20) not null,
ok,我们又回到那个箭头分叉处了,这里我们选择结束列的定义,然后进入主码的定义,同样这里也可以省略,这里就快一点了我们就不一步一步输入了,我们将id列设置为主码
create table Student (
name varchar(10) not null unique default Jack,
age int,
id char(5) not null unique,
dept_name varchar(20) not null,
primary key (id),
ok,然后我们进入外码的定义,同样这里也可以省略,我们将dept_name列设置为外码,并且假定已经有一个表department了, 外键名我们就省略了
create table Student (
name varchar(10) not null unique default Jack,
age int,
id char(5) not null unique,
dept_name varchar(20) not null,
primary key (id),
foreign key (dept_name) references department, -- 表示dept_name是引用自表department
这里我们进入了 on delete 的范围了,然后同样可以省略,因为它已经设置了默认值,就是那个有下划线的,不过为了演示,我们不省略它
-- on delete 约束用于定义在删除父表(即引用表)中的记录时,子表(即被引用表)中相关记录的处理方式
-- restrict 当尝试删除父表中的记录时,如果子表中存在相关的记录,则会阻止删除操作
-- cascade 当父表中的记录被删除时,子表中所有相关的记录也会被自动删除
-- set null 当父表中的记录被删除时,子表中相关记录的外键列会被设置为 NULL
create table Student (
name varchar(10) not null unique default Jack,
age int,
id char(5) not null unique,
dept_name varchar(20) not null,
primary key (id),
foreign key (dept_name) references department on delete cascade
下一步我们进入到check范围,同样可以省略,也可以循环,我们这里就写一个就行了
-- check 约束用来限制列值
create table Student (
name varchar(10) not null unique default Jack,
age int,
id char(5) not null unique,
dept_name varchar(20) not null,
primary key (id),
foreign key (dept_name) references department on delete cascade,
check (age >= 18 and age <= 50) --- 确保年龄在18到50岁
在下一步就结束了,我们输入右括号和分号,就表示这个表的定义完成了
create table Student (
name varchar(10) not null unique default Jack,
age int,
id char(5) not null unique,
dept_name varchar(20) not null,
primary key (id),
foreign key (dept_name) references department on delete cascade,
check (age >= 18 and age <= 50)
);
总结
create table 表名 (...);
这样的格式表示创建表,括号内是表的具体定义,分号表示表的定义的结束- 逗号用来表示表中每行语句的结束
- 主要就是 列的定义,主码的定义, 外码的定义 以及 check的定义, 有些是可以省略的
- 最后,最重要的一点是,每个数据库的sql语句可能会有点差别,具体的语法大家一定要去看相关资料,不过大致的创建过程是一样的
查询
这个看的方法和上一节的是一样的,这里我就给个例子,然后说下每个子句的作用
-- select 用来挑选最后返回的结果列
-- distinct 表示去除重复行
-- as 表示重命名
select distinct name as distinct_name, count(id) as num_student
from Student -- from表示来源表
where age = 20 -- 对选中的记录进行筛选
group by dept_name -- 表示根据系名进行分组,这会对每个分组进行count(id)计数
having num_student > 100 -- 只选择那些有100人以上的系
order by id desc; -- order by 表示排序,然后desc是降序,asc是升序(默认)
总结
这里只演示了些比较简单的,还有连接表,嵌套查询等这里就不演示
然后,需要注意的是where子句是对行进行筛选,having子句是对组进行筛选,两者操作的对象是不一样的
修改
update
用于更新表中的现有记录
update table_name
set column1 = value1, column2 = value2, ...
where condition;
delete
用于删除表中的数据,不是删除表!!
delete from table_name
where condition;
insert
用于向表中插入新记录
insert into table_name (column1, column2, ...)
values (value1, value2, ...);
drop
删除表
drop table table_name;
总结
以上都是展示基础用法,更高级的用法请大家查阅相关资料
标签:unique,varchar,name,--,sql,------,table,数据库系统,null From: https://www.cnblogs.com/dylaris/p/18430864