- 数据库(DB)
- SQL
- SQL通用语法
- SQL的分类
- DDL
- DML
- DQL
- 1. 基础查询
- 2. 条件查询
概念:Database,用于存储和管理数据的仓库
数据库特点:
1、持久化存储数据。其实数据库就是一个文件系统
2、方便存储和管理数据
3、使用同样的方式 *** 作数据库–SQL
常见的数据库软件:Oracle、MySQL、Microsoft SQL Sever、DB2……(用的比较多的是前面两种)
Structured Query Language:结构化查询语言。其实就是他定义了 *** 作所有关系型数据库的原则。
SQL通用语法1、可以以单行或多行书写,以分号结尾
2、MYSQL数据库的SQL语句不区分大小写,关键字建议使用大写
3、3种注释:
*单行注释:-- (英文的两个横杠一个空格)注释内容 或 #(有没有空格都可以) 注释内容(mysql特有)
多行注释:/ 注释 */
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
图示:
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同上)
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 '___';//三个下划线
笔记内容来源于黑马程序员教学视频,写这些仅是为了加深自己的记忆,待续……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)