一.数据库的连接

mysql -u -p -h
-u 用户名
-p 密码
-h host主机

二.修改MySQL提示符

1.连接客户端时,通过参数指定

mysql -h localhost -u root --prompt 提示符

2.连接上客户端后,通过prompt命令修改

prompt 提示符
MySQL提示符
参数 描述
\D 完整的日期
\d 当前数据库
\h 服务器名称
\u 当前用户

三.库级知识

1 显示数据库: show databases; 2 选择数据库: use dbname; 3 创建数据库: create database dbname charset utf8; 4 删除数据库: drop database dbname;


四. 表级操作

1 显示库下面的表: show tables; 2 查看表的结构: desc tableName; 3 查看表的创建过程: show create table tableName; 4 创建表:

 create table tbName (
列名称1 列类型 [列参数] [not null default ],
....列2...
....
列名称N 列类型 [列参数] [not null default ]
)engine myisam/innodb charset utf8/gbk

例子:

create table user (
    id int auto_increment,
    name varchar(20) not null default '',
    age tinyint unsigned not null default 0,
   index id (id)
   )engine=innodb charset=utf8;

注:innodb是表引擎,也可以是myisam或其他,但最常用的是myisam和innodb,charset 常用的有utf8,gbk;

5 修改表 (1)修改表之增加列:

alter table tbName
add 列名称1 列类型 [列参数] [not null default ] 

注:add之后的旧列名之后的语法和创建表时的列声明一样

(2)修改表之修改列

alter table tbName
change 旧列名  新列名  列类型 [列参数] [not null default ]

注:旧列名之后的语法和创建表时的列声明一样

(3)修改表之减少列: alter table tbName drop 列名称;

(4)修改表之增加主键

alter table tbName add primary key(主键所在列名);

例:

alter table goods add primary key(id)

该例是把主键建立在id列上

(5)修改表之删除主键

alter table tbName drop primary key;

(6)修改表之增加索引

alter table tbName add [unique|fulltext] index 索引名(列名);

(7)修改表之删除索引

alter table tbName drop index 索引名;

(8)清空表的数据

truncate tableName;

五.列类型讲解 整型:

tinyint (0~255/-128~127) smallint (0~65535/-32768~32767) mediumint int bigint

参数解释:
        unsigned 无符号(不能为负)  zerofill 0填充  M 填充后的宽度
        举例:tinyint unsigned;tinyint(6) zerofill;

数值型

        浮点型:float double
        格式:float(M,D)  unsigned\zerofill;

字符型

        char(m) 定长
        varchar(m)变长
        text

日期时间类型

year       YYYY 范围:1901~2155. 可输入值2位和4位(如98,2012)
date       YYYY-MM-DD 如:2010-03-14
time       HH:MM:SS 如:19:26:32
datetime   YYYY-MM-DD  HH:MM:SS 如:2010-03-14 19:26:32
timestamp  YYYY-MM-DD  HH:MM:SS 特性:不用赋值,该列会为自己赋当前的具体时间

六.增删改查

1.插入数据

    insert into 表名(col1,col2,……) values(val1,val2……); -- 插入指定列
    insert into 表名 values (,,,,); -- 插入所有列
    insert into 表名 values   -- 一次插入多行
    (val1,val2……),
    (val1,val2……),
    (val1,val2……);

2.修改数据

    update tablename set
    col1=newval1,
    col2=newval2,
    ...
    ...
    colN=newvalN
    where 条件;

3.删除数据

delete from tablenaeme where 条件;

4.select 查询

(1) 条件查询 where

  1 比较运算符  = ,!=,< > <=  >=
  2 like , not like ('%'匹配任意多个字符,'_'匹配任意单个字符)
  3 in , not in , between and
  4 is null , is not null

(2) 分组 group by一般要配合5个聚合函数使用:max,min,sum,avg,count

(3) 筛选 having (4) 排序 order by (5) 限制 limit


七.连接查询

1.左连接

    .. left join .. on
    table A left join table B on tableA.col1 = tableB.col2 ;

例句:

  select 列名 from table A left join table B on tableA.col1 = tableB.col2

2.右链接: right join

3.内连接: inner join

左右连接都是以在左边的表的数据为准,沿着左表查右表. 内连接是以两张表都有的共同部分数据为准,也就是左右连接的数据之交集.


八.子查询 where 型子查询:内层sql的返回值在where后作为条件表达式的一部分 例句:

  select * from tableA where colA = (select colB from tableB where ...);

from 型子查询:内层sql查询结果,作为一张表,供外层的sql语句再次查询 例句:

  select * from (select * from ...) as tableName where ....

存储引擎

engine=Myisam\Innodb

1 Myisam 速度快 不支持事务 回滚 2 Innodb 速度慢 支持事务,回滚

①开启事务 start transaction; ②运行sql; ③提交,同时生效\回滚 commit\rollback;


触发器 trigger

监视地点:表 监视行为:增 删 改 触发时间:after\before 触发事件:增 删 改

创建触发器语法

    create trigger tgName
    after/before insert/delete/update
    on tableName
    for each row
    sql; -- 触发语句

删除触发器:drop trigger tgName;

索引

提高查询速度,但是降低了增删改的速度,所以使用索引时,要综合考虑. 索引不是越多越好,一般我们在常出现于条件表达式中的列加索引. 值越分散的列,索引的效果越好

索引类型 primary key主键索引 index 普通索引 unique index 唯一性索引 fulltext index 全文索引


mysql的常用命令

显示当前服务器版本 select version(); 显示当前日期时间 select now(); 显示当前用户 select user;

语法规则

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