一、表的crud操作
指增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete) // select 查询后面再讲SQL Code
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
create table t_emp(empno int, ename varchar(20), esex char(2)); alter table t_emp modify ename varchar(30); alter table t_emp drop esex; alter table t_emp add esex char(2); insert into t_emp(empno, ename, esex) values(1000, 'tom', 'm'); insert into t_emp values(1000, 'maggie', 'f'); /* 还没设置主键,故empno可以相同 */ insert into t_emp(empno, ename) values(1002, 'john'); insert into t_emp(empno, ename, esex) values(1003, null, 'm'); insert into t_emp values(1004, '张三', '男'); show variables like 'character_set%'; /* 查看字符集设置 */ set character_set_database=utf8; /* 也可设置配置文件 */ set names gbk; /* 支持插入中文 */ update t_emp set empno=1001 where ename='maggie'; delete from t_emp where esex is null; delete from t_emp; /* 表结构还在 */ drop table t_emp; /* 整表删除 */ |
二、完整性约束 表完整性约束
主键 (constraint) 外键 (constraint) 用户自定义完整性约束 (check)SQL Code
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 |
create table t_emp(empno int not null primary key, ename varchar(20), esex char(2)); /* 创建时设置主键*/ create table t_emp(empno int, ename varchar(20), esex char(2), primary key (empno)); create table t_emp(empno int, ename varchar(20), esex char(2), constraint PK_EMPNO primary key(empno)); /* 设置主键*/ create table t_emp(empno int, ename varchar(20), esex char(2)); alter table t_emp add constraint PK_EMPNO primary key(empno); /* 这种方式也可以设置主键 */ insert into t_emp values(1000, 'john', 'm'); insert into t_emp values(1000, 'lily', 'f'); /* error,empno不能相等 */ insert into t_emp values(null, 'lily', 'f'); /* error,主键不能为空 */ create table t_emp(empno int, deptno int, ename varchar(20), esex char(2)); alter table t_emp add constraint PK_EMPNO primary key(empno); create table t_dept(deptno int, dname varchar(20)); alter table t_dept add constraint PK_DEPTNO primary key(deptno); alter table t_emp add constraint FK_DEPTNO foreign key(deptno) references t_dept(deptno); /*设置t_emp 的外键为t_dept 的主键 */ set names gbk; insert into t_dept values(2001, '人事部'); insert into t_dept values(2002, '技术部'); insert into t_emp values(1001, 2001, 'john', 'm'); insert into t_emp values(1003, 2003, 'john', 'm'); create table t_test1(id int auto_increment primary key, name varchar(30), age int default 20); insert into t_test1 values(null, 'aaa'); insert into t_test1 values(null, 'aaa', null); insert into t_test1 (name) values( 'bbb'); create table t_test2(id int, name varchar(30), age int); alter table t_test2 add constraint CC_AGE check (age >=18 and age<=60); /* 实际上现在mysql不支持check限制 */ alter table t_test2 add constraint CC_AGE check (length(name)>2); |
三、select 查询
练习前先导入数据: create database scott; use scott; source C:\scott.sql scott.sql 点这 下载
select 单表查询:
SQL Code
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
select empno,ename,job from emp; select * from emp; SELECT empno as '工号',ename '姓名' FROM emp; /* as 后面是别名 */ SELECT empno, '暨南大学' FROM emp; /* 常量列查询 */ SELECT empno, concat(ename,'#') FROM emp; /* concat连接 */ SELECT empno, ename||'#' FROM emp; /* oracle可以用||作为连接符 */ SELECT empno, ename, job FROM emp WHERE ename = 'SMITH' SELECT empno, ename, job FROM emp WHERE ename <> 'SMITH' /* 也可以使用!= */ SELECT empno, ename, sal FROM emp WHERE sal>= 1500 SELECT * FROM emp WHERE d |