sql 修改列级完整性约束语句_SQL(一)创建、管理表及单表查询

好久不见,今天分享的是通过SQL语句创建与管理数据表,还有实现简单的单表查询。

一、通过SQL语句创建与管理数据表

1. 创建表格 create tablexx表名(列名 数据类型 列级完整性约束)

create table student (
    sno char(8) not null primary key,
    sname varchar(8) not null ,
    sex char(2) not null default('男'),
    birth smalldatetime not null,
    classno char(3) not null,
    entrance_date smalldatetime not null,
    home_addr varchar(40) ,
    );
create table course(
    cno char(3) not null primary key,
    cname varchar(20) not null,
    total_perior smallint check(total_perior > 0), /*属性列的check 约束*/
    credit tinyint check(credit > 0 and credit <= 6) ,
     );
create table sc2(
    sno char(8) not null ,
    cno char(3) not null ,
    grade tinyint check(grade >= 0 and grade <= 100),
    primary key(sno,cno),
    foreign key (sno) references student(sno),/*设置外键*/
    foreign key (cno) references course(cno),
     );

2.增加列 alter table 表名 add 列名 属性

alter table student add 
                        sdept char(20) not null,
                        postcode char(6) check(postcode like '[0-9][0-9][0-9][0-9][0-9][0-9]') ; 

alter table student add constraint ck_entrance_date_ check (entrance_date > birth);
alter table sc2 add constraint ck_grade_ default(0) for grade;/*加约束*/
alter table sc2 drop constraint ck_grade_;/*删约束*/

3.插入数据

insert
into student(sno,sname,sex,birth,classno,entrance_date ,home_addr,sdept,postcode)
values('20110001','张虹','男','1992/09/11','051','2011/09/01','南京','计算机系','200413'),
      ('20110002','林红','女','1991/11/12','051','2011/09/01','北京','计算机系','100010'),
      ('20110103','赵青','男','1993/05/11','061','2011/09/01','上海','软件工程','200013');


insert
into course(cno,cname,total_perior,credit)
values('001','高数',96,6),
      ('002','C语言程序设计',80,5),
      ('003','Java语言程序设计',48,3),
      ('004','Visual_Basic',48,4);

insert
into sc2(sno,cno,grade)
values('20110001','001',89),
      ('20110001','002',78),
      ('20110001','003',89),
      ('20110001','004',95),
      ('20110002','002',60),
      ('20110103','001',80);

insert into student(sno,sname,sex)
values('20101101','赵青','男');
insert into sc2
values('20110103','005',80);

5.修改数据

update course
set total_perior = 64, credit = 4
where cno = '002';

update sc2 
set grade = grade*0.8
where cno = '002';

最终得到的student表,course表,sc2表如下:

c7ed78abcc36df42966352adfb89911e.png

二、单表查询

1. 基本查询

(1)查询全部信息,select * from xx表

(2)查询某几列信息,select 列1,列2 from xx表

select * from student;
select sno, sname from student 

48bb97442118a52cee9d8353a8d3df97.png

2. 查询时改变列标题的显示select 列1 标题名1 , 列2标题名2 from xx 表

select sno 学号,sname 学生,home_addr 家庭地址
from student;

58ff87ac6fef498e778358b1a8588ff6.png

3. 条件查询 where 语句

select sno,cno ,grade from sc2
where grade > 80;

select * from sc2
where grade >=75 and grade <=80;

select sno from sc2
where cno = '002' and grade > 80;

select sno,cno from sc2 
where grade is null;

53fd0248d421cae541b43241a02e3579.png

4. 基于IN子句的数据查询(或者的意思)

select * from course where cname in ('高数','C语言程序设计');

b3c43dfd49dfa503d03c276516b9ab80.png

5. between….and (相当于≥70 and ≤80)

select * from sc2 where grade between 70 and 80;

b622df188a664f50e5b7d996e97c73c4.png

6. like语句(实现模糊查询)

select * from student where sname like '张%';/* %表示任意长度的字符串*/
select * from student where sname like '_红%' or sname like '_虹%';/*_(下横线代表任意的单个字符)*/
select credit from course where cname like 'Visual\_Basic' escape '\';  /*escape ‘\’ 表示’\’为换码字符,跟在’\’后面的’_’不再具有通配符的含义,转化为普通字符*/

ee6a6511be87fadbdd0e9991f5c8b764.png

7. top 子句(topn 表示输出前n条记录,top n percent 表示输出的占结果总记录的n%)

select top 3 * from course ;
select top 20 percent * from course ;

15020178142f5ca66b6026f75e43a2a6.png

8. 消除重复行(distinct)

select distinct cno from sc2;

bbb6c16e910028066da9046241c00ba4.png

9. 查询经过计算的值

select sname , DATEDIFF(YEAR,birth,getdate()) 年龄 from student;

6e5b789233c4b4c6cf710e1de2cc6430.png

10. 用orderby 对查询结果进行排序

select * from student order by classno,sno ;
select sname , DATEDIFF(YEAR,birth,getdate()) age  from student order by age desc;

dec08f7bd6952a4b500020c6a6f4b4eb.png

11. 用聚集函数

select count(distinct sno) 学生总人数 from student;
select  AVG(grade) 平均成绩, max(grade) 最高分,min(grade) 最低分 from sc2 where cno = '002';

61f53c8726d61a5d295afd9014b1cb09.png

12. 用group by 分组

select classno,COUNT(*) 班级总人数 from student group by classno;
select sno,SUM(grade) 总成绩 from sc2 group by sno 
having SUM(grade)>150;
select cno, count(*) 选课人数 from sc2 group by cno ;

189d0ee08f1fbad3e1b3444989670245.png

13. Compute 和 compute by 查看明细,分组聚集

select sno , grade from sc2 order by sno compute sum(grade) by sno;
select  sno , grade from sc2 order by sno compute sum(grade), max(grade), min(grade) by sno;

a3134db702ad5854392484f71e185632.png

后面可能会分享复杂查询,视图,存储过程,触发器等,以上,全部。

你可以通过它查询ODBC数据源(包括世面上所有的数据库、TXT/CSV文件、EXCEL文件)的数据。你可以同时执行多条DML语句乃至存贮过程,结果会以你设定的表格、文本框、文件来返回。从数据库导出千万条数据时,效率与DBMS没有什么区别。 1、对数据库事务的支持。允许用户自己来管理用户会话中的事务,这在数据库维护时(如进行表数据修改、删除时)显得非常重要,只有用户自己确认操作无误后,再向系统提交或者回退事务。 2、提供了数据库对象浏览器,使用户更方便地了解数据库的数据字典。通过了解索引的创建情况,使得用户在设计SQL语句时,充分考虑到使用索引,可以帮助用户设计出效率更高的SQL语句。 3、提供了对所有数据库包括Oracle、Sybase、DB2、Informix、MYSQL、MS SQL SERVER、Access、FoxPro的SQL语句进行词法分析,对关键字、函数等显示以不同的颜色,使用户更方便地发现输入SQL语句的错误,同时也便于用户了解在当前的数据库系统中是否支持某函数,是否存在某个系统表或者系统存贮过程。 4、提供了中断正在执行的SQL语句的功能。 5、提供了快速生成某些常用SQL语句(如多种数据库系统的前N条记录)的功能。 6、提供了执行多条SQL语句的支持; 7、提供了对执行的SQL语句中每条SQL语句执行时间的记录,使用户更方便地了解SQL语句的执行效率。 8、更方地对各条SQL语句执行结果进行导出。 9、全面支持SQL语句中的三个SQL部分(DDL、DML、DCL)。 10、实现将执行结果高效、快速地保存至文件。 11、允许用户设定“SQL 执行计划”来定时执行SQL脚本。 强大的功能、友好的操作界面、良好的操作性、跨不同的数据库平台,是您选择<>的理由,它为数据库应用的开发者提供更方便、快捷的支持,同时也是数据库维护的良好助手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值