方法一:单独安装MYSQL;php
方法二:安装XAMPP集成环境(建议),如下教程默认使用XAMPP环境。mysql
方法一:CMD命令行中操做。面试
说明:本人的mysql安装在C:\xampp\mysql下,假设mysql未设系统环境变量。sql
c:cd C:\xampp\mysql\binmysql -uroot -p(此处输入密码而后回车,无密码直接回车)数据库
方法二:XAMPP环境下,启动Apache和Mysql。打开浏览器,地址栏输入http://localhost:88/phpmyadmin,使用WEB界面方式操做数据库。浏览器
方法三:下载DBMS(数据库管理系统)软件,用软件界面的方式操做数据库,推荐navicat。spa
DDL 数据定义语言,好比建库、建表命令行
DCL 数据控制语言,好比为某用户赋予权限、撤销权限code
DML 数据操纵语言,好比在某张表中插入、更新记录排序
DQL 数据查询语言,好比在某张表中查询某些语句
建立数据库:
方法一:CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE myuser CHARSET utf8;
查看数据库
SHOW DATABASES;
修改数据库
ALTER DATABASE 数据库名称 CHARACTER SET utf8;
删除数据库
DROP DATABASE 数据库名称;
使用(切换)数据库
USE 数据库名称;
CREATE TABLE 表名(
字段名称1 数据类型,
字段名称2 数据类型,
...
);
例:
CREATE TABLE myuser(
id INT PRIMARTY KEY AUTO_INCREMENT,
name VARCHAR(30),
pwd VARCHAR(30),
age INT(30),
email VARCHAR(30),
addr VARCHAR(30)
);
主键
用PRIMARY KEY标识,一张表中只能有一个主键。
自增约束
用AUTO_INCREMENT标识,通常主键会设为自增加,其余字段只要有须要便可为其添加自增加属性。
删除数据表:
DROP TABLE 表名;
DESC 表名;
DESC TABLE myuser;
TINYINT 很小的整数 1个字节
SMALLINT 小的整数 2个字节
MEDIUMINT 中等大小的整数 3个字节
INT 普通大小的整数 4个字节
BIGINT 大整数 8个字节
FLOAT 单精度浮点数 4个字节
DOUBLE 双精度浮点数 8个字节
DECIMAL 压缩的“严格”定点数(金钱) M+2个字节
插入语句 :
用法一:INSERT INTO 表名 VALUES(字段值1,字段值2,...);
INSERT INTO myuser VALUES( NULL, "周芷若", "123", "20", "zzr@qq.com", "峨眉山");
用法二:INSERT INTO 表名(字段名1,字段名2,...) VALUES(字段值1, 字段值2,...);
INSERT INTO myuser(name,pwd,addr) values("小昭","123","光明顶");
用法二可省略某些字段,可是省略的字段不能够是非空字段,除非已经为其设置自增加。
用法一 :UPDATE 表名 SET 字段名=字段值;
修改全部数据(指定字段值)
用法二:UPDATE 表名 SET 字段名=字段值 WHERE 字段名=字段值;
SET后面的"字段名=字段值",为设置的值
WHERE后面的"字段名=字段值",为查询的值
用法三:UPDATE 表名 SET 字段名1=字段值1,字段名2=字段值2 WHERE 字段名=字段值;
下句将myorder表中orderid值为2的记录的addr字段值更新为‘光明顶’:
UPDATE myorder SET addr='光明顶' WHERE orderid=2;
WHERE后的语句指定了更新的条件,条件是一个表达式,能够使用任意字段做为条件,符合筛选条件的记录才会执行更新。若不加WHERE条件,UPDATE语句会默认将表中全部数据的记录按照语句执行更新,以下:
UPDATE myorder SET addr='光明顶';
用法一:DELETE FROM 表名;
注意 - 删除指定表中全部数据
用法二:DELETE FROM 表名 WHERE 字段名=字段值;
数据库操做原则:只增不删,只作逻辑删除,不作物理删除。
SQL操做(删除)
物理删除 - 执行DELETE语句
逻辑删除
简单来讲,对于用户来说是删除的,对于实际来说并无删除
为指定表,增长一个字段(state|status),表示当前这条记录是什么状态
值为1的话,表示这条记录是正常的
值为0的话,表示这条记录是删除的
数据库查询语句主要是select语句。
①基本查询 - 新版本同样
用法一:SELECT * FROM 表名;
用法二:SELECT 字段名1,字段名2,... FROM 表名;
②条件基本查询。使用WHERE关键字。
用法 : SELECT * FROM 表名 WHERE 字段名=字段值;
③复杂条件查询
AND - 表示多个条件同时知足
OR - 表示其中一个条件知足
IN(SET) - 表示一个字段包含多个值
SET - 多个值,之间使用","
= - 表示字段值为指定值
BTWEEN AND - 等于 >= AND <=
IS NULL - 匹配NULL值
④排序查询 - ORDER BY 字段名
ASC - 正序排序,默认值
DESC - 倒序排序
书写顺序:SELECT * FROM 表名 WHERE 条件 ORDER BY 字段名;
练习:
查询myuser表中全部的记录:
select * from myuser;
查询myuser表中符合某条件的记录,使用WHERE关键字。
查询龄小于50岁,且住址在光明顶的记录:
select * from myuser where age<50 AND addr'光明顶'
查询id值为1或者name值为“周芷若”的记录
select * from myuser where id=1 OR name='周芷若';
查询住址在光明顶或者汝阳王府的记录,如下两句等效:
select * from myuser where addr='光明顶' OR addr='汝阳王府'; select * from myuser where addr IN('光明顶','汝阳王府');
查询年龄在15余40之间的记录,如下两句等效:
select * from myuser where age BETWEEN 15 AND 40; select * from myuser where age>=15 AND age<=40;
面试题: select * 和select字段哪一个效率高?
答案:旧版MYSQL中select *效率低,新版MYSQL(最新版本MYSQL5.6)中查询效率同样高。
select * from myuser order by age asc;//升序排列,不写asc默认即升序
select * from myuser order by name desc;//降序排列,字符串比较按照unicode码比较