数据库(DB)
概念:Database,用于存储和管理数据的仓库 数据库特点: 1、持久化存储数据。其实数据库就是一个文件系统 2、方便存储和管理数据 3、使用同样的方式操作数据库–SQL 常见的数据库软件:Oracle、MySQL、Microsoft SQL Sever、DB2……(用的比较多的是前面两种)
SQL
Structured Query Language:结构化查询语言。其实就是他定义了操作所有关系型数据库的原则。
SQL通用语法
1、可以以单行或多行书写,以分号结尾 2、MYSQL数据库的SQL语句不区分大小写,关键字建议使用大写 3、3种注释: *单行注释:-- (英文的两个横杠一个空格)注释内容 或 #(有没有空格都可以) 注释内容(mysql特有) 多行注释:/ 注释 */
SQL的分类
1、DDL(Data Definition Language)数据定义语言 用来定义数据库对象:数据库,表,列等。关键字:creat,drop,alter 客户端操作数据库和表 2、DML(Data Manipulation Language)数据库操作语言 用来对数据库中列表的数据进行增删改 insert,delete,update 3、DQL(Data Query Language)数据库查询语言 用来查询数据库中表的记录(数据) select,where 4、DCL(Data Control Language)数据控制语言(了解) 用来定义数据库的访问权限和安全级别,及创建用户 GRANT,REVOKE
图示:
DDL
1、操作数据库:CRUD (1) create:创建 create database 数据库名称;(已有会报错) create database if not exists 数据库名称; create database 名称 character set gbk;(设置成gbk,默认是UTF-8)
(2) retrieve:查询 *查询所有数据库名称:show databases; *查看某个数据库的字符集:查看某个数据库的创建语句 show create databases 数据库名称;
(3) update:修改 *修改数据库的字符集 alter database 数据库名称 character set 字符集名称(utf-8,gbk)
(4) delete:删除
*删除数据库 drop database 数据库名称(千万千万不要删除SQL里面的mysql数据库) if exists和前面一样
*使用数据库 use 数据库名称 *查询当前正在使用的数据库名称 select database();
2、操作表
*create:创建 语法: create table 表名( 列名1 数据类型1, 列名n 数据类型n(没有逗号) );
create table student(
Id int,
Name varchar(32),
Score double(4,1),
Birthday_time date,
Insert_time timestamp//注意这里没有逗号
);
数据类型:
int //整数类型
age int
double //小数类型
score double() //里面的参数(数字)表小数点后的位数一共有多少位
date //日期,只包含年月日,yyyy-MM-dd
datetime //日期 yyyy-MM-dd HH:mm:ss
timestamp//时间错类型yyyy-MM-dd,如果将来不给这个字段赋值,或赋值为null,则默认使用当前的 系统时间来自动赋值
varchar//字符串
name varchar(20)//姓名最大为20个字符
create table stu like student;复制表
*retrieve:查询 查询某个数据库中所有的表的名称 show tables;
查询表结构 desc 表名;
*update:修改
1、修改表名
alter table 表名 rename to 新的表名
2、修改表的字符集
alter table 表名 character set 字符集名称
3、添加一列
alter table表名 add 列名 数据类型;
4、修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;(只改数据类型)
5、删除列
alter table 表名 drop 列名;
*delete:删除 *drop table 表名(if exists同上)
DML
1、添加数据 语法
insert into 表名(列名1,列名2,……列名n)values(值1,值2,……值n);
字符串用单引号双引号都可以
注意:**列名和数值要一一对应**
如果表名后面没接列名,则默认给所有列名添加值
insert into 表名 values(值1,值2,……值n);
2、删除数据 语法
delete from 表名where 条件;
delete from student where id=1;
truncate table 表名; -- 删除表,然后再创建一个一模一样的空表
注意:如果不加条件 会把表中所有数据都删除 不推荐使用,有多少条数据就会行多少次
3、修改数据 语法
update 表名 set 列名1=值1,…… where 条件//一次只能改同一行上的
注意:如果不加任何条件,该列的所有数据都会改变
DQL
语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit 分页限定
1. 基础查询
stu表(1)多个字段的查询`
SELECT NAME,math,chinese FROM stu;//同时查询3列
(2)去除重复
SELECT * FROM stu;
SELECT address FROM stu;//不会筛掉重复的部分,见图1
SELECT DISTINCT address FROM stu;//会筛掉重复的部分,见图2
图1: 图2:
(3)计算列
SELECT NAME,math,chinese,math+IFNULL(chinese,0) FROM stu;//计算两科的总分并显示再查询结果中
//IFNULL(chinese,0)是因为在你创建表时某个chinese没有被赋值,其会变成null,无法做运算,得把它变成0,math的也是
(4)起别名
SELECT NAME,math,chinese,math+chinese 总分 FROM stu; // 总分前可以加 AS,把分数总和的那一列命名为“总分”
2. 条件查询
where字句后跟条件 运算符
<,>, <=, =, <>(不等于,也可以用 !=) BETWEEN……AND IN LIKE 模糊查询 占位符: _:单个任意字符 %:多个任意字符 IS NULL and 或 && or 或 || not 或 |
-- 查询年龄在20到30之间的
SELECT * FROM stu WHERE age >=20 && age <=30;//方式1
SELECT * FROM stu WHERE age >=20 AND age <=30;//方式2
SELECT * FROM stu WHERE age BETWEEN 20 AND 30;//方式3
-- 查询年龄为17、18、22的信息
SELECT * FROM stu WHERE age = 17 OR age = 18 OR age = 22;//简单粗暴
SELECT * FROM stu WHERE age IN (17,18,22);//主要记住这种
-- 查询语文成绩为null
SELECT * FROM stu WHERE chinese = null;//不正确!!!,null值不能使用等号或者不等号来判断
SELECT * FROM stu WHERE chinese IS NULL;//这样才行
-- 查询不为null的
SELECT * FROM stu WHERE chinese IS NOT NULL;
-- 查询姓马的有哪些 like
SELECT * FROM stu WHERE NAME LIKE '马%';//%表多个任意字符
-- 查询姓名第二个字是化的人
SELECT * FROM stu WHERE NAME LIKE "_化%";//单引号双引号都可以
-- 查询姓名中含马的人
SELECT * FROM stu WHERE NAME LIKE "%马%";
-- 查询姓名是3个字的人
SELECT * FROM stu WHERE NAME LIKE '___';//三个下划线
笔记内容来源于黑马程序员教学视频,写这些仅是为了加深自己的记忆,待续……
|