发现有几篇关于优化的写得特别好:
优化外连接查询的参考: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;
删除主键约束:
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;
删除外键约束:
alter table table_name drop foreign key foreign_ky_name;
先通过命令查询外键名称;
show create table user2;
mysql> alter table user2 drop foreign key user2_ibfk_1;
修改列定义:
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;
十三、删除操作(单表删除)
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支持的函数或运算符
十五、
`