MySQL Operation

sql语句练习
sql练习2
MYSQL导入数据出现The MySQL server is running with the --secure-file-priv option
删除无用缓存及垃圾文件

CRUD - create retrieve update delete 增查改删

1. SQL (Structured Query Language 结构化查询语言) :

  1. DDL (Data Definition Language 数据定义语言) -->操作表
    create / drop / alter (创建 / 删除 / 改变 )
  2. DML (Data Manipulation Language 数据管理语言) -->操作数据
    insert / delete / update (插入 / 删除 / 更新)
  3. DQL (Data Query Language 数据查询语言) --> 重点
    select (查找)
  4. DCL (Data Control Langeuage 数据控制语言)
    grant / revoke (授权 / 召回权限)

2. DDL (create / drop / alter)

2.1 create

  • create database <name> default charset utf8 : 创建数据库*
  • use <database_name> : 选中数据库
    注意 : 选中数据库后才能创建表
  • create table <name> : 创建表

2.2 drop

  • drop user <user_name> : 删除用户
  • drop database if exists <name> : 删除数据库
  • truncate table <tb_name> : 删除表; truncate - 截断

2.3 alter

  • alter table <name> <content> : 修改表
  • cases :
  1. 给列添加唯一性约束 : alter table <tb_name> add constraint <new_name> unique (column_name);
  2. 添加主键约束 (primary key - 主键) : alter table <tb_name> add constraint <new_name> primary key (column_name);
  3. 添加外键约束 (foreign key - 外键; references - 参照) : alter table <tb_name> add constraint <new_name> foreign key (column_name) references <tb_name 2> (p_k_column_name);
  4. 自参照完整性约束
    alter table TbEmp add constraint fk_mgr foreign key (mgr) references TbEmp(empno);
  5. 修改字段类型:
    alter table 表名 modify column 字段名 类型;
    alter table 表名 change 原字段名 新字段名 类型;

2.4

  1. 查询表与表之间的关系(外健,索引) : select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where CONSTRAINT_SCHEMA='movies';

3. DML (insert / delete / update)

3.1 insert

  • insert into <tb_name> [column1, column2,...] values (content1), (content2)...;
  • 导入&导出文件到CSV :
    MySQL中导入导出数据时,使用CSV格式时的命令行参数
    在导出数据时使用:select ... from ... [where ...] into outfile '/tmp/data.csv' $MYSQL_CSV_FORMAT;
    在导入数据时使用:load data infile '/tmp/data.csv' into table ... $MYSQL_CSV_FORMAT;
    MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"
    CSV标准文档:RFC 4180 (Common Format and MIME Type for Comma-Separated Values (CSV) Files),详细描述了CSV格式,其要点包括:
    (1)字段之间以逗号分隔,数据行之间以\r\n分隔;
    (2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示
  • cases :

3.2 delete

  • delete from <tb_name> where <condition - 条件>;
  • truncate
  • cases :

3.3 update

  • update <tb_name> set <content>
  • cases :

4. DQL(select)

5. DCL(grant / revoke)

-- 创建用户
create user hellokitty@'%' identified by '123456';
-- 给hellokitty授权
grant to hellokitty@'%';
-- hrs.* - 将hrs库的所有文件的权限给hellokitty
grant all privileges on hrs.* to hellokitty@'%';
-- 从hellokitty召回权限
revoke all privileges on hrs.* from hellokitty@'%';
-- 召回对hrs.tbemp表的操作权限

6. 视图

create view vw_emp as select empno, ename, dno, sal from tbemp;
select ename from vw_emp;
update vw_emp set ename='胡二刀' where empno=1359;

7. 索引

-- 索引相当于是书的目录,它可以用来加速查询(先查目录定位搜索范围)
-- 这是典型的用空间换时间的策略, 所以索引要创建在用作查询筛选条件的列上(最常用)
-- 会延缓增加/删除/修改的速度
-- 需要表名和列
create index idx_emp_name on tbemp(ename);
-- unique --> 唯一索引
create unique index uni_emp_name on tbemp(enaem);
-- 删除索引(需要表名)
drop index idx_emp_name on tbemp;

8. 级联

触发器 - 不用,会造成锁表
级联(casade)操作 - on delete set null on update cascade; 默认 restrict - 不准操作
alter table TbEmp add constraint fk_dno foreign key (dno) references TbDept(deptno) on delete set null on update cascade;

9. 事务

-- 开启事务环境
begin:
-- 执行要做的多个操作(原子性操作)
delete from tbemp:
select * from tbemp;
-- ====回滚和提交选择 (结束事务)
-- 回滚 - 撤销事务
rollback;
-- 提交 - 让事务生效
commit;

2. ER图- Entity Relationship实体关系图

设计表与表之间的关系
矩形框 - 实体
椭圆 - 属性
线条 - 关系连接
棱形 - 声明关系
一对多 1 : m --> 外键约束
多对多 m : n --> 添加一个中间表 ,分成两个一对多, m : 1 and 1 : n


3. 操作

  1. 可以数据库里的所有文件备份,用于恢复或者提取sql语句
  2. 视图 - 查询结果的快照
  3. 有触发器 - 会造成锁表,最好不用

3.1. 创建数据库

-- 如果存在名为school的数据库就删除它
drop database if exists school;
-- 创建名为school的数据库,设置默认字符集为utf8,方便输入中文
create database school default charset utf8;
-- 切换到school数据库
use school;

3.1. 创建列表

-- ==================== 1.1创建学院表(tb_collage)
create table tb_college
(
-- comment - 注释 写在代码里
colid int not null comment '学院编号',
colname varchar(20) not null comment '学院名称',
coltel varchar(20) not null comment '联系电话',
colwebsite varchar(255) comment '网站地址',
选定主键,不能重复
primary key (colid)
);
给website添加唯一性约束
alter table tb_college add constraint uni_website unique (colwebsite);

-- ==================== 1.2 创建学生表(tb_student)
create table tb_student
(
stuid int not null comment '学号',
stuname varchar(4) not null comment '姓名',
stusex bit default 1 comment '性别',
stuaddr varchar(50) comment '籍贯',
-- colid - 外键(外来的主键)
colid int not null comment '学院'
);
-- 添加 主键(primary key)约束
alter table tb_student add constraint pk_stuid primary key (stuid);
-- 外键(foreign key)约束 参照(references)完整性
alter table tb_student add constraint fk_student_colid
foreign key (colid) references tb_college (colid);
alter table tb_student modify stuname varchar(10);

-- ====================1.3创建老师表(tb_teacher)
create table tb_teacher
(
thid int not null comment '工号',
thname varchar(4) not null comment '姓名',
thsex bit default 1 comment '性别',
thaddr varchar(50) comment '籍贯',
thage int comment '年龄',
primary key (thid)
);

-- =======================1.4 创建课程表(tb_course)
create table tb_course
(
cid int not null comment '课程编号',
cname varchar(20) not null comment '课程名称',
ccredit int not null comment '学分',
thid int not null comment '授课老师工号'
);
alter table tb_course add constraint pk_cid primary key (cid);
alter table tb_course add constraint fk_thid
foreign key (thid) references tb_teacher (thid);

学生和课程之间的中间表
-- =======================1.5 学生选课表(tb_sc)
create table tb_sc
(
-- 自增字段
scid int not null auto_increment comment '选课记录号',
sid int not null comment '学号',
cid int not null comment '课程编号',
-- 时间函数 now()
scdate datetime default now() comment '选课时间',

score decimal(4,1) comment '成绩',
-- 复合主键,一般不用
-- primary key (sid, cid)

primary key (scid)
);
-- 学号增加外键约束 ; references - 参照
alter table tb_sc add constraint fk_sc_sid
foreign key (sid) references tb_student(stuid);
-- 课程编号增加外键约束
alter table tb_sc add constraint fk_sc_cid
foreign key (cid) references tb_course(cid);

-- =======================1.6 老师任职表(tb_tcol)
create table tb_tcol
(
tcolid int not null auto_increment comment '任职记录',
colid int not null comment '学院',
thid int not null comment '教师',
tcoldate datetime default now() comment '任职时间',
primary key (tcolid)
);
alter table tb_tcol add constraint fk_tcol_colid
foreign key (colid) references tb_college (colid);
alter table tb_tcol add constraint fk_tcol_thid
foreign key (thid) references tb_teacher (thid);

3.4 DDL & DML

-- 如果存在名为tb_student的表就删除
-- drop table if exists tb_student;

-- 修改名为tb_student的表添加新列
alter table tb_student add column stutel char(11);
-- alter table tb_student drop column stutel

-- 插入数据到tb_student表
insert into tb_student values(1001, 'wh', 1, '四川成都', '12312345678');
-- default - 取默认值
insert into tb_student (stuid, stuname, stusex) values(1002, '元芳', default);
insert into tb_student (stuid, stuname) values (1003, '仁杰');
insert into tb_student values
(1004, '则天', 0, null, '12312345678'),
(1005, '冷面', 1, '开封', '13512345678');

-- 删除tb_student表中指定数据
注意删除和更新操作都要带上条件where,否则就对整个表操作(危险)
/*
delete from tb_student where stuid=1002;
delete from tb_student where stuid in (1003, 1004);
delete from tb_student where stuid=1001 or stuid=1003;
delete from tb_student where stuid between 1004 and 1010;
*/
-- 删除整个表 truncate - 截断
-- truncate table tb_student;

-- 修改表设置列 : 不允许重复 -->唯一约束/索引; constraint - 约束 ; unique() - 唯一的
alter table tb_student add constraint uni_tel unique(stutel);

-- 更新数据到tb_student表
update tb_student set stuaddr='湖南长沙', stutel='13812345678'
where stuid=1002 or stuid=1003;
update tb_student set stuaddr='长安' where stuname='则天';

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容