2019-03-20 mysql
/*
多行
注释
*/
-- 单行注释
-- 建表语句
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),
stuname VARCHAR (100),
age INT (3),
gender ENUM ('男', '女'),
birthday DATE,
hobby SET('足球','学习','游戏','吃饭'),
height DECIMAL(3,2)
)
-- 插入数据
-- 值列表中值的个数及数据类型必须与列名一致
-- 字符型''
-- 日期型mysql默认yyyy-MM-dd
-- 语法 INSERT INTO 表名(列名列表) VALUES(值列表)
-- 枚举类型 多选一
-- 集合类型 多选多
-- 没有列名的列表 默认向表中所有列插入数据 顺序与类型必须与原表一致
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(9528,'华安他哥',24,'女','2019-3-24','吃饭,游戏',1.89)
INSERT INTO student1(id,stuname,age,gender,birthday,hobby,height)
VALUES(9529,'华安他姐',26,'女','2019-3-25','吃饭,学习',1.79)
INSERT INTO student1(id,stuname,age,gender,birthday,hobby,height)
VALUES(9530,'华安他弟',26,'女','2019-3-23','学习',1.69)
-- 建立一张表student2
-- 默认值 DEFAULT
CREATE TABLE student2 (
id INT (9),
stuname VARCHAR (100),
age INT (3) DEFAULT 0,
gender ENUM ('男', '女') DEFAULT '男',
birthday DATE,
hobby SET('足球','学习','游戏','吃饭'),
height DECIMAL(3,2)
)
INSERT INTO student2(id,stuname)
VALUES(9531,'华安他三弟');
INSERT INTO student2(id,stuname,gender)
VALUES(9531,'华安他三弟','女')
-- 约束(五大约束类型,mysql只有四种)
-- 主键 primary key 作用列不能有null 且不能有重复数据
-- 一张表只能有一个主键
-- 唯一键 UNIQUE 作用列不能有重复数据 可以为null
-- 唯一键可以有多个
-- 非空约束 not NULL 作用列不能有null
-- 外键 外键依赖的列必须是一张表的主键或唯一键
-- foreign key(受约束的键名)references 表名(唯一键或主键名)
-- 学员表
create table student3(
sid int(9),
sname varchar(100)default'' not null,
cno int(9),
primary key(sid),
foreign key(cno)references class(cid)
)
-- 班级表
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班');
-- 检查型约束 CHECK mysql中无效
/*
create table test(
gender vachar2(200),
check (gender in('男','女')
)
)
*/
CREATE TABLE demo1(
id int(9),
name VARCHAR(50),
PRIMARY KEY(id)
)
insert into demo1 values(1,'leo')
CREATE TABLE demo2(
id int(9),
name VARCHAR(50),
PRIMARY KEY(id),
UNIQUE(name)
)
INSERT INTO demo2 VALUES(1,'leo');
INSERT INTO demo2 VALUES(2,'leo1');
INSERT INTO demo2 VALUES(3,NULL);
INSERT INTO demo2 VALUES(4,NULL);
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) NOT NULL,
idcard varchar(18),
PRIMARY KEY(id),
UNIQUE(idcard,name)
)
-- 创建两张表
-- dept 部门表
-- deptno 部门编号 整数9 主键
-- dname 部门名称 字符 长度100 非空 默认值是空串
-- loc 部门地点 字符长度为50 非空 默认值是空串
-- 向dept中存入四条记录
-- 10 account new york
-- 20 sales chicago
-- 30 hr shenyang
-- 40 operation fuxin
-- emp 员工表
-- empno 员工编号 整数 长度为4 主键
-- ename 员工姓名 字符 长度无50 非空 默认值null
-- job 岗位 字符 长度为20 非空 默认值空串
-- mgr 经理编号 整数 长度4
-- hiredate 入职日期 日期(年月日)
-- sal 薪水 小数(小数点保留两位,总长度为7)
-- comm 奖金 小数(小数点保留两位,总长度为7)
-- deptno 部门编号 整数 长度9 外键
create table dept(
deptno int(9),
dname varchar(100) default'' not null,
loc varchar(50) default'' not null,
PRIMARY KEY(deptno)
)
INSERT into dept VALUES(10,'account','new york');
INSERT into dept VALUES(20,'sales','chicago');
INSERT into dept VALUES(30,'hr','shenyang');
INSERT into dept VALUES(40,'operation','fuxin');
create table emp(
empno int(4),
ename varchar(50) default'' not null,
job varchar(20) default'' not null,
mgr int(4),
hiredate DATE,
sal decimal(7,2),
comm decimal(7,2),
deptno int(9),
PRIMARY key(empno),
FOREIGN key(deptno)references dept(deptno)
)
INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800.00,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600.00,300.00,30);
INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-2-22',1250.00,500.00,30);
INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-4-2',2975.00,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250.00,1400.00,30);
INSERT INTO EMP VALUES(7698,'BLACK','MANAGER',7839,'1981-5-1',2850.00,NULL,30);
INSERT INTO EMP VALUES(7782,'CLACK','MANAGER',7839,'1981-6-9',2450.00,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-4-19',3080.00,NULL,20);
INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000.00,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-9-8',1500.00,0.00,30);
INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1987-5-23',1100.00,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-3',950.00,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-3',3000.00,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','7782',7698,'1982-1-23',1300.00,NULL,10);
-- 建表 默认值约束和插入数据
-- 自增长主键
create table student5(
id int(9)auto_increment,
name varchar(100),
PRIMARY key(id)
)
INSERT into student5(name) VALUES('张三')