小白的MySQL学习笔记

MySQL下载地址:https://dev.mysql.com/downloads/
html


mysql -u root -p 密码     链接数据库,exit 退出数据库
mysql


1、管理MySQL的命令sql

net start mysql #启动mysql服务数据库

net stop mysql  #关闭mysql服务ide

1. use 数据库名:选择要操做的mysql数据库函数

2. show DATABASES:显示全部数据库编码

3. show TABLE:显示指定数据库下的全部表spa

4. show COLUMNS FROM 数据表:显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其余信息日志

5. show INDEX FROM 数据表:显示详细索引信息,包括主键htm

6. show TABLE STATUS FROM 数据库:显示数据库中全部表的信息

7. show TABLE STATUS FROM 数据库 like ‘...’:表名为何的表的信息

8. DESCRIBE 表名:查看表的定义

 

2、数据库操做

CREATE DATABASE 数据库名:建立数据库

DROP DATABASE 数据库名 :删除数据库

use 数据库名:链接数据库

 

3、数据类型

Float 4个字节,单精度浮点型数值

Double8个字节,双精度浮点型数值

Int4个字节,大整型数值

Date:格式YYYY-MM-DD日期值

Time:格式HH:MM:SS时间值

Year:格式YYYY年份值

Char:定长字符串

Varchar:变长字符串

Text:长文本数据

详细数据类型可参考:http://www.runoob.com/mysql/mysql-data-types.html

 

4、数据表操做

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 (修改字段顺序)

 

5、数据表中对数据的操做

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

 

6、Mysql的事务

事务是必须知足4个条件

一、事务的原子性Atomicity一组事务,要么成功;要么撤回。

二、稳定性Consistency 有非法数据(外键约束之类),事务撤回。

三、隔离性Isolation事务独立运行。

四、可靠性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 开启自动提交

 

7、索引的操做

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]


欢迎你们指出错误地方以及我没有涉及到的地方...