mysql
概念
数据保存的仓库
软件安装
启动mysql
1.windows版本
2.命令行版本(管理员身份)
net start mysql 启动mysql
net stop mysql停止mysql
SQL概念
使用一种全新的语法(语言) ,操作数据库 操作数据库表 操作数据库中的数据
sql : 是有方言的 , 每个数据库都有自己的独立的特点, 但是大部分的内容是一致的
官方规定四种sql语言
- DDL(Data Definition Language) 数据定义语言 用来定义数据库对象:数据库,表,列等。关键
字: create, drop,alter 等 - DML(Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改。关键
字: insert, delete, update 等 - DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字: GRANT, REVOKE 等 - TCL(Transaction Control Language) 事务控制语言
用于控制数据库的事务操作,关键字: COMMIT,SAVEPOINT,ROLLBACK 等
自然形成sql语言 - **DQL(Data Query Language) 数据查询语言 **
DQL语言并不是属于MYSQL官方的分类,但是对数据库的操作最多就是查询,所以
我们的程序员把查询语句的语句称作为DQL语言
DDL-操作数据库
DDL数据定义语言:create创建 drop删除 alter修改
创建库
create database 数据库名称;(重要)
create database if not exist 数据库名;
create database 数据库名 character set 字符集;
展示库
show databases;当前所有库
show create database 数据库名称;
删除库(本地自己玩可以,开发别用)
drop database 数据库名称;
DDL-操作数据库表
create 创建 alter修改 drop 删除 table 表 select 查询
创建表
create table 表名(
列名 类型,
列名 类型,
列名 类型
);
常见类型
varchar(长度) 字符串 int 整型(默认11位长度) date 日期
展示表
show tables; 展示数据库表
show create table 表名称; 查看表
DML(重要)
insert新增 delete删除 update修改
新增
#语法:
#语法1: insert into 表名(字段名1,字段名2,字段名3) values(value1, value2,value3)
#语法2: insert into 表名 values(value1, value2,value3)
#语法1演示 "" 数据库没有单引号和双引号的区分 单双引号一样 ,建议都用单引 表示字符串
#注意事项:
#1.类型注意匹配
#2.字段的顺序和值的顺序必须一致 个数必须一致
#3.特点: 如果不希望输入的数据可以不写, 但是字段名也不可以输入
INSERT INTO student(username,`password`,height) VALUES('jack','1234' , 180);
INSERT INTO student(username,`password`,height) VALUES("2222","rose" , 180);
INSERT INTO student(username,`password`) VALUES("tom","3333" );
#语法2:
#注意:
#1.务必按照数据库字段的顺序添加数据
#2.数据库有多少字段 全部写上 , 不能省略任何一个
INSERT INTO student VALUES( "5555","lucy" , 190);
删除
#语法1:delete from 表名 删库动作(慎用)
#语法2:delete from 表名 where 条件
#演示:
#语法1:
DELETE FROM student;
#语法2:
DELETE FROM student WHERE username='2222';
DELETE FROM student WHERE username='5555';
truncate和delete的区别
#id的概念 :为了表示数据的唯一
CREATE TABLE student3 (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
);
INSERT INTO student3(NAME) VALUES("张飒");
SELECT * FROM student3;
#删除掉数据 索引值继续增长
DELETE FROM student3;
#删掉数据:直接删除的表 然后创建一张一模一样的表 索引值重新开始
TRUNCATE student3; #基本上没有场景 在开发中不用
#自己删除本地数据库的时候使用
#约束: PRIMARY KEY AUTO_INCREMENT 主键自增
修改
# update 表名 set 列名=数据 where 条件 #
UPDATE items,month
SET
items.price=month.price
WHERE
items.id=month.id;
DQL查询
简单查询
#1.基本查询语法入门
SELECT * FROM student3;
#select 字段,字段,字段 from 表名
#2.只查看 名称 年龄 性别
SELECT id,`name`,age,sex,address,math,english FROM student3;
SELECT `name`,age,sex FROM student3;
#如果根据列名查询 可以自己排序
SELECT age,sex,`name` FROM student3;
#3.别名查询 可以给每次字段 另外起一个名称 as 可以省略
#select 字段名称 as 别名,字段名称 别名 from 表名
# '' "" 表示是字符串 ``表示的是去掉文字的关键字
SELECT NAME AS '姓名', age AS '年龄' , sex '性别' FROM student3;
#4.去重查询 (重复的只显示一次) 多字段合起来唯一 才可以去重
#SELECT distinct 字段 FROM student3;
SELECT DISTINCT sex FROM student3;
# 去重的字段必须完全一模一样 才可以去重
SELECT DISTINCT sex,`name` FROM student3;
#5.查询结果参与运算 结果运算查询
#每个人的总成绩 = 数学+英语
SELECT NAME,math,english FROM student3;
#结果列上可以直接进行运算
SELECT NAME,math,(math + 5) FROM student3;
SELECT NAME,math,english,(math+english) AS '总成绩' FROM student3;
条件查询
#1.条件查询
#select * from 表名 where 条件
#1.1 null值查询 null值在查询是否相等时候 只能够用 is null 或者is not null 不能使用等号 = 跟值
SELECT * FROM student3 WHERE english = NULL;#错误
SELECT * FROM student3 WHERE english IS NULL;#正确
#1.2 比较运算符 > < = >= <= 跟java用法一样
#查询年龄大于20 并且性别为男 where 条件 and 条件 and 条件
SELECT * FROM student3 WHERE age > 20 AND sex='男' ;
#1.3 逻辑运算符 and 并且 or 或者 not非 !使用感叹号表示 != 一般情况
#查询age大于35或性别为男的学生(两个条件其中一个满足)
SELECT * FROM student3 WHERE age > 35 OR sex='女'
#查询id是1或3或5的学生
SELECT * FROM student3 WHERE id = 1 OR id =3 OR id =5;
#查询id是1或3或5的学生 in的语法 匹配括号中的每个字符 只要满足任意一个即可
SELECT * FROM student3 WHERE id IN(1,3,5);
#1.4 范围
#查询english成绩大于等于75,且小于等于90的学生
SELECT * FROM student3 WHERE english >= 75 AND english <= 90;
#查询区间范围的数据 between 最小值 and 最大值 75-90之间的所有数据
#含头含尾获得数据
SELECT * FROM student3 WHERE english BETWEEN 77 AND 87;
#1.5 like 像 select * from 表名 where 字段 like '马'
# 符号 % 匹配很多个词,可以没有词
# 符号 _ 匹配一个词
#1.5.1 查询姓马的学生
SELECT * FROM student3 WHERE NAME LIKE '马%';
#1.5.2 查询姓马的学生并且只有三个字
SELECT * FROM student3 WHERE NAME LIKE '马__';
#1.5.3 查询名字中包含马的学生
SELECT * FROM student3 WHERE NAME LIKE '%马%';