MySQL数据库-day-3 2019-06-17

SQL基础应用+Infomatiom_Schema介绍


1.SQL介绍

#1.结构化查询语言。
SQL标准:SQL92  SQL99
5.7 版本, SQL_Mode  严格模式

2.SQL语句作用

SQL 用来管理和操作MySQL内部对象?
库:库名 
表:表名,表属性,列 ,记录,列属性和约束

3.SQL语句的类型

DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据查询语言

4.数据类型

#4.1 作用?
控制数据的规范性,让数据有集体含义,在列上进行控制。
#4.2 种类
#(4.2.1)字符串:
char(32):定长长度为32的字符串。存储数据时,一次性提供32字符长度存储空间,  存不满用空格来填充。

varchar(32):可变长度的字符串类型。存数据时,首先进行字符串长度判断,比如需存储的字符串是10个字符,只会分配10个字符长度存储空间,并且会单独占用一个字符长度来记录此次的字符长度。超多255之后,需要两个字节长度记录字符长度。

enum 枚举类型
enum ('bj','sh','sz','cq','hb')
数据行较多时,会影响到索引的应用
注意:数字类禁止enum类型

面试题:
1.char和 varchar 的区别?
(1) 255 65535
(2) 定长(固定存储空间)  变长(按需求)
2.char和varchar 如何选择?
(1) char 类型,固定长度的字符串列,比如手机号,身份证,银行卡 ,性别 等
(2)varchar 类型,不确定长度的字符串,可以使用。

#(4.2.2)数字 :
1.tinyint  : -128~127
2.int       :-2^31~2^31-1
说明:手机号是无法存储到int的。一般是使用char类型来存储收集号
#(4.2.3)时间 :
1. DATETIME 
范围为从 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999。
2. TIMESTAMP 
1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999。
timestamp会受到时区的影响
#(4.2.4)二进制  
(了解)

5. 表属性

存储引擎 : engine  = InnoDB 
字符集 : charset = utf8mb4
utf8    中文  三个字节长度
utf8mb4  中文 四个字节长度   才是真正的utf8 
支持emoji 字符
每个字符集  都有排序规则(校对规则)collation
针对英文字符串大小写问题

6.列属性和约束

主键: primary key (PK)
将来的值必须唯一   非空   
数字列,整数列,无关列,自增的 
聚集索引列?
是一种约束,也是一种索引类型,在一张表中只能有一个主键。

非空: Not NULL
建议,对于普通列来讲,尽量设置not null  
默认值:数字列的默认值 使用0 ,字符串列, 设置为一个nil null  

唯一:unique 
不能重复   
========================================================
自增:auto_increment
针对数字列 ,自动生成顺序值  

无符号: unsigned
针对数字列

注释: comment 

7.SQL语句应用

7.1 DDL: 数据定义语言

7.1.1库:
(1)建库 : 
  mysql> create database xiaozhi charset utf8mb4;
查看库:
  mysql> show create databaes xiaozhi;
  mysql> show databases;
(2)改库
  mysql> alter database xiaozhi1 charset utf8mb4;
(3)删库
  mysql> drop database xiaozhi1;

7.1.2表:
建表建库规范:
1、必须是小写字母
开发和生产平台可能会出现问题。
2、不能以数字开头
3、不支持- 支持_ 
4、内部函数名不能使用
5、名字和业务功能有关(his,jf,yz,oss,erp,crm...)
(1) 建表
create table oldgou (
id int not null primary key AUTO_INCREMENT comment '学号',
name varchar(255) not null comment '姓名' ,
age tinyint unsigned not null default 0 comment '年龄',
gender enum('m','f','n') not null default 'n' comment '性别'
)charset=utf8mb4 engine=innodb;
  
(2) 改表
改表结构
-- 添加一个状态列
alter table oldguo add state  tinyint  not null default 1 comment '状态列';
--添加一个手机号的列
alter table  oldgou add telnum char(11) not null unique comment '手机号';  *****
-- online-DDL : pt-osc (自己研究)
-- 在name 后面添加一个qq列
alter table oldgou add qq varchar(255) not null UNIQUE COMMENT 'qq' AFTER NAME;
-- 在name 之前添加wechat列
alter table oldgou add wechat  varchar(255) not null UNIQUE COMMENT '微信' AFTER id  
-- 在首列上添加 学号: sid(linux58_00001)
ALTER TABLE oldgou add sid varchar(255) not null UNIQUE COMMENT '学号' FIRST;
-- 修改sname 数据类型的属性
alter table oldgou MODIFY name varchar(128) not null 
-- 将gender 改为 gg 数据类型改为 char 类型
ALTER TABLE oldgou  CHANGE gender gg CHAR(1) NOT NULL DEFAULT 'n';

(3) 删表
-- 删除 state列(不代表生产操作)
alter table oldgou drop state;
-- 切换到zhihu
use zhihu;
-- 查看列表信息
desc oldgou;     
-- 查看建表语句
show create table oldgou; 
-- 创建一个相同表结构空表
create table oguo like oldgou; 
-- 删除列
alter table oldgou drop gg; 

7.2 DML 数据操作语言

-- insert 语句
-- 查看表信息
-- desc oldgou;
-- INSERT
-- 最简单的方法插入数据
-- INSERT into oldgou VALUES('3','xiaozh','85343724','20')
-- 最规范的方法插入数据
-- insert into oldgou(name,qq,age) values ('duanyang','3243543543','20'); 
-- 查看表数据(不代表生产操作)
-- SELECT * FROM oldguo;


-- update 语句 (注意谨慎操作!!!!!)
-- UPDATE oldgou set qq='123456' WHERE id=2;

-- delete (谨慎操作!!!!)
-- delete from oldgou where id=3;

-- 需求:将一个大表全部数据清空
-- delete from oldgou;
-- TRUNCATE TABLE oldgou;
-- delete 和 truncate 区别
-- 1.delete 逻辑逐行删除,不会降低自增长的起始值。
-- 效率很低,碎片较多,会影响到性能 
-- 2.truncate ,属于物理删除,将表段中的区进行清空,不会产生碎片。性能较高

-- 需求: 使用update 代替delete ,进行伪删除 
-- 1. 添加状态列state(0代表存在,1代表删除)
-- alter table oldgou add state tinyint not null default 0;
-- 2. 使用update 模拟 delete 
-- delete from oldgou where id=2;
-- 替换为
-- update oldgou set state=1 where id=2; 
-- select * from oldgou;

-- 3.业务语句修改
-- select * from oldgou;
-- 改为
-- select * from oldgou where state=0;

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

推荐阅读更多精彩内容