今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础。现在趁回忆得起来,将数据库知识简单整理如下:

一、建表指令

比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。

CREATE TABLE Student

(Sno    CHAR(10) NOT NULL UNIQUE,

Sname  CHAR(20) UNIQUE,

Ssex    char(2),

Sage    INT,

Sdept  char(15)

)

二、增加列、删除列、修改列

1、增加列Stel

Alter table Student ADD Stel Char(12)

2、删除列Stel

Alter Table Student DROP COLUMN Stel

3、修改列Sdept

  1. 修改列名称,语法:alter table 表名称 change 字段名称 新名称 类型[ 约束]

三、建立与删除索引

1、在表Student中建立按年龄Sage升序建立索引

建立索引:Create  INDEX  S_INDEX  ON  Student(Sage)

2、删除索引

DROP  INDEX  Student  S_INDEX

四、连接查询。

在对表进行连接时,最常用的连接条件是等值连接,也就是使两个表中对应列相等所进行的连接通常一个列是所在表的主键,另一个列是所在表的主键或外键,只有这样的等值连接才有意义。(隐式内连接)

比如说有两张表分别为courses表(cno,cname,credit)和enrolls表(sno,cno,grade)。

查询所有学生所选的课程名称:

Select  sno,  enrolls.cno, cname, grade  from  enrolls, courses WHERE enrolls.cno = courses.cno

五、单表查询时,去掉重复行

比如查询Student表中所有系的名称,去掉重复行

Select  distinct  age  From  student

六、常用条件表达式运算符IN,NOT IN;between,and,not like.

在上面的Student表和enrolls表中,查询成绩在80分以上的的学号和姓名。   成绩在80分以上的为子查询  然后让学生的学号在子查询的结果中

Select  sno,  sname  From  Student WHERE  sno  IN (select sno FROM enrolls Where grade > 80)

上面的SQL语句也是嵌套查询。

七、有个需用到having字句的,具体题目忘了。

Having子句,筛选出只满足指定条件的组。注意的是,该子句只能同GROUP BY子句配合使用,筛选出符合条件的分组信息。

类似题目如下:查询Student表中每个系有三个以上的学生的所在系。

Select  department  From  Student  Group  BY department  Having  COUNT(*) >= 3。  这个好像不对

八、插入数据

1、单行插入,比如在上面的Student表中插入学生王强的信息。

Insert  into  Student(Sno,Sname,Ssex,Sage,Sdept)

Values(‘2005012’,’王强’,’男’,18,’计算机’)

  insert  多个value  这样执行效率要 小于 values()

2、多行插入,比如每个学生都要修操作系统c2这门课,将选课信息加入表enrolls中。

INSERT  INTTO  enrolls(sno,cno)

SELECT  Sno, ‘c2’  FROM  Student

九、修改数据

比如给enrolls这个表中选修了操作系统这门课的学生的成绩修改为60分。

UPDATE enrolls

SET grade = 60

WHER cno IN

(SELECT  cno  FROM  courses  WHERE  cname  = ‘操作系统’)

十、删除数据

比如删除Student表中年龄在20岁以上的学生

Delete   from  Student   where  Sage > 20

删除整张表的数据 delete from Student

十一、存储过程(两个参数,根据输入的参数查询好数据后返回给输出的参数)

存储过程案例:

比如创建一个存储过程procGetDepName,它带有1个输入参数@sno,还带有1个输出参数@DepartmentName,功能:根据输入的学号,找到该生所在的院系,输出院系名称。

create procedure procGetDepName

@sno nvarchar(10),

@DepartmentName nvarchar(20) output

as

begin

select @DepartmentName = DepartmentName

from Department d, Student s

where d.DepartmentID = s.DepartmentID and

s.sno = @sno

end

十二、数据库常用数据类型和作用。

第一大类:整数数据

bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.

int:以4个字节来存储正负数。可存储范围为:-2^31至2^31-1。

smallint:以2个字节来存储正负数。存储范围为:-2^15至2^15-1。

tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1。

第二大类:精确数值数据

numeric:表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化。

decimal:和numeric差不多。

第三大类:近似浮点数值数据

float:用8个字节来存储数据.最多可为53位。范围为:-1.79E+308至1.79E+308。

real:位数为24,用4个字节,数字范围:-3.04E+38至3.04E+38。

第四大类:日期时间数据

datatime:表示时间范围可以表示从1753/1/1至9999/12/31,时间可以表示到3.33/1000秒.使用8个字节。

smalldatetime:表示时间范围可以表示从1900/1/1至2079/12/31,使用4个字节。

第五大类:字符串数据

char:长度是设定的,不可变的。最短为1字节,最长为8000个字节.不足的长度会用空白补上。

varchar:长度是可变的。最短为1字节,最长为8000个字节,尾部的空白会去掉。

text:长宽也是设定的,最长可以存放2G的数据。

第六大类:Unincode字符串数据

nchar:长度是设定的,最短为1字节,最长为4000个字节。不足的长度会用空白补上,储存一个字符需要2个字节。

nvarchar:长度是设定的,可变的。最短为1字节,最长为4000个字节.尾部的空白会去掉。储存一个字符需要2个字节。

ntext:长度是设定的,最短为1字节,最长为2G.尾部的空白会去掉,储存一个字符需要2个字节。

第七大类:货币数据类型

money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8 个字节。

smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节。

第八大类:标记数据

timestamp:该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新.

uniqueidentifier:用于识别数据库里面许多个表的唯一一个记录.

第九大类:二进制码字符串数据

binary:固定长度的二进制码字符串字段,最短为1,最长为8000。

varbinary:与binary差异为数据尾部是00时,varbinary会将其去掉。

image:为可变长度的二进制码字符串,最长2G。

十三、C的内容

主要考C的内存分配,for循环的局部性等基础知识,主要是林锐那本高质量C/C++里面后面的习题。

十四、C++

基本不会,因为应聘的是C++,也因为这个,被笔试给鄙视掉了

面试题: 数据库 真实面试题已看1 操作语句 存储过程 挺好 sql语句练习 有用的更多相关文章

  1. [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]

    [MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...

  2. 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句

    MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...

  3. 面试题:3年工作经验 已看1 有用 memcache和redis有什么区别

    此内容偏中高级,适合有三年经验者. 1.       java中wait和sleep有什么区别?多线程条件下如何保证数据安全? 答:最大区别是等待时wait会释放锁(乐观锁),而sleep会一直持有锁 ...

  4. 打开黑盒:从 MySQL架构设计出发,看它是如何执行一条 SQL语句的

    1.把MySQL当个黑盒子一样执行SQL语句 我们的系统采用数据库连接池的方式去并发访问数据库,然后数据库自己其实也会维护一个连接池,其中管理了各种系统跟这台数据库服务器建立的所有连接 当我们的系统只 ...

  5. SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

    创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...

  6. 数据库文件导入导出操作,以及赋予权限SQL语句

    1.导出数据库xxxx和tlog(经过测试,没有问题)# /data/mysql/bin/mysqldump -u root -ppassword qq9x | gzip > /home/xxx ...

  7. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  8. 关于mdb数据库在插入过程中报错->Syntax error in INSERT INTO statement.(sql语句没问题)

    今天,在做mdb数据库的增删改查的时候,代码报错插入语句有问题,但是在数据库中正常执行,苦苦探索了多次,终于找到了问题所在. 结果如图: 上面是报错 下面是解决方案   解决方案:主要原因是offic ...

  9. 看懂MSSQL执行计划,分析SQL语句执行情况

    打开SQL执行计划窗口 执行计划的图表是从右向左看的 SQL Server有几种方式查找数据记录 [Table Scan] 表扫描(最慢),对表记录逐行进行检查 [Clustered Index Sc ...

随机推荐

  1. JS中如何获取<Select>中value和text的值

    原文地址:JS中如何获取<Select>中value和text的值 html代码: <select id = "city" onchange="chan ...

  2. [原创]java WEB学习笔记23:MVC案例完整实践(part 4)---模糊查询的设计与实现

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. [原创]java WEB学习笔记21:MVC案例完整实践(part 2)---DAO层设计

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. 95th percentile concentration

    很多网络流量监控软件都提供了一个95th的值,开始一直不太理解,终于在solarwinds官网找到答案. 95th百分点指的是所给数集中超过其95%的数.它是一个统计学上的概念.对于某个接口,准确统计 ...

  5. jquery的几个语法总结和注意事项

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  6. ES查看segment大小

    摘自:http://www.aboutyun.com/thread-17078-1-1.html Segment Memory Segment不是file吗?segment memory又是什么?前面 ...

  7. Oracle学习笔记_03_单行函数

    1.SQL函数: 单行函数.多行函数 单行函数:       操作数据对象       接受参数返回一个结果       只对一行进行变换       每行返回一个结果       可以转换数据类型  ...

  8. 小程序wxss编译错误

    控制台输入openVendor() ,清除里面的wcsc.exe,然后重启工具.

  9. redisCheckMem脚本

    最近维护的redis cluster需要扫描每个实例的内存使用率,首先我们需要获取实例已经使用的内存,获取实例的最大内存配额,两个值相比就能获取到内存使用比例. 实例的最大内存获取方法: $REDIS ...

  10. 【LeetCode】023. Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题 ...