在学习了数据库理论以及数据库创建后,今天主要学习用sql语句为表添加约束,
聚合函数,以及select的一些查询练习。
约束中主要有主键约束,唯一约束,非空约束,外键,以及默认值和一些字段范围的约束
在今天的练习中,对这些主外键进行正确规范的命名是很重要的,否则后期要管理编辑的时候会很麻烦。
比如主键就用fk开始命名。
在进行模糊查询时要用到通配符感觉和正则表达式有一些像。哈哈。
数据库表结构:
--部门表
CREATE TABLE DEPARTMENT
(
DEPT_ID INT IDENTITY(1,1),
DEPT_NAME VARCHAR(50)
)
GO
--员工表
CREATE TABLE EMPLOYEE
(
EMP_ID INT IDENTITY(1,1),--员工编号
EMP_NO VARCHAR(50),--身份证号码
EMP_NAME VARCHAR(50),--姓名
EMP_GENDER CHAR(2),--性别
EMP_JOINDATE DATETIME,--入职日期
EMP_AGE INT,--年龄
EMP_ADDRESS VARCHAR(500),--地址
EMP_PHONE VARCHAR(100),--电话
EMP_DEPTID INT,--部门Id
EMP_EMAIL VARCHAR(50)
)
GO
---------------------------------
删除表中的一列
alter table employee drop column emp_adress
增加一列
alter table employee add empdrr varchar(1000)
修改emp_email数据类型
alter table employeee alter colunm emp_email varchar(200)
为empid增加一个主键约束
alter table employee add constraint pk_employee_emp_id primary key(emp_id)
非空约束,为empname增加一个非空约束,修改列为not null,增加一个非空约束其实就是修改列
alter table employee alter column emp_name varchar(50) not null
为empname增加一个唯一约束
alter table employee add constraint df_employee_emp_gender default('男') for emp_gender
为年龄增加一个检查约束:年龄必须在0-120岁之间,含0岁与120岁
alter table employee add constraint ck_employee_emp_age check(emp_age>=0 and emp_age<=120)
增加外键约束,表employee中有一列empdeptid引用tbldepartment表中的deptid
alter table employee add constraint pk_department_dept_id primary key(dept_id)
alter table employee add constraint fk_employee_department foreign key(emp_deptid) references department(dept_id) on delete cascade
删除某个名字的约束
alter table employee drop constraint fk_employee_department
用一条语句为表增加多个约束
alter table employee add
constraint ......,
constraint...
获取当前系统时间
select getdate()
select sysdatetime()
只查询表中的前10条数据
select top 10 * from mystudent
也可以按百分数来查询
select top 20 percent * from mystudent
distinct表示对查询出的结果集,进行去除重复
只有当出现出的结果集中存在完全重复的多行,这时才会把所有的重复行只保留一行,其他都去掉。
模糊查询:
数据中用%表示任意多个字符
下划线_表示一个字符
如果想使用普通%符号,就在加[]
[^]表示非,同regex
查询所有数学成绩为null的人的信息
select * from mystudent where fmath is null
order不仅可以按照某列来排序,也可以按照表达式排序
select * ,(fmath+fenglish) as 总分,平均分=(FMath+FEnglish)/2
from MyStudent order by (FMath+FEnglish)/2 desc
由于order by是在最后才执行,所以在执行order by的时候,其他语句已经执行了,列也已经起了别名了,所以可以在order by中欧冠直接使用别名
聚合函数,以及select的一些查询练习。
约束中主要有主键约束,唯一约束,非空约束,外键,以及默认值和一些字段范围的约束
在今天的练习中,对这些主外键进行正确规范的命名是很重要的,否则后期要管理编辑的时候会很麻烦。
比如主键就用fk开始命名。
在进行模糊查询时要用到通配符感觉和正则表达式有一些像。哈哈。
数据库表结构:
--部门表
CREATE TABLE DEPARTMENT
(
DEPT_ID INT IDENTITY(1,1),
DEPT_NAME VARCHAR(50)
)
GO
--员工表
CREATE TABLE EMPLOYEE
(
EMP_ID INT IDENTITY(1,1),--员工编号
EMP_NO VARCHAR(50),--身份证号码
EMP_NAME VARCHAR(50),--姓名
EMP_GENDER CHAR(2),--性别
EMP_JOINDATE DATETIME,--入职日期
EMP_AGE INT,--年龄
EMP_ADDRESS VARCHAR(500),--地址
EMP_PHONE VARCHAR(100),--电话
EMP_DEPTID INT,--部门Id
EMP_EMAIL VARCHAR(50)
)
GO
---------------------------------
删除表中的一列
alter table employee drop column emp_adress
增加一列
alter table employee add empdrr varchar(1000)
修改emp_email数据类型
alter table employeee alter colunm emp_email varchar(200)
为empid增加一个主键约束
alter table employee add constraint pk_employee_emp_id primary key(emp_id)
非空约束,为empname增加一个非空约束,修改列为not null,增加一个非空约束其实就是修改列
alter table employee alter column emp_name varchar(50) not null
为empname增加一个唯一约束
alter table employee add constraint df_employee_emp_gender default('男') for emp_gender
为年龄增加一个检查约束:年龄必须在0-120岁之间,含0岁与120岁
alter table employee add constraint ck_employee_emp_age check(emp_age>=0 and emp_age<=120)
增加外键约束,表employee中有一列empdeptid引用tbldepartment表中的deptid
alter table employee add constraint pk_department_dept_id primary key(dept_id)
alter table employee add constraint fk_employee_department foreign key(emp_deptid) references department(dept_id) on delete cascade
删除某个名字的约束
alter table employee drop constraint fk_employee_department
用一条语句为表增加多个约束
alter table employee add
constraint ......,
constraint...
获取当前系统时间
select getdate()
select sysdatetime()
只查询表中的前10条数据
select top 10 * from mystudent
也可以按百分数来查询
select top 20 percent * from mystudent
distinct表示对查询出的结果集,进行去除重复
只有当出现出的结果集中存在完全重复的多行,这时才会把所有的重复行只保留一行,其他都去掉。
模糊查询:
数据中用%表示任意多个字符
下划线_表示一个字符
如果想使用普通%符号,就在加[]
[^]表示非,同regex
查询所有数学成绩为null的人的信息
select * from mystudent where fmath is null
order不仅可以按照某列来排序,也可以按照表达式排序
select * ,(fmath+fenglish) as 总分,平均分=(FMath+FEnglish)/2
from MyStudent order by (FMath+FEnglish)/2 desc
由于order by是在最后才执行,所以在执行order by的时候,其他语句已经执行了,列也已经起了别名了,所以可以在order by中欧冠直接使用别名