关键单词整理
- create table建立表格
数据类型
- 数值型
bit 取值范围是1~64,默认为1
int 带符号的范围是-2147483648~2147483647
bigint 比int的范围大
decimal 小数 - 字符型
varchar 字符串类型,4000字节
longtext 长文本类型,无限
enum 枚举(多选一)
set 集合 - 日期型
DATE 保存的是年月日
DATETIME 年月日时分秒 - 插入数据
- 语法:INSERT INTO 表名(列名列表) VALUES(值列表),值列表中值的个数及数据类型必须与列名列表一致
- 字符型用''
- 日期型用'':mysql默认格式为yyyy-MM-dd
约束(五大约束类型,mysql只有4种)
- 1、主键:primary key,作用列不能有null,且不能有重复数据一张表只能有一个主键,但是可以联合主键
- 2、唯一键:unique,不能有重复数据,可以为null,可以有多个唯一键
- 3、非空约束:not null
- 4、外键:foreign key,存在依赖
- 5、检查型约束check(mysql中无效)
auto_increment, -- 自增长主键
建表和约束
/*
注释
*/
-- 单行注释
-- 建表语句
CREATE TABLE 表名(
列名1(字段) 数据类型 [默认值 约束],
列名2(字段) 数据类型 [默认值 约束],
...
)
-- 数据类型
-- 数值型
BIT 取值范围是1~64,默认为1
INT 带符号的范围是-2147483648~2147483647
BIGINT 比int的范围大
DECIMAL 小数
-- 字符型
VARCHAR 字符串类型,4000字节
LONGTEXT 长文本类型,无限
enum 枚举(多选一)
SET 集合
-- 日期型
DATE 保存的是年月日
DATETIME 年月日时分秒
-- 建立第一张表student1
CREATE TABLE student1(
id INT(9), -- id
stuname VARCHAR(100), -- 名字
age int(3), -- 年龄
gender enum('男','女'), -- 性别
birthday DATE,-- 出生日期
hobby SET('足球','学习','游戏','吃饭'), -- 爱好
height DECIMAL(3,2) -- 身高,(一共三位,小数占两位)
)
-- 插入数据
-- 语法:INSERT INTO 表名(列名列表) VALUES(值列表)
-- 值列表中值的个数及数据类型必须与列名列表一致
-- 字符型用''
-- 日期型用'':mysql默认格式为yyyy-MM-dd
INSERT INTO student1(id,stuname,age,gender,birthday,hobby,height)
VALUES(9527,'华安',23,'男','2019-3-20','足球,游戏',1.99)
INSERT INTO student1(id,stuname,age,gender,birthday,hobby,height)
VALUES(9527,'华安他哥',23,'女','2019-3-20','足球,游戏,吃饭',1.29)
INSERT INTO student1(id,stuname,age)
VALUES(9527,'华安他2弟',27)
-- 没有列名列表,默认向所有列插入数据,并且顺序和原表一样
INSERT INTO student1(id,stuname,age)
VALUES(9527,'华安他2弟',27)
CREATE TABLE student2(
id INT(9), -- id
stuname VARCHAR(100), -- 名字
age int(3) DEFAULT 0, -- 年龄
gender enum('男','女') DEFAULT '男' , -- 性别
birthday DATE DEFAULT '1999-9-9',-- 出生日期
hobby SET('足球','学习','游戏','吃饭'), -- 爱好
height DECIMAL(3,2) -- 身高,(一共三位,小数占两位)
)
-- 加数据时一起执行
INSERT INTO student2(id,stuname)
VALUES(9531,'华安他3弟');
INSERT INTO student2(id,stuname)
VALUES(9531,'华安他3弟');
INSERT INTO student2(id,stuname)
VALUES(9531,'华安他3弟');
--约束(五大约束类型,mysql只有4种)
-- 1、主键:primary key,作用列不能有null,且不能有重复数据
-- 一张表只能有一个主键,但是可以联合主键
-- 2、唯一键:unique,不能有重复数据,可以为null,可以有多个唯一键
-- 3、非空约束:not null
-- 4、外键:foreign key,存在依赖
-- 5、检查型约束check(mysql中无效)
create table demo1(
id int(9),
name varchar(50),
primary key(id)
)
insert into demo1 values(null,'leo')
--主键
create table demo2(
id int(9),
name varchar(50),
primary key(id),
unique(name)
)
-- 唯一键
create table demo3(
id int(9),
name varchar(50),
idcard varchar(18),
primary key(id),
unique(name),
unique(idcard)
)
-- 非空约束
create table demo4(
id int(9),
name varchar(50) default '张三' not null, -- default是默认值的意思
idcard varchar(18),
primary key(id),
unique(name),
)
-- 外键:外键依赖的列必须是一张表的主键或唯一键
-- 班级表
CREATE TABLE class(
cid int(9),
cname varchar(100),
primary key(cid)
)
insert into class(cid,cname) values(1001,'java1班');
insert into class(cid,cname) values(1002,'java2班');
-- 学员表
-- 外键举例↓↓↓↓↓↓↓↓
create table student3(
`sid` int(9),
`sname` varchar(100) default '' not null,
`cno` int(9),
primary key(sid),
foreign key(cno) references class(cid)
)
insert into student3(sid,sname,cno) values (9004,'赵六',1005)
-- 创建两张表
-- dept 部门表
-- deptno 部门编号 整数,长度9,主键
-- dname 部门名称 字符,长度100,非空,默认值空串
-- loc 工作地点 字符,长度50,非空,默认值空串
-- 向dept表中存入4条记录
-- 10 accounting new york
-- 20 research dallas
-- 30 sales chicago
-- 40 operations boston
create table dept(
deptno int(9),
dname varchar(200)default ''not null,
loc varchar(100)default ''not null,
primary key (deptno)
)
insert into dept(deptno,dname,loc) values (10,'accounting','new york');
insert into dept(deptno,dname,loc) values (20,'research','dallas');
insert into dept(deptno,dname,loc) values (30,'sales','chicago');
insert into dept(deptno,dname,loc) values (40,'operations','boston');
-- emp 员工表
-- empno 员工编号 整数,长度为4,主键
-- ename 员工姓名 字符,长度为50,非空,默认值空串
-- job 岗位 字符,长度为20,非空,默认值空串
-- mgr 经理编号 整数,长度为4
-- hiredate 入职日期 日期(年月日)
-- sal 薪水 小数,(小数点保留2位,总长度7位)
-- comm 奖金 小数,(小数点保留2位,总长度7位)
-- deptno 部门编号 整数,长度9,外键
create table emp(
empno int(9),-- 主键
ename varchar(100)default'' not null,
job varchar(40)default'' not null,
mgr int(4),
hiredate date,
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno int(9),
foreign key(deptno) references dept(deptno)
)
insert into emp values (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
insert into emp values (7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30);
insert into emp values (7521,'WARD','SALESMAN',7698,'1981-2-22',1250,500,30);
insert into emp values (7566,'JONES','MANAGER',7839,'1981-4-2',2975,NULL,20);
insert into emp values (7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250,1400,30);
insert into emp values (7698,'BLAKE','MANAGER',7839,'1981-5-1',2850,NULL,30);
insert into emp values (7782,'CLARK','MANAGER',7839,'1981-6-9',2450,NULL,10);
insert into emp values (7788,'SCOTT','ANALYST',7566,'1987-4-19',3080,NULL,20);
insert into emp values (7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
insert into emp values (7844,'TURNER','SALESMAN',7698,'1981-9-8',1500,0,30);
insert into emp values (7876,'ADAMS','CLERK',7788,'1987-5-23',1100,NULL,20);
insert into emp values (7900,'JAMES','CLERK',7698,'1981-12-3',950,NULL,30);
insert into emp values (7902,'FORD','ANALYST',7566,'1981-12-3',3000,NULL,20);
insert into emp values (7934,'MILLER','CLERK',7782,'1982-1-23',1300,NULL,10);
-- 建表(默认值约束)和插入数据
-- 自增长主键
create table student5(
id int(9) auto_increment, -- 自增长主键
name varchar(100),
primary key(id)
)auto_increment = 100
insert into student5(name) values('张三')