一、mysql,数据库,表,字段和记录之间关系
二、启动/停止服务
须在管理员权限的命令符下进行
启动:net start mysql
停止:net stop mysql
三、数据库操作
1.登录数据库
格式:mysql 参数
登陆可用参数如下:
例:mysql -uroot -p (-P3306) (-h127.0.0.1)
括号内容可省略
2.退出数据库
1.exit
2.quit
3.\q
3.修改mysql提示符
登陆时修改: mysql -uroot- p --prompt 你要改成的内容
登陆后修改: prompt 你要改成的内容;
既可改为参数,也可改为其他文字
可用参数如下:
例: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.整型
2.浮点型
3.时间日期型
4.字符型
七、表的操作
(一)查看当前数据库中所有表
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;