MySql从入门到精通

一:数据库相关
建立数据库:create database databaseName
create database CRM ----建立一个名为CRM的数据库。
查看数据库:show databases;
show databases ----查看全部的数据库
选择数据库:use databaseName
use CRM ----选择一个名为CRM的数据库。
删除数据库:drop database databaseName;
drop database CRM ---删除一个名为CRM的数据库。
二:表相关
建立表:create table tableName(
file1 type,
file2 type,
file3 type,
fileN type);
例如:建立一个员工表,
create table t_employee(
e_number int,
e_name varchar(40),
e_location varchar(50)
);
建立一个员工表,字段分别为e_number,e_name,e_location,数据类型分别是:int,varchar(40),varchar(50)。注意,建立表以前必定要先选择一个数据库。经过desc t_employee能够查看表的结构。

查看表的结构:show create table tableName; 或者 describe tableName;
例如查看t_employee这个表的结构可使用下面的语句:
show create table t_employee;
describe t_employee;----可简写为:desc t_employee;
能够在语句后面加上\g 或者\G得到更好的显示效果。好比:desc t_employee \G

删除一个表:drop table tableName;
删除一个名为t_employee这个表:drop table t_employee;

给表重命名:alter table oldTableName rename newTableName;
给t_employee这个表从新命名为 tt_employee :alter t_employee rename tt_employee;

在表的最后增长一个字段:alter table tableName add fileName fileType;
给tt_employee这个表的最后增长一个描述的字段:alter table tt_employee add e_describe varchar(40);

在表的第一个字段前面增长一个字段:alter table tableName add fileName fileType first;
给tt_employee这个表的加一个表示id的字段:alter table tt_employee add id int first;

在指定的字段后面增长一个新的字段:alter table tableName add fileName fileType after fileName;
给tt_employee这个表的e_location 后面增长一个e_from 的字段:
alter table tt_employee add e_from varchar(40) after e_location;

删除一个指定的字段:alter table tableName drop fileName;
例如删除tt_employee表中字段e_from:alter table tt_employee drop e_from。

修改字段的数据类型:alter table tableName modify fileName newFileType;
例如修改tt_employee表中字段e_name的类型为varchar(20):alter table tt_employee modify e_name varchar(20);

修改字段的名字:alter table tableName change oldFileName newFileName oldFileType;
例如修改tt_employee表中字段e_name的名字为name:alter table tt_employee change
e_name name varchar(20);

同时修改字段的名字和数据类型:alter table tableName change oldFileName newFileName newFileType;
例如修改tt_employee表中字段name为e_name并同时将数据类型改成varchar(30):alter table tt_employee change name e_name varchar(30);

修改字段的顺序:alter table tableName modify moveFileName fileType after fileName;
例如要将tt_employee表中的e_name字段移动到字段id的后面:
alter table tt_employee modify e_name varchar(30) after id;

表的约束
在数据库系统中,若是须要对表中的数据作一些完整性检查操做,能够经过的表的约束来完成。什么是完整性?完整就是指数据准确性和一致性。什么是完整性检查?就是数据库系统检查数据的完整性和一致性。
MySql提供了一套机制来检查数据库表中的数据是否知足用户的规定的条件,保证数据库表中数据的完整性,这种机制就是约束。
简单理解就是数据库系统提供了一套机制检查数据是否符合用户设定的要求。
MySql支持的完整性约束:
关键字 含义
NOT NULL 约束字段不能为空
DEFAULT 设置字段的默认值
UNIQUE KEY 约束字段的值是惟一的
PRIMARY KEY 约束字段为主键,能够做为该表记录的惟一标识
AUTO_INCREMENT 约束字段的值为自动增长
FOREIGN KEY 约束字段为表的外键
FOREIGN KEY以上的都比较好理解这里就不说了。
FOREIGN KEY(外键约束):外键约束保证多个表之间的参照完整性,即构建两个表两个字段之间的参照关系。创建外键约束的两个字段字段之间具备父子关系,子表字段的取值范围由父表字段决定。
create table tableName(
fileName type;

fileName type;
CONSTRAINT 外键约束名 FOREIGN KEY (属性名) REFERENCES 表名 (字段名)
)
例子:让部门表和员工表关联起来,首先建立部门表
create table t_dept(
deptid int primary key,
name varchar(20)
);
而后建立员工表:
create table t_employee(
id int ,
name varchar(20),
deptid int,
CONSTRANIT fk_id FOREIGN KEY(deptid) REFERENCES t_dept(deptid)
)
在设置外键约束时,子表中所设的外键字段必须与父表参考被约束的字段的数据类型一致,不然会报错。
当向子表插入数据时,设置外键约束的字段的数据类型和大小需和父表一致。
三:数据类型
整数类型:
整数类型名 字节数
TINYINT 1
SMALLINT 2
MEDUMINT 3
INT/INTEGER 4
BIGINT 8
每一类型又分为有符号和无符号,具体范围能够查看手册。
浮点数类型、位类型:
浮点类型 字节数
FLOAT 4
DOUBLE 8

位类型 字节数
BIT(M) 1-8
日期和时间类型:
日期和时间类型 字节数
DATE 4
DATETIME 8
TIMESTAMP 4
TIME 3
YEAR 1
字符串类型:
char字符串类型 字节数
CHAR(M) M的范围是0~255
VARCHAR(M) M的范围是0~65535
通常存储长度不长的字符串
TEXT字符串类型:
TEXT字符串类型 字节
TINYTEX 0~255
TEXT 0~65535
MEDIUMTEXT 0~16772150
LONGTEXT 0~4294967295
通常存储文本文件
BLOB系列字符串类型:
BLOB字符串类型 字节数
TINYBLOB 0~255
BLOB 0~2^16
MEDIUMBLOB 0~2^24
LONGBLOB 0~2^32
通常存储大容量的二进制文件,如:图片,音乐
四:数据的操做
约定:tableName--表名,fileN表示字段名,valueN表示值
建表语句:create table t_dept(id int primay key auto_increment,
name char(20),from char(20));
插入完整数据:
插入完整的数据:INSERT INTO tableName VALUES(value1,value2,...valueN);
或者,INSERT INTO tableName(file1,file2,...fileN) VALUES(value1,value2,...valueN);
例如往t_dept中插入一行记录:INSERT INTO t_dept values(1,'liang','guangxi');

插入部分数据:INSERT INTO tableName(file1,file2,...fileN) values(value1,value2,....valueN);
file1-fileN是要插入字段的名字,value1-valueN是插入字段对应的值。
例如往t_dept中的id、name插入部分数据:INSERT INTO t_dept(id,name) values(1,'liang');

一次插入多条完整数据:INSERT INTO tableName(file1,file2,...fileN) VALUES(values1,value2,...valueN),(values11,value12,...value1N),(values21,value22,...value2N)
(values31,value32,...value3N),(values41,value42,...value4N);
或者
INSERT INTO tableName (values1,value2,...valueN),(values11,value12,...value1N),(values21,value22,...value2N),(values31,value32,...value3N),(values41,value42,...value4N);
例如往t_dept中一次插入多条数据:
INSERT INTO t_dept values(1,'liang1','guangxi1'),(2,'liang21','guangxi21'),(3,'liang31','guangxi31'),(4,'liang41','guangxi41');

一次插入多条部分的数据记录:
INSERT INTO tableName(file1,file2,...fileN) values (values11,value12,...value1N),(values21,value22,...value2N),(values31,value32,...value3N),(values41,value42,...value4N);
file1-fileN是要插入数据的部分字段,valueN是对应字段的值。
例如在t_dept表中一次插入多条部分数据:
insert into t_dept(id,name) values (1,'liang'),(2,'liang2'),(3,'liang3);

更新数据:
更新特定数据的记录:update tableName set file1=value,file2=value,fileN=valueN
where condition;
例如将t_dept表中id<6的loc所有改成'beijing' :update t_dept set loc='beijing' where
id<6;

删除数据:
删除特定的数据记录:delete from tableName where condition;
例如删除t_dept表中id='1'的记录:delete from t_dept where id='1';