【MySQL笔记】SQL基本语法
2017-09-26 10:45
465 查看
一.数据库的引入
1.数据的存储:
JavaSE:定义一个变量,它都存储在内存里,当程序执行完了,这个变量就从内存中消失了。
2.JavaSE->IO 流程对数据进行读写,执行效率低。
3.数据库的软件:
对数据永久保存执行效率高
方便维护和管理
4.常见数据库软件:
oracle:甲骨文公司的产品,和java语言兼容性比较好,大型应用:javaEEmySQL:开源的数据库,和java语言兼容比较好!,针对中小型的应用
SQLServer:微软公司产品,和net平台兼容性最好(C#)
DB2:是IBM公司的
manggoDB:noSql
5.mySQL的安装和卸载
二.SQL:结构化查询语言
1.概念:
通过sql语言可以操作所有的关系型数据库。每种数据库之间会存在差异,称为 "方言"2.sql分类:
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改)
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
三.(DDL)数据库的创建、修改和删除
操作数据库:1.创建一个数据库(DOS)
create database demo02;
2.查看数据库中的指定字符集
show create database demo02;
3.修改创建的数据库中的字符集
alter database demo02default character set gbk;
4.删除数据库
drop database demo02;
操作表:
1.创建表:
在创建一个表之前,要切换到数据库,使用的数据库存在。
语法:create table 表名(字段名称 字段类型,字段名称,字段类型…..)
create table demo(
id int,
age int,
name varchar(10)
);
2.操作表:
a.添加字段
alter table demoadd column job varchar(10);
b.修改字段类型
alter table demomodify column job varchar(5);
c.修改字段名称
alter table demochange column job sex varchar(2);
d.删除字段
alter table demodrop column age;
e.修改表名称
alter table demorename toother;
f.删除表
drop table demo;
3.其他操作:
a.查看当前数据库中所有的表
show tables;
b.查看当前表的结构
desc demo;
四. (DML)操作表中的数据
1.插入数据:
a.插入数据:
insert into 表名 values(每个字段的具体值)eg:insert into demo values(1,'Ying',21);
关于插入数据的注意事项:
插入字段的值和字段的信息的顺序一致
插入字段的数量要和创建表中参数的数量保持一致
b.插入部分字段:
insert into 表名 values(部分字段的具体值);2.修改数据:
update 表名 修改 set 字段名称 = 值 where...a.批量修改数据
update demo set name ='Glaz';b.修改指定的字段
需求:修改id为1的学生的姓名update demo set name ='ROOT'where id =1;
c.修改多个字段
需求:修改id为的学生姓名和年龄(修改多个字段,中间用逗号隔开)update demo set name ='ROOT',age=21 where id =1;
3.删除数据:
a.删除全部表数据delete from demo;
b.删除指定的字段
需求:删除id=2 的字段
delete from demo where id =2 ;
truncate table 是删除全表数据,只能删除全表数据,不能删除删除单个数据
关于delete from 和truncate table 这两个的区别:
delete from 既可以删除全表数据又可以删除指定的数据,而truncate table只能删除全表数据
delete from 可以回滚,而truncate table不可以回滚!
deleter from 它不可以让自增长约束重置,而truncate table可以让自增长约束重置(重点)
五.(DQL)数据查询(select)
1.select
a.查询所有数据
select *from demo;b.查询指定的字段
需求:查询编号指定的学生姓名select id,name from demo;
c.查询的时候指定别名
需求:查询编号对应的学生姓名,并且指定别名select id as '编号',name as '姓名' from demo;
as可以省略
select id '编号',name '姓名' from demo;
d.查询数据的时候添加常量列
查询的时候动态添加的指定列需求 查询id 别名 编号 name 姓名 添加到一个常量列'班级',职位'Java就业班'
select id as '编号' ,name as '姓名','Java就业班'as '班级'from demo;
e.查询时合并列
需求:查询学生姓名对应的总成绩SELECT NAME AS '姓名',(mysql+servlet) AS '总成绩' FROM student ;
注意事项:合并列的时候,两个列的字段类型一致,如果字段类型不一致,那么就没有效果.如下两个字段类型不一致。
select name as '姓名',(mysql+name) as '总成绩' from demo;
2.where条件查询
=、!=、<>、<、<=、>、>=;BETWEEN ... AND; 在什么范围内
IN(SET);
IS NULL ; 为空
IS NOT NULL;不为空
AND; 并且
OR; 或者
NOT; 非
3.模糊查询like
a.通配符
_:匹配单个任意字符串例: 我要查询姓名是3个任意字符组成的
select * from student sname like='___';
例:我要查询第二个字符是m的
select * from student where sanme like '_m%';
b.匹配多个任意字符串
%:匹配多个任意字符串例:我要查询名字中包含m的名字的学生
select *from demo where name like '%m%';
4.字段控制
a.修改字段的别名:AS (可以省略)
i.给字段起别名:
select name as 姓名,age as 年龄 from demo;ii.给运算字段起别名:
select name as 姓名,(工资+奖金)as 总收入 from demo;iii.给表起别名:
select demo.name,demo.age from demo as other;b.字段运算
null参与运算结果都为null;一般会让null替换为0;
c.去重复记录
DISTINCTselect distinct age from demo;
d.排序
order by默认升序排列ACS 升序
DESC 降序
select *from demo order by age ASC;
select *from demo order by age desc,id desc;
5.聚合函数
聚合函数是用来做纵向运算的函数a.COUNT():
统计指定列不为NULL的记录行数; 统计个数的select count(*) from demo;
b.MAX():
计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;select max(age) as 年龄最大 from student;
c.MIN():
计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;select max(age) as 年龄最小 from student;
d.SUM():
计算指定列的数值和,如果指 定列类型不是数值类型,那么计算结果为0;select SUM(age) as 年龄之和 from student;
e.AVG():
计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;select AVG(age) as 平均年龄 from student;
6.分组查询
group by 一般配合聚合函数使用,查出的数据才有意义查询的字段:
分组字段本身
聚合函数
例如先按照部门编号,然年求每个部门的平均工资,这样展示出来的数据就应该有三条。
select 部门编号,AVG(工资) from emp group by 部门编号;
查询每个部门的部门编号
需求:每个部门工资大于1500的人数、
select 部门编号,COUNT(*) from emp where 工资>1500 group by 部门编号
注意:where 是对分组前的条件进行限定,也就是说不满足条件的不参与分组!
(问题)where和having的区别?
where:在分组前对条件进行限定。不满足条件,就不会参与分组
having:在分组之后,对结果集进行筛选。
7.分页查询
limitlimit 0,5 开始的记录索引, 每一页显示的条数 索引从0开始
开始的记录索引 = (页码-1)*每一页显示的条数
例如 我显示第一页 每页5条记录
select * from student limit 0,5 ; 这是第一页 5 条记录
select * from student limit 5,5 ; 这是第二页 5条记录
select * from student limit 10,5 这是第三页 5条记录
六.数据的约束
1.作用:
为了保证数据的有效性和完整性2.MySQL中常用的约束:
主键约束:primary key外键约束:foreign key
唯一约束:unnique
非空约束:not null
3.主键约束:被修饰过的字段唯一非空
注意:一张表只能有一个主键,这个主键可以包含多个字段主键约束建立的方式
a.方式1:建表的同时添加约束
格式:字段名称 字段类型 primary key;b.方式2:建立表的同时在约束区域(有的字段声明完成之后就是约束区域了)添加约束
格式:primary key(字段1 ,字段2 ,...);c.方式3:建表之后,通过修改表结构添加约束
格式:alter table demo add primary key (字段1,字段2,...);4.唯一约束:(了解)
被修饰过的字段唯一,对null不起作用唯一约束建立的方式:
a.方式1:建表的同时添加约束 格式: 字段名称 字段类型 unique
create table un(id int unique,
username varchar(20)unique
);
b.方式2:建表的同时在约束区域添加约束
unique(字段1,字段值2...)c.方式3:建表之后,通过修改表结构添加约束
alter table 表名add unique(字段1,字段2);-- 添加的联合唯一alter table 表名add unique(字段1);-- 给一个添加唯一
alter table 表名add unique(字段2);-- 给另一个添加唯一
5.非空约束(了解)
特点:被修饰过的字段非空非空约束建立方式:
create table nn(
id intnot null,
username varchar(20)not null
);
insert into nn values(null,'tom');-- 错误的 Column 'id' cannot be null
相关文章推荐
- MySql基本语法(学习笔记)
- MySQL:常用操作符、管理命令、基本SQL语法等
- SQL分类”及“Mysql基本语法
- MySQL 最基本的SQL语法/语句
- mysql之sql语法基本使用
- SQL:1999基本语法(学习笔记)
- MySQL 最基本的SQL语法/语句
- MySQL 最基本的SQL语法,语句
- MySQL 最基本的SQL语法/语句
- MySql学习笔记(4)--SQL(DML)语句语法
- [转]MySQL 最基本的SQL语法/语句
- mysql:day1--sql基础(基本语法及常识)
- MYSQL基础笔记(二)-SQL基本操作
- MYSQL常用命令与SQL基本语法(重要操作汇总)
- MySQL学习笔记(5)--基本的SQL语句
- Java学习笔记——MySQL的安装使用以及SQL语法简介
- MySQL 最基本的SQL语法/语句
- MySQL学习笔记 -- day01 sql分类及DDL语法
- sql分类及基本sql操作,校对规则(mysql学习笔记二)
- MySQL学习笔记——基本语法