码迷,mamicode.com
首页 > 数据库 > 详细

Mysql一

时间:2016-07-07 19:03:04      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

(1)启动停止MySQL服务
net start mysql
net stop mysql
*所有的window服务都可以通过此命令停止或启动*

(2)MySQL命令使用
-V 输出版本信息并退出
-u 用户名
-p 口令号
-P 端口号   3306//默认
-h 服务器名称 127.0.0.1//默认本地
exit  quit \q 退出mysql
(3)修改MySQL提示符
连接客户端时通过参数指定
shell>mysql -uroot -proot -prompt 提示符
连接客户端以后可以通过prompt命令修改
mysql>prompt 提示符
MySQL提示符: \D完整的日期
                           \d当前数据库
                           \h服务器名称
                           \u当前用户

(4)MySQL常用命令
显示当前服务器版本
SELECT VERSION();
显示当前日期时间
SELECT NOW();
显示当前用户
SELECT USER();
(5)MySQL语句的规范
关键字与函数名称全部大写
数据库名称,表名称,字段名称全部小写
SQL语句必须以分号结尾
(5)操作数据库
创建数据库
 CREATE{DATABASE | SCHEMA}[IF NOT EXISTS] db_name
[DEFAULT] CHARACTER SET [=] charset_name
CHARACTER SET gbk;    编码方式
{}必选    | 选择    []可选项
SHOW WARNINGS 显示警告信息
SHOW CREATE DATABASE db_name
SHOW{DATABASES|SCHEMAS}
查看当前服务器下的数据表列表
[LIKE‘pattern‘|WHERE expr]
修改数据库
ALTER{DATABASE|SCHEMA} [db_name]
[DEFAULT] CHARACTER SET [=] charset_name
删除数据库
DROP(DATABASE|SCHEMA)[IF EXISTS] db_name
(6)数据类型
(选择最合适的不是最大的)
TINYINT            1个字节 UNSGNED无符号位
SMALLINT        2个字节
MEDIUINT        3个字节
INT                        4个字节
BIGINT                8个字节
FLOAT[(M,D)]  大约小数点后7位 
DOUBLE[(M,D)]

日期
YEAR             1
TIME                  3
DATE                3
DATETIME         8
TIMESTAMP      4
一般不用 一般用数字类型取代
字符
CHAR(M) 定长 空格补齐
VARCHAR(M)变长  不补
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM(‘value1‘,‘value2‘)枚举
SET(‘value1‘,‘value2‘)集合

(7)数据表

打开数据库
USE 数据库名称
SELECT DATABASE();显示当前打开的数据库

创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
    column_name data_type,
       ....
)
技术分享

查看数据表
SHOW TABLES[FROM db_name](from 可以查看其它数据库中的表)
[LIKE ‘pattern‘|WHERE expr]
查看数据表的结构
SHOW COLUMNS FROM tbl_name

插入记录
INSERT[INTO] tbl_name[(col_name,...)]VALUES(val,...)
技术分享
记录的查找
SELECT expr,...FROM tbl_name
空值与非空
NULL,字段可以为空
NOT NULL, 字段禁止为空
AUTO_INCREMENT
自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次都增量为1
PRIMARY KEY

主键约束
每张数据表只能存在一个主键
主键保证记录的唯一性
主键自动为NOT NULL
技术分享

UNIQUE KEY
唯一约束
唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个唯一约束
技术分享
技术分享

DEFAULT
默认值
当插入记录时,如果没有明确为字段赋值,则自动赋默认值
技术分享
技术分享
外键约束
要求:
1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表
2.数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似(数字的情况要相同)的数据类型。其中数字的长度或是是否有符号位必须相同;而自负的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

父表:

技术分享
子表:
技术分享
pid必须为SMALLINT UNSIGNED 

查看索引:
SHOW INDEXES FROM provinces
父表(主键索引):        
技术分享

子表(id为主键索引):
技术分享
(pid为系统自动创建的索引)
技术分享
技术分享

外键约束的参照操作:
1 CASCADE:从父表删除或更新且自动删除或更新子表相匹配的行
技术分享
技术分享技术分享

技术分享

技术分享
2 SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定 NOT NULL
3 RESTRICT :拒绝对父表的删除或更新操作。
4 NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

表级约束与列级约束
对一个数据列建立的约束,为列级约束  可以在列定义的时声明,也可以在列定义后声明(较多使用)
对多个数据列建立的约束,为表级约束  只能在列定义后声明(很少使用)
技术分享列定义的后面定义了主键或外键约束

修改数据表:
添加单列
ALTER TABLE tbl_name ADD[COLUMN] col_name
column_definition[FIRST]AFTER col_name]
技术分享
默认插入到所有列的最后
技术分享

插入到指定列之后
技术分享

添加多列
ALTER TABLE tbl_name ADD[COLUMN](col_name column_definition,...)
不可以指定位置关系只能在最下方,列要加小括号
技术分享
删除列
ALTER TABLE tbl_name DROP[COLUMN] col_name;
多次操作用‘,’隔开
技术分享

添加约束;
添加主键约束
ALTER TABLE tbl_name ADD[CONSTRAINT [symbol]]
PRIMARY KEY [index_type](index_col_name,...)
添加唯一约束
ALTER TABLE tbl_name ADD[CONSTRAINT[symbol]]
FOREIGN KEY [index_name](index_col_name,...)
reference_definition
添加外键约束
技术分享
添加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name{SET DEFAULT literal|DROP DEFAULT}
改变位置或者列的定义(注意数据丢失)
ALTER TABLE tbl_name MODIFY[COLUMN] col_name column_definition [FIRST|AFTER col_name]
修改列名称(少使用)
CHANGE命令比MODIFY多了个修改列名称
ALTER TABLE tbl_name CHANGE old_col_name new_col_name column_definition [FIRST|AFTER col_name]
数据表更名(少使用)
方法1
ALTER TABLE tbl_name RENAME[TO/AS] new_tbl_name
方法2
RENAME TABLE tbl_name TO new_tbl_name[,tbl_name2 TO new_tbl_name2]...





Mysql一

标签:

原文地址:http://www.cnblogs.com/songwenyi/p/5650742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!