前言
无论是sqlserver亦或是oracle和mysql,他们的增删改查语句都大体近似,一通百通,掌握了这些命令,就算在数据库的路上跨出了一大步。
文章目录
- 前言
- 一、增
- 二、删
- 三、改
- 四、查
- 思维导图
- 五、约束
一、增
关键字–insert
INSERT INTO语句用于向表中插入新 记录,有两种编写形式。
第一种形式无需指定要插入的列名,只需提供被插入的值即可:
insert into table_name values(value1,value2,value3,...)
第二种形式需要指定列名及被插入的值:
insert into table_name(column1,column2,column3,...) values(value1,value2,value3,...)
关键字–create
CREATE TABLE 语句用于创建数据库中的表。
create table 表名(
(列名1 数据类型),
(列名2 数据类型),
(列名3 数据类型),
...
)
如:create table student(
(sID char(10)),
(sName char(16)),
(sAge int)
)
--ps:这种括号内换行的写法为的只是便于读代码,它即使是写成一行也是可以的,只要你想。
二、删
关键字–delete
DELETE语句用于删除表中的 记录。
delete from 表名 where 某列=某值 --在表中找到某列等于某值的那一条记录,删除
如:delete from student where name='张三'--在表中找到name等于张三的那一条记录,删除
关键字–drop
DROP语句用于删除索引、表和数据库
drop index 表名.索引名
drop table 表名
drop database 数据库名
三、改
关键字–update
UPDATE语句用于更新表中已存在的 记录。
update 表名 set 列名1=值1,列名2=值2,列名3=值三... where 某列=某值 --将表中某列等于某值那一行中,列名1的值改为值1,列名2的值改为值2,列名3的值改为值3...
如:
update grade set math=80 where sId='2002000201' and sName='张三';--在grade表中把学号为2002000201的同学,数学成绩改为80.
关键字–alter
ALTER TABLE语句用于在已有的表中添加、修改或删除列
与update需要做区分,update是修改数据的,alter table是修改表结构的
alter table 表名 add 列名 数据类型
alter table 表名 add 列约束;
如:
--修改约束的例子被放在在下方约束章节中
-- 增加一个列c2
alter table t1 add c2 varchar(16379);
-- 将列c2长度更改
alter table t1 modify column c2 varchar(16234);
-- 删除一个列c2
alter table t1 drop column c2;
--下面的是补充,随便看看知道大概能做些什么就行
修改事项主要有:
- 用ADD关键词添加列和约束(主码、外码、CHECK、UNIQUE等约束);
- 用DROP关键词删除列、约束和索引(含Unique);
- 用MODIFY关键词修改列的定义(数据类型和约束);
- 用RENAME关键词修改列、索引和表的名称;
- 用CHANGE关键词修改列的名称,同时还可以修改其定义(类型和约束)。
全部写法为:
ADD [COLUMN] 列名 数据类型 [列约束]
[FIRST | AFTER col_name]
| ADD {INDEX|KEY} [索引名] [类型] (列1,...)
| ADD [CONSTRAINT [约束名]] 主码约束
| ADD [CONSTRAINT [约束名]] UNIQUE约束
| ADD [CONSTRAINT [约束名]] 外码约束
| ADD [CONSTRAINT [约束名]] CHECK约束
| DROP {CHECK|CONSTRAINT} 约束名
| ALTER [COLUMN] 列名 {SET DEFAULT {常量 | (表达式)} | DROP DEFAULT}
| CHANGE [COLUMN] 列名 新列名 数据类型 [列约束]
[FIRST | AFTER col_name]
| DROP [COLUMN] 列名
| DROP {INDEX|KEY} 索引名
| DROP PRIMARY KEY
| DROP FOREIGN KEY fk_symbol
| MODIFY [COLUMN] 列名 数据类型 [列约束]
[FIRST | AFTER col_name]
| RENAME COLUMN 列名 TO 新列名
| RENAME {INDEX|KEY} 索引名 TO 新索引名
| RENAME [TO|AS] 新表名
四、查
关键字–select
SELECT语句用于从表中查找数据。
select 列名 from 表名
或
select * from 表名 --查询表中所有数据
如:select * from student --查看student表中所有数据
select sId,sName,sTelephone from student--查看student表中的sId、sName、sTelephone三列
思维导图
五、约束
若想在创建表时添加约束,有如下几个语句可以使用:
关键字–check、primary key、unique、foreign key、not null、default
CHECK语句用于创建约束。
default xxx 设置默认值
check xxx 创建约束
check语句后面需要跟判断语句,判断为'真'的语句可以被输入,判断为'假'的语句会提示与约束冲突,不予输入。
判断语句有很多,常见的如:
in ('A','B','C') --输入的值是括号内则判断为'真'
between 0 and 10 --输入的值在0到10之间则判断为'真'
A>B and A<C --输入的值在B到C之间则判断为'真'
primary key 设置主键约束
not null 不允许空值
foreign Key 设置外键约束
unique 不能重复
如:
create table student((sID char(10)) primary key,--主键
(sName char(16)),
(sSex char(2)) check sSex in('男','女'),--in语句,表示只能选取括号内的值,也可以写作 check(性别='男'or 性别='女'),
(sAge int) check sAge (between 0 and 130), --与in语句不同,between...and...语句会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
(sNation char(20)) default '汉',--默认值
(sTelephone like '1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')--电话号码,开头必须为1,后面跟了十个[0-9],表示这后面十位字符只能从0-9中选。其中,方括号内加上数字是一种通配符的表示方法,可以单独记忆一下。
);
此外,若是表已经创好,却有约束忘了加(或是更改约束),咋办呢?这时需要用到前面提到的ALTER语句进行修改:
alter table 表名 add 列约束;
如:
alter table student add default '中国' for nation,
check (sex in('男','女')),
check (telephone like '1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
check (credithour between 0 and 134);