一、mysql,数据库,表,字段和记录之间关系

mysql官方chm手册 mysql使用手册_MySQL基础操作

二、启动/停止服务

 须在管理员权限的命令符下进行

 启动:net start mysql

 停止:net stop mysql

三、数据库操作

1.登录数据库

  格式:mysql 参数

  登陆可用参数如下:

mysql官方chm手册 mysql使用手册_MySQL基础操作_02


  例:mysql -uroot -p (-P3306) (-h127.0.0.1)

  括号内容可省略

2.退出数据库

  1.exit

  2.quit

  3.\q

3.修改mysql提示符

  登陆时修改: mysql -uroot- p --prompt 你要改成的内容

  登陆后修改: prompt 你要改成的内容;

  既可改为参数,也可改为其他文字

  可用参数如下:

mysql官方chm手册 mysql使用手册_字段_03


  例:prompt \u@\h \d>

4.查看当前所有数据库

  show databases;

5.创建数据库

  create database [if not exists] 数据库名 {[default] character set [=] 编码方式};

6.查看创建数据库的指令

  show create database 数据库名;

7.修改数据库

  alter database [if not exists] 数据库名 {[default] character set [=] 编码方式};

8.删除数据库

  drop database [if exists] 数据库名;

9.使用数据库

  use 数据库名;

10.查看当前数据库

  select database();

四、常用小命令

1.查看当前服务器版本

  select version();

2.查看当前日期时间

  select now();

3.查看当前用户

  select user();

五、语句规范

 1.关键字与函数名称全部大写。

 2.数据库名称、表名称、字段名称全部小写。

 3.SQL语句必须以分号结尾。

六、数据类型

1.整型

mysql官方chm手册 mysql使用手册_mysql官方chm手册_04


2.浮点型

mysql官方chm手册 mysql使用手册_字段_05


3.时间日期型

mysql官方chm手册 mysql使用手册_MySQL基础操作_06


4.字符型

mysql官方chm手册 mysql使用手册_MySQL_07

七、表的操作

(一)查看当前数据库中所有表

  show tables [from 数据库名];

(二)创建表

  create table [if not exists] 表名 (

  字段 类型 约束,

  …

  字段 类型 约束

  );

  例:

  create table tb1 (

  username varchar(20),

  age tinyint unsigned,

  salary float(8,2) unsigned

  );

(三)查看表的结构

  1.desc 表名;

  2.show columns from 表名;

(四)查看索引

  show index from 表名(\G);

  加\g即为以网格形态显示

(五)查看创建表的命令

  show create table 表名;

(六)表更名

  1.方法一:

  alter table 旧表名 raname [to | as] 新表名;

  2.方法二:

  rename table 旧表名 to 新表名 [, 旧表名 to 新表名,…]

  注:方法二可同时对多张表重命名

八、自动编号与约束

自动编号:

 auto_increment

 注:

  1.须和主键配合使用。

  2.默认情况下起始值为1,每次的增量为1。

约束:

(一)根据功能划分

  1.非空约束

   空值:null 可省略

   非空:not null

  2.主键约束

   primary key

   注:

   1.每张表里只能存在一个主键。

   2.主键保证记录的唯一性,即该字段的记录不能相同。

   3.主键自动为not null。

  3.唯一约束

   unique key

   注:

   1)可以保证记录的唯一性。

   2)字段可以为空值。

   3)每张表可以存在多个唯一约束。

  4.默认约束

   default

   注:当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

   例:sex enum('1','2','3') default '3'

  5.外键约束

   1)外键约束的要求:

    (1)父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

    (2)数据表的存储类型只能为InnoDB。

    (3)外键列和参照列必须具有相似的数据类型。 其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

    (4)外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

   2)外键约束的参照操作:

    (1)CASCADE :从父表删除或更新且自动删除或更新子表中匹配的行。

    (2)SET NULL :从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。

    (3)RESTRICT :拒绝对父表的删除或更新操作。

    (4)NO ACTION :标准SQL的关键字,在MySQL中与RESTRICT相同。

    例:foreign key (字段) reference 表名(字段名) on delete cascade

(二)根据列的数目划分

  1.列级约束:

   对一个数据列建立的约束。列级约束既可以在列定义时声明,也可以在列定义后声明。

  2.表级约束:

   对多个数据列建立的约束。表级约束只能在列定义后声明。

   注:非空约束,默认约束不存在表级约束。

九、列的操作

(一)添加

  1.添加单列

   alter table 表名 add [colunm] 字段 类型 约束 [first | after 字段];

   注:first放在首列,after 字段则放到那个字段后面,省略则放在最后一列。

  2.添加多列

   alter table 表名 add [colunm] (字段 类型 约束,字段 类型 约束,…);

(二)删除

  1.删除单列

   alter table 表名 drop [colunm] 字段;

  2.删除多列

   alter table 表名 drop [colunm] 字段,drop [colunm] 字段,…;

   注:drop可以和add连用,用逗号分隔。

(三)添加约束

  1.添加主键约束

   alter table 表名 add [constraint [键名]] primary key [索引类型] (字段);

  2.添加唯一约束

   alter table 表名 add [constraint [键名]] unique {index | key} [索引名称] [索引类型] (字段,字段,…);

  3.添加外键约束

   alter table 表名 add [constraint [键名]] foreign key [索引名称] (字段,字段,…) references 表名 (字段);

  4.添加默认约束

   alter table 表名 alter [colunm] 字段 set default 默认值;

(四)删除约束

  1.删除主键约束

   alter table 表名 drop primary key;

  2.删除唯一约束

   alter table 表名 drop unique {index | key} index_name;

  3.删除外键约束

   alter table 表名 drop foreign key 约束名;

  4.删除默认约束

   alter table 表名 alter [colunm] 字段 drop default;

(五)修改

  1.modify修改

   alter table 表名 modify [column] 列名 列定义 [first | after 列名];

   注:只能修改列的定义。

  2.change修改

   alter table 表名 change [column] 旧列名 新列名 列定义 [first | after 列名];

   注:既修改列名也修改列定义。

十、记录的操作

(一)插入记录

  1.insert [into] 表名 [(字段,…)] {value | values} (值,…),(值,…),…;

  注:

   1.值可以为default,null,表达式,相应类型的字符或数字。

   2.若省略字段名则需要赋值所有字段。

   3.可以用来批量插入数据。

  2.insert [into] 表名 set 字段=值,…;

  注:

   1.可以使用子查询

   2.不能批量查找

   3.使用较少

  3.insert [into] 表名 [(字段,…)] select …;

  注:可将查询结果插入到指定数据表中。

(二)更新记录(单表更新)

  update 表名 set 列名=值 [, 列名=值,…] [where 条件];

(三)查找记录

  select 查询表达式 [, 查询表达式 …]

  [

  from 表名

  [where 条件]

  [group by {字段名 | 位置} [ASC| DESC], …]

  [having where 条件]

  [order by {字段名 | 表达式 | 位置} [ASC| DESC], …]

  [LIMIT {[offset,] row_ count| row_count OFFSET offset}]

  ]

  1.查询表达式:

   1)每一个表达式表示想要的一列,必须有至少一个。

   2)多个列之间以英文逗号分隔。

   3)星号(*)表示所有列。tbl_ name.*可以表示命名表的所有列。

   4)查询表达式可以使用 [ AS ] 别名 为其赋予别名。

   5)别名可用于GROUP BY , ORDRE BY或HAVING子句。

  2.where条件表达式

   对记录进行过滤,如果没有指定where子句,则显示所有记录。

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

  3.group by查询结果分组

   [group by {字段名 | 位置} [ASC | DESC], …]

  注:

   1.ASC为升序,DESC为降序。

   2.位置为select语句中的字段顺序,第几个字段则为几。

  4.having分组条件

   [having where条件表达式]

  5.order by对查询结果进行排序

   [order by {字段 | 表达式 | 位置} [ASC| DESC], …]

  注:可以同时按两个字段排序,先按第一个字段排序,再遵守第二个字段排序

  6.limit限制查询结果返回的数量

   [limit {[偏移值,] 行数 | 行数 OFFSET 偏移值}]

  注:记录从第0行开始

(四)删除数据(单表删除)

  delete from 表名 [where 条件];

十一、提示

 成功:Query OK

 失败:ERROR

 查看警告信息:show warnings;