MySQL学习笔记-基础篇

来源:互联网 发布:php 分班问题 编辑:程序博客网 时间:2024/05/22 10:27

一、安装与登录

这里我使用的环境是Ubuntu 14.04。安装命令如下:

#安装 MySQL 服务端、核心程序sudo apt-get install mysql-server#安装 MySQL 客户端sudo apt-get install mysql-client

安装结束后,用以下命令验证是否安装并启动成功:

sudo netstat -tap | grep mysql

返回如下值,表示安装成功:

tcp  0  0  localhost:mysql  *:* LISTEN  14691/mysqld

打开MySQL:

sudo service mysql start 

需要登录MySQL,回车后输入root密码,此密码在MySQL安装时会要求设置:

sudo mysql -u root -p

退出MySQL可以使用:quit或exit命令。

二、基本操作

1. 对数据库的操作

 #查看数据库 SHOW DATABASES;
 #创建数据库 CREATE DATABASE db_name; 
 #连接数据库 USE db_name
 #删除数据库 DROP DATABASE db_name;
 #引用已有数据库 SOURCE 数据库路径/文件名;

2. 对表的操作

#查看表 show tables;

2.1 创建表

(1)创建命令

#创建表CREATE TABLE <表名> (列名a 数据类型(数据长度) [约束],列名b 数据类型(数据长度) [约束],列名c 数据类型(数据长度) [约束]...);
 #例 CREATE TABLE student (  id INT(10), name CHAR(12), sex ENUM('M','F'), age INT(3), class CHAR(8), GPA FLOAT(2) );

(2)数据类型

数据类型 大小 用途 格式 INT 4 整数 FLOAT 4 单精度浮点数 DOUBLE 4 双精度浮点数 ENUM 单选(如性别) ENUM(‘a’,’b’,’c’) SET 多选 SET(‘1’,’2’,’3’) DATE 3 日期 YYYY-MM-DD TIME 3 时间点或持续时间 HH:MM:SS YEAR 1 年份 YYYY CHAR 0~255 定长字符串 VARCHAR 0~255 变长字符串 TEXT 0~65535 长文本数据

CHAR和VARCHAR的区别:对于字符串“abc”,若用CHAR(10)存储,则字符串存储将占用10个字节(包括7个空字符);而如果用VARCHAR(10)则只占用3个字节,10只是最大存储长度,当字符串的长度小于10时,按实际长度存储。
(3)约束

约束类型 主键 默认值 唯一 外键 非空 关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL
#例CREATE TABLE student(id int(10) not null primary key auto_increment,name char(12) not null,sex ENUM('M','F'),age INT(3),class CHAR(8),GPA DOUBLE(16,2) default(0.0));

2.2 插入数据

插入数据语句结构为:

INSERT INTO <表名> [(<字段名1>[,..<字段名n >])] VALUES(值1)[,(值n)]
#例INSERT INTO student VALUES (2013101101,'张三','F',20,'class2',3.3);INSERT INTO student (id,name,sex) VALUES(2013110110,'李四','M');

2.3 表的查询

(1)表的查询语句结构
表的查询语句结构为:

SELECT 要查询的列名FROM 表名WHERE 限制条件;
#例1:查询所有列SELECT *FROM student;
#例2:查询GPA大于3.0的所有学生的学号SELECT idFROM studentWHERE GPA>3.0; 

(2)WHERE查找限制条件

  • 数学符号 (=,<,>,>=,<=)
    举例见上面的例2。
  • AND / OR / BETWEEN … AND …
    例:
    SELECT id FROM studnt WHERE age BETWEEN 21 AND 25;

    SELECT id FROM studnt WHERE age > 21 AND age < 25;
  • IN / NOT IN
    SELECT id,name,class FROM student WHERE class IN ('class1','class5');
  • LIKE 和通配符
    关键字 LIKE 在SQL语句中和通配符一起使用,通配符代表未知字符。SQL中的通配符是 _ 和 % 。其中 _ 代表一个未指定字符,% 代表不定个未指定字符。
    #查找2013级所有章姓同学的GPA
    SELECT id,GPA FROM student WHERE name LIKE '章%' AND id LIKE '20132201___

(3)排序与分组:ORDER BY & GROUP BY
默认情况下,ORDER BY的结果是升序排列,而使用关键词ASC和DESC可指定升序或降序排序。

#例:对学生表进行GPA的降序排序SELECT *FROM studentORDER BY GPA DESC;

GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。基本的语法格式如下:

GROUP BY 属性名 [HAVING 条件表达式] [WITH ROLLUP]
  • 属性名:是指按照该字段的值进行分组。
  • HAVING 条件表达式:用来限制分组后的显示,符合条件表达式的结果将被显示。
  • WITH ROLLUP:将会在所有记录的最后加上一条记录。加上的这一条记录是上面所有记录的总和。
#例:对学生表按性别分组,并通过select返回结果SELECT *FROM studentGROUP BY sex;

需要注意的是,使用MySQL里的GROUP BY分组语句查询的话,只能返回每个组里的第一条记录

(4)SQL内置函数
SQL有5个内置函数,都是对SELECT的结果进行操作。

函数名: COUNT SUM AVG MAX MIN 作用: 计数 求和 求平均值 最大值 最小值
#例:查询GPA大于3.8的学生数量(AS用于重命名查询结果)SELECT COUNT(id)  AS BestStudentNumberFROM studentWHERE GPA >= 3.8;

(5)子查询
SELECT查询中的WHERE子句是可以嵌套子查询的,即在查询结果中再次进行查询。

#例:查询二班所有学生的平均年龄SELECT AVG(age)FROM studentWHERE id IN {SELECT idFROM studentWHERE class = 'class2'};

2.4 其他操作:删、改

(1)对表的操作

#删除一个表DROP TABLE 表名字;
#重命名一个表,三种方式同样的效果RENAME TABLE 原名 TO 新名;ALTER TABLE 原名 RENAME 新名;ALTER TABLE 原名 RENAME TO 新名;

(2)对表结构的修改

#增加一列,不使用AFTER关键字时默认插在表的最后一列#使用FIRST关键字则将列放在第一列的位置ALTER TABLE 表名字 ADD [COLUMN] 新列名字 数据类型 [约束] [FIRST]/[AFTER 表中某列];
#删除一列ALTER TABLE 表名字 DROP [COLUMN] 列名字;
#修改一列,可用于重命名、更改数据类型及约束。数据类型不可省略。ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;
#仅修改数据类型ALTER TABLE 表名字 MODIFY 列名字 新数据类型;

注:修改数据类型必须小心,这可能会导致数据丢失。

(3)对表内容的修改

#对值的修改,一定要有WHERE条件UPDATE 表名字 SET1=值1,列2=值2 WHERE 条件;#例UPDATE student SET age=22 WHERE name="张三";
#删除一行数据记录DELETE FROM 表名字 WHERE 条件;
0 0