MySQL下载地址:https://dev.mysql.com/downloads/
mysql -u root -p 密码 连接数据库,exit 退出数据库
一、管理MySQL的命令
net start mysql #启动mysql服务
net stop mysql #关闭mysql服务
1. use 数据库名:选择要操作的mysql数据库
2. show DATABASES:显示所有数据库
3. show TABLE:显示指定数据库下的所有表
4. show COLUMNS FROM 数据表:显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息
5. show INDEX FROM 数据表:显示详细索引信息,包括主键
6. show TABLE STATUS FROM 数据库:显示数据库中所有表的信息
7. show TABLE STATUS FROM 数据库 like ‘...’:表名为什么的表的信息
8. DESCRIBE 表名:查看表的定义
二、数据库操作
CREATE DATABASE 数据库名:创建数据库
DROP DATABASE 数据库名 :删除数据库
use 数据库名:连接数据库
三、数据类型
Float :4个字节,单精度浮点型数值
Double:8个字节,双精度浮点型数值
Int:4个字节,大整型数值
Date:格式YYYY-MM-DD,日期值
Time:格式HH:MM:SS,时间值
Year:格式YYYY,年份值
Char:定长字符串
Varchar:变长字符串
Text:长文本数据
详细数据类型可参考:http://www.runoob.com/mysql/mysql-data-types.html
四、数据表操作
1. CREATE TABLE table_name (column_name column_type); 创建数据表
eg:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
注释:
IF NOT EXISTS :如果不存在则创建
UNSIGNED:不带符号的
AUTO_INCREMENT:自增的属性(+1),一般用于主键
PRIMARY KEY:设置主键
ENGINE 设置存储引擎,CHARSET 设置编码,为了解决取数据时的乱码问题
NOT NULL:字段不能为空
DEFAULT:字段默认值:
UNIQUE KEY:字段的值是唯一
FOREIGN KEY:表的外键
2.DROP TABLE table_name 删除数据表
3.修改表:
(1)修改表名:ALTER TABLE old_table_name RENAME [TO] new_table_name
(2)增加字段:
ALTER TABLE table_name ADD 属性名 属性类型 (默认加在最后)
ALTER TABLE table_name ADD 属性名 属性类型 FIRST(最前面)
ALTER TABLE table_name ADD 属性名 属性类型 AFTER 属性名(在指定字段后)
(3)删除字段:ALTER TABLE table_name DROP 属性名
(4)修改字段:
ALTER TABLE table_name MODIFY 属性名 数据类型(修改字段的数据类型)
ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型(修改字段名)
ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型(修改字段名和数据类型)
ALTER TABLE table_name MODIFY 属性1 数据类型 FIRST |AFTER 属性2 (修改字段顺序)
五、数据表中对数据的操作
1.插入数据( INSERT )
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
[,( value1, value2,...valueN );]可插入多条数据
2. 更新数据( UPDATE )
UPDATE table_name SET field1 = value1 [,field2=value2] [WHERE CONDITION];(没有where条件则删除表中所有数据)
3. 删除数据( DELETE )
DELETE FROM table_name [WHERE CONDITION];(没有where条件则删除表中所有数据)
4. 查询数据
(1) 单表查询:
·SELECT * FROM table_name; //通过‘*’可以查询表中所有字段。
·SELECT DISTINCT field1,field2 FROM table_name;//DISTINCT避免查询数据中的重复值
·SELECT ename,sal*12 FROM t_emp;//可以实现数学四则运算(+,-,*,/,%)
·SELECT CONCAT(ename,’的年薪为:’,sal*12) yearsalary FROM t_emp; //通过CONCAT()合并字符串和字段来实现字段的显示格式
·SELECT field ... FROM table_name WHERE CONDITION; //通过CONDITION对数据进行条件查询,条件查询可以带关系运算符(>,<,=,!=,>=,<=)和逻辑运算符(AND(&&),OR(||),XOR(逻辑异或),NOT(!) )
·SELECT field ... FROM table_name WHERE field BETWEEN VALUE1 AND VALUE2
//带有关键字BETWEEN AND的查询(在VALUE1和VALUE2之间的数据)
·SELECT field ... FROM table_name WHERE field IS NULL //IS NULL关键字判断field是否为NULL,NULL则符合条件
·SELECT field ... FROM table_name WHERE field IN (value1....)//使用IN关键字判断field值是否在(value1....)中。
·SELECT field ... FROM table_name WHERE field LIKE ‘A_’//使用LIKE查询field以A开头的数据(‘_’匹配单个字符,‘%’匹配任意长度字符)
·SELECT field ... FROM table_name WHERE CONDITION ORDER BY field [DESC|ASC] //将查找到的数据按field字段进行排序(ASC升序(默认),DESC降序)
·SELECT field ... FROM table_name WHERE CONDITION LIMIT ROW_COUNT //指定查询结果的数量,ROW_COUNT表示显示的行数
·SELECT function( field ) FROM table_name WHERE CONDITION //统计函数的使用function包括COUNT(),AVG(),SUM(),MAX(),MIN().
·SELECT * FROM table_name WHERE CONDITION GROUP BY field; //将查询结果按field分组
·SELECT * FROM table_name WHERE CONDITION GROUP BY field HAVING CONDITON;
//通过having指定分组后的条件
(2) 多表查询:
1) 内连接:SELECT * FROM table_name1 INNER JOIN table_name2 ON condition;
//condition是查询条件
2) 外连接:
SELECT * FROM table_name1 LEFT|RIGHT|FULL [OUTER] JOIN table_name2 ON condition; //左外连接,右外连接,全外连接。
3) 子查询:SELECT * FROM table_name where field IN (SELECT ....);
IN:field 是否在子查询的结果中
ANY:field是否满足子查询结果的任意一条记录
ALL:主查询条件满足子查询结果的全部记录
EXISTS:布尔类型,子查询有结果时为true,否则为false
六、Mysql的事务
事务是必须满足4个条件
1、事务的原子性(Atomicity):一组事务,要么成功;要么撤回。
2、稳定性(Consistency) :有非法数据(外键约束之类),事务撤回。
3、隔离性(Isolation):事务独立运行。
4、可靠性(Durability):软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。
事务控制语句:
1.BEGIN或START TRANSACTION;显式地开启一个事务;
2.COMMIT(COMMIT WORK):COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;
3.ROLLBACK(ROLLBACK WORK):回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
4.SAVEPOINT identifier:SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;
5.RELEASE SAVEPOINT identifier:删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
6.ROLLBACK TO identifier:把事务回滚到标记点;
7. SET TRANSACTION:用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。
直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交
七、索引的操作
1. 创建索引:
(1) 创建表时创建:
CREATE TABLE table_name(...,INDEX [indexName] (username(length)));
(2) 普通创建:
CREATE INDEX indexName ON mytable(username(length));
(3) 修改表结构(添加索引):
ALTER table tableName ADD INDEX indexName(columnName);
2. 删除索引:
DROP INDEX [indexName] ON mytable;
3.显示索引信息:SHOW INDEX FROM table_name;[\G]
欢迎大家指出错误地方以及我没有涉及到的地方...