恶补mysql

发现有几篇关于优化的写得特别好:
优化外连接查询的参考:http://blog.csdn.net/jack__frost/article/details/71698285
超全的连接:http://www.jianshu.com/p/f25dfe97264c?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin

一、启动和停止MySQL服务

直接用命令行:
net start mysql
停止服务:
net stop mysql

二、登录与退出

输出Mysql的版本号:
mysql -V
登录:
mysql -u root -p
接着输入密码:

退出:
quit;
\q;
exit;

三、修改mysql提示符

promt指定修改的提示符
mysql -u root -p root --prompt

也可以在链接Mysql后修改,通过promt提示符修改:
prompt + 提示符
修改为用户加主机加数据库:
prompt /u@/h/d

四、显示服务器版本、当前日期、当前用户

SELECT VERSION();
SELECT NOW();
SELECT USER();

五、Mysql的一些规范:

关键字与函数全部大写;
数据库名称、表名称、字段名称、全部小写;
sql语句必须以分号结尾;

六、操纵数据库

1、创建数据库:
create {database | schema} [IF EXITS] db_name [DEFAULT] CHARACTER SET [=] charset_name
2、显示数据库:
root@localhost(none)>show databases;
SHOW create database studydb;
3、使用数据库:
root@localhost(none)>use bd_name;
4、修改数据库编码;
ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;
mysql>alter database studydb character set utf8;
5、删除数据库
DROP {DATABASE | SCHEMA} {IF EXITS} db_name;
mysql>drop database if exists studydb;

七、数据类型

数据类型是指列、存储过程参数、表达式和局部变量的数据特征、它决定数据的存储格式,代表了不同的信息类型。
整型就有五种:
tinyint:有符号值:在-128到127
无符号在:0-255

smallint:-32768到32767
0到167772415

mediumint::-83888608到8388608
16777215

int:-2147683648到2147683647
4294967295

bigint略;

浮点型
m指的是数字总位数,d是小数点后面的数。如果md省略,根据硬件允许的来存值,一般小数点后面有7位。
float[(m,d)]
double[(m,d)]

时间类型
year 1
time 3
date(1000-1-1---9999-12-31)3【大多数用数字来取代】
dateTime 8
timestamp 4

字符型
char(m) m个字节,不足指定长度用空格补上
varchar(m) 变长 L+1个字节,L指的是实际长度
tinyText L+1个字节
text L+2
mediumtext L+3
longtext L+4
enum('value1':value2'....) 1or2,depen on enum's number max=65535
set('value1':'values2'....) 1,2,3or 8 depen on set's number max=64

八、创建表格、

mysql> create table user1 (
    -> id int unsigned primary key,
    -> name varchar(20) unique not null,
    -> sex enum('1','2','3') default '3',
    -> age tinyint
    -> );

总结以上:
数据类型:整型、浮点型、字符型、日期时间型
数据表操作:插入记录、查找记录
记录的操作:创建数据表、约束的使用

约束包含:primary key约束,not NULL约束、unique约束,default约束,foreign约束
目的是保证数据的完整性与一致性,
分为表级约束和列级约束
约束两个字段以上的约束成为表级约束;

九、详解外键约束

外键约束保持数据的一致性、完整性。
实现一对一或者一对多的关系。
1、父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2、数据表的存储引擎只能Innodb;
3、外键列和参照列必须具有相似的数据类型。其中数字的长度和是否有符号位必须相同;而字符的长度则可以不同。
4、外键列和参照列必须创建索引。如果外键列不存在索引的话,Mysql将自动创建索引。
查看索引的命令:
show indexes from table_name;
show indexes from table_name\G;

外键约束的参照操作
cascade:从父表删除或更新且自动删除或更新子表中匹配的行
set null:从父表删除或者更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定not NULL
restrict:拒绝对父表的删除或者更新操作
no action:标准的sql关键字,在Mysql中和restrict作用同。

十、修改数据表

添加字段:

mysql> alter table user2 add age tinyint unsigned;

设置为主键:
alter table tale_name add [constraint[symbol] primary key [index type] (index_col_name)
mysql> alter table user2 add primary key(uid);

设置唯一约束:
alter table tale_name add [constraint[symbol] unique [index type] (index_col_name)
mysql> alter table user2 add unique(username);

设置外键约束:
alter table tale_name add [constraint[symbol] foreign key [index type] (index_col_name) reference_definnition
mysql> alter table user2 add foreign key (pid) references user1(id);
添加设置默认约束:
alter table table_name alter [coulmn] col_name) {set default literal | drop default}
mysql> alter table user2 alter column age set default 0;

删除默认约束:
mysql> alter table user2 alter column age drop default;

图片.png

删除主键约束:
alter table table_name drop primary key;
mysql> alter table user2 drop primary key;
删除唯一约束
alter table table_name drop {index|key} index_name;
先通过命令查看删除该列的唯一约束名;
mysql> show indexes from user2\G;
mysql> alter table user2 drop index username;

图片.png

删除外键约束:
alter table table_name drop foreign key foreign_ky_name;
先通过命令查询外键名称;
show create table user2;
mysql> alter table user2 drop foreign key user2_ibfk_1;

图片.png

修改列定义:
alter table tb_name modify [column] column_defination [firs

mysql> alter table user2 modify uid smallint unsigned;

修改列名称:
alter table tb_name change [column] old_column_name new_col_name column_definition [first|after_col_name]
原来的列数据类型不变
`
mysql> alter table user2 change username username_new varchar(20);

`
修改数据表名称:
方法1:

mysql> alter table user2 rename as user2_new;

alter table tb_name rename [to|as] new_tb_name
方法2:
rename table tb_name to new_tb_name [ tb_name2 to new_tb_name2....tb_name3 to new_tb_name3]

总结:
约束:按照功能划为:
not null、primary key、unique key、default、foreign key;
按照数据列的数目划为:
表级约束、列级约束
修改数据表:
针对字段的操作:添加/删除字段。修改类定义,修改类名称等
针对约束的操作:添加/删除各种约束
针对数据表的操作:数据表单 的更名

十一、插入操作

insert [into] tb_name [(column_name) ] {values|value} (,...,) (,...,)
mysql> insert into user2(uid,username) values(1,'winney');

十二、更新操作(单表更新)

update [low_priority][ignore] table_reference set col_name1={expr1 default} [,col_name2={expr1 default}]...where _condition;

mysql> update user2 set age = 19 where uid=1;

mysql> update user2 set age= 80 where uid % 2=0;
图片.png

十三、删除操作(单表删除)

delete from tb_name where condition;

十四、查询操作(单表删除)

select select_expr [,select_expr ] [from tb_references
[ where codition]
[group by {col_name | postion}]
[asc | desc]
[having condition ]
[order by {col_name | exper | postion } [ASC|DESC]...]
[LIMIT {offset,}row_count offset offset}]
]
查询表达式表示想要的那一列,必须至少有一个
多个列之间用英文逗号隔开
查询表达式可以使用[AS] alias_name为其赋予别名
别名可以用于group by,order by或having子句。

在where表达式中,可以使用Mysql支持的函数或运算符

十五、

`

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

推荐阅读更多精彩内容

  • 第1章 初涉MySQL 1.1 MySQL文件 (1)MySQL目录结构 (2)MySQL配置向导文件(安装后配置...
    凛0_0阅读 785评论 1 0
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,035评论 0 19
  • 启动 mysql$ mysql -uroot -p -P3306 -h127.0.0.1-u ,--user=na...
    假装正在输入阅读 714评论 0 6
  • 把最重要的放前面。 只要记住这一点就够了。这就是学英语的技巧。 举例 中国人说 我爱你,英国人说I Love Yo...
    Jason_and_Lisa阅读 496评论 0 0
  • 回忆是个相当可怕的东西,越不想去记起,它就越在脑海中浮现,正可谓物是人非,如何能忍住回忆,也许最好的方法,就是让自...
    若逸风阅读 172评论 0 1