一、MySQL
1.mysql 安装提示: Typical典型安装 custom自定义安装 Complete 完全安装。 Detailed详细配置 Standard标准配置。
2.目录结构
bin: 存储可执行文件
data: 存储数据文件
docs: 文档
include: 存储包含的头文件
lib: 存储库文件
shave: 错误信息和字符集文件
3. 配置选项
配置文件 安装目录下 my.ini文件
[Mysql]
default-character-set=uyf8
[client]
port=3306 端口号
[Mysqld]
basedir=
datadir=
character-set-server=utf8
4. 启动停止mysql。(所有win服务启动停止 net start/stop)
启动 net start mysql;
停止 net stop mysql;
5. mysql登录 退出
登录 mysql -uroot -p -P3306 -h127.0.0.1 ;
退出 mysql>exit,quit,q;
参数:
-V,--version 输出版本信息
_D,--database=name 打开指定数据库
--delimiter=name 指定分隔符
-h,--host=name 服务器名称
-p,--password[=name] 密码
-P,--port=# 端口号
--prompt =name 提示符
-u,--user=name 用户名
6.修改提示符
连接客户端时 shell-> mysql -uroot -p --prompt 提示符
连上客户端后 mysql> prompt 提示符
提示符可选 \h 服务器,\D完整日期,\d数据库,\u当前用户。
7.数据库常用命令
SELECT VERSION() 显示当前服务器版本号
SELECT NOW() 显示当前日期时间
SELECT USER() 显示当前用户
8.MySQL语句规范
关键字函数名称全部大写。
数据库名称,表名称,字段名称全部小写。
SQL语句以分号结尾。
二、操作数据库
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARATER SET [=] charset_name
EXISTS存在 CHARATER SET编码方式 省略为默认
查看数据库
SHOW {DATABASE|SCHEMA} [LIKE 'pattern' | WHERE expr]
查看编码方式
SHOW CREACT DATABASE db_name
修改数据库
ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACT SET [=] charset_name;
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
三、数据类型
整数 TINYINT 1字节 2^8
SMALLINT 2字节 2^16
MEDIUMINT 3字节
INT 4字节
BIGINT 8字节
浮点数 FLOAT[(M,D)]
DOUBLE[(M,D)]
日期 YEAR 1字节
TIME 3字节
DATE 3字节
DATETIME 8字节
TIMESTAMP 4字节 时间戳
字符型 CHAR(M) 0<=M<=2^8-1 255
VARCHAR(M) L+1字节 L<=M 0<=M<=^16
TINYTEXT L+1字节 L<2^8
TEXT L+2字节 L<2^16
MEDIUMTEXT L+3字节 L<2^24
LONGTEXT L+4字节 L<2^32
ENUM('value1',......) 枚举
SET('value1',.......) 集合
四、操作数据表
打开数据库: USE db_name
创建数据表 CREATE TABLE [IF NOT EXISTS] tbl_name (colum_name data_type,...) (UNSIGNED)
查看数据表 SHOW TABKES [FROM db_name] [LIKE 'pattern' | WHERE expr]
SHOW COLUMNS FROM tbl_name
添加单列 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 DORP [COLUMN] col_name,DORP col_name [DORP col_name,ADD col_name,...] 可同时删除、增加。
添加主键约束 ALTER TABLE tbl_name ADD [CONSTRAINT【约束】 [symbd]] PRIMARY KEY [index_type] (index_col_name,...)
添加唯一约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbd]] UNIQUE [INDEX | KEY] [index_name] [index_type] (index_col_name,...)
添加外键约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbd]] FOREIGN KEY [index_name] (index_col_name,...) reference_definiton
添加、删除默认约束 ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
删除主键约束 ALTER TABLE tbl_name DROP PRIMARY KEY
删除唯一约束 ALTER TABLE tbl_name DROP {INDEX | KEY} index_name
查看约束 SHOW INDEX FROM tbl_name 句末可以加(\G)
删除外键约束 ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
查看外键 SHOW REATE TABLE tbl_name
修改列定义 ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
修改列名称 ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name] 实际少用易产生错误
数据表更名 方法一 ALTER TABLE tbl_name RENAME [TO | AS] new_tbl_name
方法二(实际少用) ALTER TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2,...]
五、约束
1.表级约束和列级约束 保证数据完整性和一致性。
表级约束 对多个数据列约束,只能在列定义后声明。(用的很少)
列级约束 对一个数据列约束,既可以在列定义时声明,也可以在列定以后声明。
2.空值与非空约束 NULL NOT NULL
3.自动编号 AUTO_INCREMENT 必须与主键一起使用。 (INT型或小数位为0的FLOAT型,默认起始为1,增量为1)
4.主键约束 PRIMARY KEY (自动NOT NULL)
5.唯一约束 UNIQUE KEY (保持记录唯一性,可以为NULL但只能有一个)
6.默认约束 DEFAULT
7.外键约束 FOREIGN KEY 功能是实现一对一,一对多关系。实际使用中很少用外键约束,大多用逻辑约束。
*外键约束要求
a. 父表(子表参照的表)与子表(具有外键列的表)必须使用相同存储引擎,禁止使用临时表。
b. 数据存储引擎只能为InnoDB。
查看存储引擎 SHOW CREATE TABLE tbl_name;
默认存储引擎在my.ini文件 default-storage-engine=INNODB
c. 外键和参照列具有相似的数据类型,数字的长度和符号位必须相同,字符长度可不同。
d.外键和参照列必须创建索引。外键不存在索引时MySQL自动创建。
显示索引 SHOW INDEXES FROM tbl_name\G;
*外键约束参照操作
a. CASCADE 从父表删除或更新时,自动删除或更新子表中匹配的行。
b. SET NULL 从父表删除或更新时,设置子表中外键列为NULL,必须保证子表列没有指定NOT NULL。
c. RESTRICT 拒绝对父表的删除或更新。
d. NO ACTION 标准SQL关键字,与RESTRICT相同。
六、操作记录
插入记录 INSET [INTO] tbl_name [(col_name)] [VALUES |VALUSE ] ({expr | DEFAUT},...) ,(...),... 自动编号字段可赋值NULL或DEFAULT
INSET [INTO] tbl_name SET col_name={expr | DEFAULT},...=... 此方法用于子查询(subQuery)只能一次插入一条记录。
INSET [INTO] tbl_name [(col_name,...)] SELECT... 此方法可以将查询结果插入指定的数据表。
更新记录 (单表更新)UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1 | DEFAULT} [,col_name2={expr2 | DEFAULT}]...[WHERE where_condition]
删除记录 (单表删除)DELETE FROM tbl_name [WHERE where_condition【条件】]
查找记录 (数据表中SELECT语句占表操作的80%以上。)
SELECT select_expr [,select_expr...] (可以多表查询:表名.字段名,表名.字段名,...)
[
FROM table_references 参照
[WHERE where_condition] 条件
[GROUP BY {col_name | position} [ASC | DESC],...] 分组
[HVING where_condition] 分组条件
[ORDER BY {col_name | expr | position} [ASC | DESC],...] 结果排序
[LIMIT {[offset,] row_count | row_count OFFSET offset}] 限制返回数量
]
select_expr 查询表达式:每一个表达式表示想要的某一列,必须有至少一个。
多个列之间以英文逗号分隔。
星号(*)表示所有列。tbl_name.*可以表示命名表的所有列。
查询表达式可以使用[AS] alias_name为其赋予别名。
别名可用于GROUP BY,ORDRE BY或HAVING子句。
WHERE条件表达式:对记录进行过滤,如果没有指定WHERE子句,则查询所有记录。
在WHERE表达式中,可以使用MySQL支持的函数或运算符。
查询结果分组:GROUP BY【分组】 {col_name【列名】 | position【位置值为数字 1第一个字段,2第二个..】} [ASC【升序 默认】 | DESC]【降序】,...]
查询结果分组条件:HVING【拥有 持有】 where_condition【分组条件】
对查询结果排序:ORDER BY {col_name | expr | position} [ASC | DESC],...
限制程序结果返回的数量:LIMIT {[offset,【从第几条开始,从0计起】] row_count【返回记录数量】 | row_count OFFSET offset}