多少的查询,精晓与练习

 

— 创造数量
CREATE DATABASE day2;
— 使用数据库
USE day2;
— 创立二个表格
CREATE TABLE stu(
id INT,
NAME VARCHAR(20),
sex VARCHAR(2),
age INT ,
address VARCHAR(30)
);

— 创立数据库
CREATE DATABASE mydb;
— 等号=,在set前边是赋值的乐趣,在WHERE前面则是比较的意趣
— 删除数据库
DROP DATABASE mydb;
— 成立学生表
CREATE TABLE o_student(

一.单词部分

INSERT INTO bookcategory(category_id,category,parent_id) VALUES(1,'计算机',0);//指定插入的顺序


INSERT INTO bookcategory VALUES(1,'计算机',0);//按照默认的插入


INSERT INTO bookcategory(category_id,category,parent_id) VALUES(1,'计算机',0),(2,'xxx',3)(3,'xxxxx',4);//同时插入多条数据


INSERT INTO bookcategory SELECT * FROM test WHERE id>5//将查询结果插入表中


CREATE TABLE TEXT(

    category_id INT PRIMARY KEY AUTO_INCREMENT,

    parent_id INT NOT NULL

)AUTO_INCREMENT=5;    //auto_increment让这一列自动设置编号,默认初始值为,最后为设置初始值为5



ALTER TABLE bookcategory MODIFY category_id INT AUTO_INCREMENT=X//为已有表添加自增列



ALTER TABLE bookcategory MODIFY category_id INT;//去掉自增列


//有外键关系的话添加自增,要先去掉外键关系。


ALTER TABLE bookinfo DROP FOREIGN KEY fk_bcid//去掉外键


ALTER TABLE bookinfo ADD CONSTRAINT fk_bcid FOREIGN KEY(bookcdategory_id) REFERENCES bookcategory(category_id);//添加外键


SELECT price FROM bookinfo WHERE book_id=201501;//查询book_id为201501书的价格


SELECT * FROM readerinfo//查看读者信息表


SELECT xxx,xxx,xxx FROM readerinfo//查询指定列


SELECT xxx,xxx,xxx FROM readerinfo WHERE press='机械工业'//设置外加条件的查询


SELECT DISTINCT press FROM bookinfo;//显示不重复的查询


SELECT * FROM readerinfo WHERE age IS NULL;//查询为空的列


UPDATE readerinfo SET balance =balance -18.9*0.05 WHERE card_id='xxxxxxxx'//更新readerinfo这个表中的card_id为xxx的balance


DELETE FROM readerinfo WHERE card_id='201531513133'//单表数据记录的删除,不加where则为全部删除


TRUNCATE TABLE readerinfo;//删除原表再创建空表


SELECT COUNT(*) FROM readerinfo WHERE sex='男'//对查询结果的分组


SELECT sex FROM readerinfo GROUP BY sex;//查询有多少种性别


SELECT sex COUNT(*) FROM readerinfo GROUP BY sex;//统计每种性别的人数


SELECT sex FROM readerinfo GROUP BY sex WHERE COUNT(sex)>3;//也可以加限制条件。统计每种性别的人数


SELECT     * FROM bookinfo ORDER BY price//对查询结果排序,默认为升序


SELECT     * FROM bookinfo ORDER BY price,store;//price相同的,按照库存排序


SELECT * FROM bookinfo ORDER BY price ASC,store DESC;//asc升序,desc降序


SELECT * FROM bookinfo LIMIT 3;//limit限制查询数量,偏移量为0开始,显示前三行


SELECT * FROM bookinfo LIMIT 2,2;//显示第二条语句的后两个语句


SELECT store,COUNT(*) FROM bookinfo GROUP BY store ORDER BY store DESC LIMIT 4;//统计库存个数,并降序排序,并查看前四条语句

— 查看表格的布局
DESC stu;
— 添加列
ALTER TABLE stu ADD java INT;
ALTER TABLE stu ADD jsp INT

— 將当前列设置为主键列(表示无法再一次只怕为空)
— AUTO_INCREMENT表示将眼下列设置为电动整张
— 该列的值由dbns分配,可以保险不重复
id INT PRIMARY KEY AUTO_INCREMENT,– 编号
sname VARCHAR(20),– 姓名
birthday DATE, — 生日
ptype ENUM(‘dianqi’,’huoiba’),–enum枚举类型,
该列的值只可以在’dianqi’,’huoiba’选拔
phone VARCHAR(20),
money DOUBLE
);
— 插入数据 插入数据是只要未有加money,默感觉null
INSERT INTO t_student(sname,birthday,phone,money)
VALUES(‘长啥’,’1980-02-25′,’15451477144′,14255),
(‘长啥’,’1980-02-25′,’15451477144′,14255),
(‘长啥’,’1980-02-25′,’15451477144′,14255);
INSERT INTO t_student(sname,birthday,phone,money)
VALUES(‘sad’,’1875-02-12′,’12454413四’,1450八);– 二次增添多少个
— 查询表中具有数据(*表示查询表中负有数据)
SELECT *FROM t_student;
— 删除表
DROP TABLE y_student;+

①constraint约束②foreign外键③references参考

 

INSERT INTO stu (id,NAME,sex,age,address,java,jsp)
VALUES(1,’小明’,’男’,25,’山东2′,78,99);
INSERT INTO stu (id,NAME,sex,age,address,java,jsp)
VALUES(2,’小黄’,’男’,23,’河南’,65,55);
INSERT INTO stu (id,NAME,sex,age,address,java,jsp)
VALUES(2,’小黄’,’女’,23,’太远’,65,55);
INSERT INTO stu (id,NAME,sex,age,address,java,jsp)
VALUES(4,’小黄’,’女’,23,’太远’,45,85);
INSERT INTO stu (id,NAME,sex,age,address,java,jsp)
VALUES(NULL,NULL,”,23,’太远’,45,85);

— 删除id为4的商品 要是不加 WHERE id=四正是删除全部,前面要接分号
DELETE FROM y_student WHERE id=4;
— 删除 长啥 前面不接分号也得以加分号
DELETE FROMy_student WHERE sname=’长啥’
-改变年龄
update s_student set page=20 where sname=’张浩’;
–同时供给改二个的中级打 ,号
update s_student set page=20,birthday=’1982=12-14′ where =’张浩’
–查询所哟的物品
select * FROM t_student;

④subquery子查询⑤inner内部的⑥join连接

 

DELETE FROM stu;
— 一 查询全部的类
SELECT * FROM stu;

–查询全数商品的价格(这里将*换为了sname,price)
select sname,price from t_student;
–查询全部的档案的次序distinct表示去除重复记录
select distinct ptype from t_student
–查询前叁条纪录(第三个参数0表示为起初记录数从0开头
第四个参数表示彰显记录数。 0发轫呈现三个)
select * from t_student limit 0,3;
–查询价格在一千-三千时期的货色

二.预习部分

INSERT INTO bookcategory(category_id,category,parent_id)
VALUES(1,’计算机’,0);//内定插入的逐1
INSERT INTO bookcategory VALUES(一,’Computer’,0);//依据暗许的插入
INSERT INTO bookcategory(category_id,category,parent_id)
VALUES(一,’计算机’,0),(二,’xxx’,三)(三,’xxxxx’,四);//同时插入多条数据
INSERT INTO bookcategory SELECT * FROM test WHERE
id>5//将查询结果插入表中
CREATE TABLE TEXT(
category_id INT PRIMARY KEY AUTO_INCREMENT,
parent_id INT NOT NULL
)AUTO_INCREMENT=5;
//auto_increment让那一列自动安装编号,暗中同意起头值为,最终为设置早先值为5
ALTER TABLE bookcategory MODIFY category_id INT
AUTO_INCREMENT=X//为已有表增添自增列
ALTER TABLE bookcategory MODIFY category_id INT;//去掉自增列
//有外键关系的话增多自增,要先去掉外键关系。
ALTER TABLE bookinfo DROP FOREIGN KEY fk_bcid//去掉外键
ALTER TABLE bookinfo ADD CONSTRAINT fk_bcid FOREIGN
KEY(bookcdategory_id) REFERENCES
bookcategory(category_id);//增多外键
SELECT price FROM bookinfo WHERE
book_id=201501;//查询book_id为20140一书的价位
SELECT * FROM readerinfo//查看读者音讯表
SELECT xxx,xxx,xxx FROM readerinfo//查询钦命列
SELECT xxx,xxx,xxx FROM readerinfo WHERE
press=’机械工业’//设置外加条件的询问
SELECT DISTINCT press FROM bookinfo;//显示不重复的查询
SELECT * FROM readerinfo WHERE age IS NULL;//查询为空的列
UPDATE readerinfo SET balance =balance -18.9*0.05 WHERE
card_id=’xxxxxxxx’//更新readerinfo那个表中的card_id为xxx的balance
DELETE FROM readerinfo WHERE
card_id=’二零一五3151313三’//单表数据记录的去除,不加where则为全方位删减
TRUNCATE TABLE readerinfo;//删除原表再次创下立空表
SELECT COUNT(*) FROM readerinfo WHERE sex=’男’//对查询结果的分组
SELECT sex FROM readerinfo GROUP BY sex;//查询某些许种性别
SELECT sex COUNT(*) FROM readerinfo GROUP BY sex;//总计每一种性其余人口
SELECT sex FROM readerinfo GROUP BY sex WHERE
COUNT(sex)>3;//也能够加限制条件。总计种种性别的人口
SELECT * FROM bookinfo OGL450DESportage BY price//对查询结果排序,默以为升序
SELECT * FROM bookinfo O汉兰达DEOdyssey BY
price,store;//price同样的,根据仓库储存排序
SELECT * FROM bookinfo ORDER BY price ASC,store
DESC;//asc升序,desc降序
SELECT * FROM bookinfo LIMIT
三;//limit限制查询数量,偏移量为0从头,显示前叁行
SELECT * FROM bookinfo LIMIT 二,2;//突显第二条语句的后多少个语句
SELECT store,COUNT(*) FROM bookinfo GROUP BY store O锐界DERubicon BY store DESC
LIMIT 四;//计算仓库储存个数,并降序排序,并查看前四条语句

— 2. 询问钦赐的列
SELECT id,NAME,sex FROM stu;

select * from t_student WHERE price>=10 and price<=2000;
查询id是1和9的商品
select * from t_student where id=7orid=9;
select * from t_997755.com澳门葡京,student where id in(7,9);
–查询全部带“机”的货物(模糊查询)
select * from t_student where pname like ‘%机%’;
–全体商品依据标价排序
select * from t_student order by createdate;–升序
select * from t_student order by createdate desc;–降序 价格desc
–查询未有声场日期的制品(为null值不可能一直用等号接null)
select * from t_student WHERE createDate is null

一.修改表SQL语句的关键字是什么样

— 3.查询的时候增常量列
SELECT id,NAME,sex,address, ‘java2版’ FROM stu;
— 四.查询的时候起1个小名
SELECT id AS ‘编号’ ,NAME AS’姓名’,sex AS ‘姓别’,’java1版’ AS ‘班级’
FROM stu;

通配符’—’表示别的单个字符,‘%’表示三个依然八个字符 模糊查询有例子
–查询年龄最大的学员
select *from t_student order by s_age desc limit 0,1;

RENAME 修改表名CHANGE修改字段

— 伍.查询的时候举行联合钦定的列
— 要求 : 在查询每一个学生的java和jsp总成绩

— 增多货色的评头品足,200之下,展现低价商品
— 200-一千,展现中间商品,一千上述展现高端商品

2.哪个关键字能够按钦赐行数重返查询结果集

SELECT id,NAME,sex,age,address, (java+jsp) AS ‘总成绩’ FROM stu;
— 在群集的时候 合并的只可以实行数字类型
SELECT id ,NAME,sex ,(address+sex) AS ‘总’ FROM stu;
— 陆 查询时去除重复的笔录

SELECT p.*,(CASE WHEN p.price<200 THEN ‘低级商品’
WHEN p.price>200 AND p.price<一千 THEN ‘中档商品’
ELSE ‘高等商品’ END)
info FROM t_多少的查询,精晓与练习。product p;

LIMIT

— 查询学生的性别 男 女
SELECT DISTINCT sex FROM stu;

— 电器类涨价百分之20,化妆品涨价百分子10,食物涨价百分之拾
UPDATE t_product SET price=(
CASE WHEN ptype=’电器’ THEN 1.2*price
WHEN ptype =’化妆品’ THEN 1.1*price
WHEN ptype=’食品’ THEN 1.1*price END);

三.表连接都能够用子查询替换吗

— 7 规则查询 where
— 逻辑条件 and(与 和) or(恐怕)
— 必要 查询 id为壹 照旧性别为女
SELECT id,NAME,sex,age,address,java,jsp FROM stu WHERE id=1 OR
sex=’女’;

— 总计商号中有微微商品

可以

— 必要 查询 id 为 一 并且性别为男 音讯
SELECT id,NAME,sex,address,java,age FROM stu WHERE id=1 AND sex=’男’;
— 相比较原则 > < >= <= =(等于) <>(不对等) between
…and… 等价于 》= and <=)

SELECT COUNT(*) FROM t_product;

count(列名)只总括该列的非空记录如加多一个物品未有写价格用count总计就能不算空的
— 总结商店中有稍许商品
SELECT COUNT(*) FROM t_product;

— 总括全部商品的总价
SELECT SUM(price) FROM t_product;

— 总计商品的价钱最大值和最小值
select max(price),min(price) from t_product;

— 聚合函数sum max count min sum/avg

–该列非空的平均值 avg是全数的平均值
SELECT SUM(price)/AVG(price) FROM t_product;

— 总括每种门类的商品数量(注意:分组查询中能够在select
中冒出的列,只好是聚合函数和分组字段)
SELECT ptype,COUNT(pname)FROM t_product GROUP BY ptype;
— 总计每一个项目商品的品均价格
SELECT ptype,AVG(price) FROM t_product GROUP BY ptype;
— 查询有一个也许二个以上商品的商品类名
SELECT ptype,COUNT(pname) c FROM t_product GROUP BY ptype HAVING
c>=3;

3.演习部分

— 查询全部的java成绩超乎陆5的是、学生消息

— 查询品均价格在500元之上的货品

(where运营在分组从前前边无法跟聚合函数,having运行在分组之后,只可以做聚合函数的过滤)
SELECT ptype FROM t_product GROUP BY typye;
SELECT ptype FROM t_product GROUP BY ptype HAVING AVG(price)>500;

SELECT ptype ,AVG(price) a FROM t_product GROUP BY ptype HAVING
a>500;

CREATE TABLE t_man(
id INT PRIMARY KEY AUTO_INCREMENT,
manName VA凯雷德CHAMurano(20) NOT NULL, — 设置该列非空
sex VA汉兰达CHABMWX3(20) DEFAULT ‘男’– 设置暗中认可值为男
);
INSERT INTO t_man(manName)VALUES(‘张浩(Zhang Hao)’);– 该列未有加塞儿性别 默以为男
INSERT INTO t_man(manName)VALUES(‘李肆’,’女’);–
改列有性别插入,那么插入该值
INSERT INTO t_man(sex)VALUES(‘男’);– 尽管是不可能为空
可是姿势提醒,未有加塞儿name数据 照旧会运作出空数据

CREATE TABLE t_man(
id INT PRIMARY KEY AUTO_INCREMENT,
manName VABMWX伍CHA安德拉(20) NOT NULL, — 设置该列非空
sex VARubiconCHA昂Cora(20) DEFAULT ‘男’– 设置默许值为男
);
INSERT INTO t_man(manName)VALUES(‘张浩(Zhang Hao)’);– 该列未有加塞儿性别 默感到男
INSERT INTO t_man(manName,sex)VALUES(‘李4′,’女’);–
改列有性别插入,那么插入该值

 

— 房间表
CREATE TABLE t_room(
id INT PRIMARY KEY AUTO_INCREMENT,
address VARCHAR(20),
price INT,
manId INT
);
— 增多外键的约束fk_1,让t_room中的manId列,必须引用t_man的id主键
ALTER TABLE t_room ADD CONSTRAINT fk_1 FOREIGN KEY(manId)
REFERENCES t_man(id);
鉴于有外建约束存在,所以有不法外建,则插入不成功
INSERT INTO t_room(addrress ,price,manId)VALUES(‘科华北路’,5222二,一);–
准确而主键有壹那个id
INSERT INTO t_room(addrress ,price,manId)VALUES(‘科华北路’,52222,6);–
报错id未有陆

— 删除此之外键约束
ALTER TABLE t_room DROP FOREIGN KEY fk_1;

 

— 总结商店中某些许商品
SELECT COUNT(*) FROM t_product;

 

  1. 创设数据表,并实现对表的修改操作

SELECT * FROM stu WHERE java>=65;
— 查询java成绩高于等于6伍 并且小于等于7伍

#上机1
USE test;
CREATE TABLE person(
number INT(4) AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL,
sex CHAR(2),
bornDate DATETIME
);
ALTER TABLE person RENAME tb_person;
ALTER TABLE tb_person DROP `bornDate`;
ALTER TABLE tb_person ADD bornDate DATETIME;
ALTER TABLE tb_person CHANGE number id BIGINT;

SELECT * FROM stu WHERE java>=65 AND java<=75;
— 此外壹种写法
SELECT * FROM stu WHERE java BETWEEN 65 AND 75
— 查询java不等于65
SELECT *FROM stu WHERE java<>65;

2.选取SQL语句为myschool数据库中的result表增加约束

— 判空查询 is null not null =”“ 《》”“

#上机2
USE myschool;
ALTER TABLE result ADD CONSTRAINT re PRIMARY KEY
result(`studentNo`,`subjectNo`,`exameDate`);
ALTER TABLE result ADD CONSTRAINT fk_result_student FOREIGN KEY
(studentNo) REFERENCES student (studentNo);

— 须求: 查询姓名称叫空新闻 (空 包含null =””)
SELECT * FROM stu WHERE NAME IS NULL OR NAME=”;
— 求出性别不为空字符的
SELECT * FROM stu WHERE sex <>” OR NOT NULL;

三.为学生表,科目表,成绩表增添数据

— 模糊查询

#上机3
USE myschool;
INSERT INTO `subject` (`subjectName`, `classHour`, `gradeID`)
VALUES
(‘HTML’, ‘160’, ‘1’),
(‘Java OOP’, ‘230’, ‘2’);

— like
— % 相称率性字符
— _卓殊八个字符

四.退换学生表,科目表数据

— 查询姓名称叫 ‘小’学生消息
SELECT * FROM stu WHERE NAME LIKE ‘小%’;
— 查询姓名叫’小 ‘且小的末尾惟有一个字符

#上机4
USE myschool;
INSERT INTO `myschool`.`result` (`studentNo`, `subjectNo`,
`exameDate`, `studentResult`) VALUES (‘1002’, ‘1’, ‘2014-8-8′,
’78’),
(‘1003’, ‘2’, ‘2017-7-7′, ’98’),
(‘1004’, ‘1’, ‘2015-8-8′, ’78’),
(‘1005’, ‘2’, ‘2013-8-8′, ’78’),
(‘1006’, ‘1’, ‘2017-8-8′, ’66’),
(‘1007’, ‘1’, ‘2014-8-8′, ’55’),
(‘1008’, ‘1’, ‘2014-8-8′, ’13’),
(‘1009’, ‘1’, ‘2014-8-8′, ’89’);
UPDATE student SET eamil=’stu200000@163.com’,loginPwd=’000′ WHERE
studentNo=’20000′;
UPDATE `subject` SET `classHour`=`classHour`-10 WHERE
`classHour`>200 AND `subjectNo`=1;
DROP TABLE IF EXISTS student_grade1;
CREATE TABLE student_grade1(SELECT
`studentName`,`sex`,`bornDate`,`phone` FROM student WHERE
`gradeID`=1);

SELECT * FROM stu WHERE NAME LIKE ‘小_’;
— 八 聚合查询 (使用聚合函数的询问)
— 常用的函数 sum() avg() max() min() count()

伍.询问学生音讯(查询201陆年七月11陆目前伍名 的学生的学号和分数)

— 求出java的成绩
SELECT SUM(java) AS ‘java总成绩’ FROM stu;

#上机5
SELECT `studentNo`,`studentResult` FROM `result` WHERE
`exameDate`<‘2016-2-17’ ORDER BY studentResult DESC LIMIT 5;

— 求出java的平分分
SELECT AVG(java) AS’平均分’ FROM stu;

SELECT studentName,(YEAR(NOW())-YEAR(bornDate)) AS age,bornDate,phone
FROM student
WHERE sex=’女’
ORDER BY bornDate ASC
LIMIT 1,6;

— 求出最高分
SELECT MAX(java) AS ‘最高分’ FROM stu;
— 总结出一齐有个别许条记下 cont(字段) 不包蕴null成分
SELECT COUNT(*) FROM stu;

SELECT YEAR(bornDate) AS nian,COUNT(studentNo) AS num FROM student GROUP
BY bornDate HAVING COUNT(studentNo)>=2;

— 九 分页查询 limit

SELECT
MAX(`studentResult`),MIN(`studentResult`),AVG(`studentResult`)
FROM `result` WHERE `exameDate`=’2016-02-17′ GROUP BY `studentNo`;

— 开始行 从0初叶举办数
— 每页显示多少条记录 (当前页-一)*每页显示的记录数

陆.询问钦赐学生的考试成绩

— 查询壹.2 条记下 一页彰显两条记下
— 查询的是第贰页数据
SELECT * FROM stu LIMIT 0,2

#上机6
SELECT MAX(`studentResult`),MIN(`studentResult`) FROM result
WHERE `exameDate`=(SELECT `exameDate` FROM `result` ORDER BY
exameDate DESC LIMIT 1) AND
`subjectNo`=(SELECT `subjectNo` FROM `subject` WHERE
`subjectName`=’Logic Java’);
#select max(exameDate) from result

— 查询第3页

7.查询某学期开设的课程

SELECT * FROM stu LIMIT 2,2

#上机7
SELECT subjectName FROM `subject` 
WHERE subjectNo IN(SELECT subjectNo FROM `subject` 
WHERE gradeId=(SELECT gradeId FROM grade WHERE gradeName=’S1′));

— 查询第一页
SELECT * FROM stu LIMIT 4,2;
— 查询第六页
SELECT * FROM stu LIMIT 6,2

八.询问某课程以来一次考试缺考的学生名单

— 拾 排序查询
— order by
— asc 正序 升序
— desc 倒序
— 暗中认可的事态下时依据数据插入的次第来进展询问的

#上机8
SELECT `studentName` FROM student WHERE `studentNo` IN(SELECT
`studentNo` FROM student WHERE studentNo NOT IN(SELECT `studentNo`
FROM `result`
WHERE `subjectNo`=(SELECT `subjectNo` FROM `subject` WHERE
`subjectName`=’HTML’) AND
`exameDate`=(SELECT `exameDate` FROM `result` WHERE
subjectNo=(SELECT `subjectNo` FROM `subject` WHERE
`subjectName`=’HTML’)
ORDER BY exameDate DESC LIMIT 1)));

— 须求 java战表依照从低到高进行查询

5.总计部分

SELECT * FROM stu ORDER BY java ASC;
— 供给 jsp的成就重高到低实行排序

多表联合检查完结的二种情势:

SELECT * FROM stu ORDER BY jsp DESC;

①表连接

— 有余排序格局展开询问
— jaba 依照正序进行 jsp依照反序

②子查询

SELECT * FROM stu ORDER BY java ASC ,jsp DESC;

应接提问,迎接指错,接待钻探学习消息 有亟待的私聊 公布研究即可都能复苏的

— 1一 分组查询
— group by
— 查询男女”“ 的总人口
— 男 2

  原著在天涯论坛有需要能够联系扣扣:22656829九七

— 女 2
— ”“ 2
SELECT sex,COUNT(*) FROM stu GROUP BY sex;
— 1贰 分组之后 举办刷选

— 查询总人数大于一个的性别 分组之后 不能使where 使用having
SELECT sex ,COUNT(*) FROM stu GROUP BY sex HAVING COUNT(*)>=3;

SELECT * FROM stu;

— 数据的羁绊
— 默许值 当用户使用私下认可值的字段不插入数据的时候 正是用暗中认可值
— 对私下认可值字段插入数据的时候 null是能够插入

CREATE TABLE emp(
id INT,
NAME VARCHAR(20),
address VAWranglerCHAKuga(10) DEFAULT ‘黑龙江省开封市’
)

INSERT INTO emp VALUES(1,’小明’,”);
SELECT * FROM emp;
DROP TABLE emp;

— 非空 空 ‘’
— 限制字段必供给有值 字段必供给有数据 不可能查入null值

CREATE TABLE student(
id INT NOT NULL,
NAME VARCHAR(20)
);
INSERT INTO student VALUES (”,’小黄’);
SELECT * FROM student;
DROP TABLE student;

— 唯一
— 唯1可以插入null成分 可以插入null成分
CREATE TABLE stu1(
id INT UNIQUE,– 唯一
NAME VARCHAR(20));
INSERT INTO stu1 VALUES(1,’zhangsan’);
INSERT INTO stu1 VALUES(NULL ,’lis’);
SELECT * FROM stu1;
DROP TABLE stu1;

— 主键
— 非空+唯一性
— 常常状态下 每一张表都会安装二个字段 为主键
用来表示表的每条记下都唯1的
CREATE TABLE stu2(
id INT PRIMARY KEY,– 主键
NAME VARCHAR(20));

INSERT INTO stu二 VALUES (一,’wangwu’);– 违反了字段的唯1性Duplicate
entry ‘1’ for key ‘PPAJEROIMA奥迪Q5Y’
SELECT * FROM stu2;
INSERT INTO stu2 VALUES(NULL,’lisi’);– 违反了字段的非空约束 Column ‘id’
cannot be null

— 自增长
— 字段不用进行赋值 能够活动的充实 每便扩展1

CREATE TABLE stu3(
id INT PRIMARY KEY AUTO_INCREMENT, — 自增长 从0开始
NAME VARCHAR(10)
)

DROP TABLE stu3;

INSERT INTO stu3 (NAME)VALUES(‘小黄’);

SELECT * FROM stu3

DELETE FROM stu3;

TRUNCATE TABLE stu3;

— 外键

— 当用有三种表的利用进行约束数据
— 创造多少个机关表
— 数据冗余相比较高的时候 使用外键 表与有关联

— (主表)
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
deptname VARCHAR(30)

)
DROP TABLE dept;

INSERT INTO dept(deptname) VALUES(‘技术部’);
INSERT INTO dept(deptname) VALUES(‘财务部’);
INSERT INTO dept(deptname) VALUES(‘秘书部’);
INSERT INTO dept(deptname)VALUES(‘人事部’)

SELECT * FROM id=7 WHERE id=3;
SELECT * FROM dept;
— 员工表
— (副表)
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
deptid INT,
— 声美赞臣(Meadjohnson)个外键

— 外键名称 — 外键 –参考主表(字段)
CONSTRAINT employee_dept_fk FOREIGN KEY (deptid) REFERENCES dept(id)
);

DROP TABLE employee

INSERT INTO employee (NAME,deptid) VALUES(‘张三’,’1′);

INSERT INTO employee (NAME,deptid) VALUES(‘李四’,’3′);

INSERT INTO employee (NAME,deptid) VALUES(‘王五’,’2′);
INSERT INTO employee(NAME,deptid)VALUES(‘赵六’,5);

UPDATE employee SET deptid=3 WHERE id=1;

SELECT * FROM employee;
— 在副表个中成立外键
— 被封锁的表变为副表 约束旁人的表被成为主表
— 主表的参考字段一般景况下都是主键

— 增加数据 : 先增多主表 ,在增多副表
— 修改数据 ” 先修改副表 在修改主表
— 删除数据 先删除副表 在剔除主表

— 级联操作 级联合检查询 jdbc html

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website