标签:price 不可 写法 rename 登录 切换数据库 1.5 数据库管理 blob
数据库就是一个文件系统,只不过我们需要通过命令行(SQL)来操作这个文件系统
2.常见数据库:
mysql:开源免费的适用于中小型企业的免费数据库
mariadb:由mysql创始人搞出来的,直接是mysql开源版本的一个分支,基本上所有的命令都是一样的
oracle:商业软件,收费软件,适用于大型电商网站,收购了sun公司
db2:IBM公司,thinkpad,解决方案:软件和硬件,服务器架构,银行系统大多采用db2
sqlserver:windows里面,政府网站asp.net,并且大学教学通常都是采用SQLserver。图形化工具做的不错
sybase:被淘汰的
NOSQL非关系型数据库:key--value
mongodb:
redis:set get
3.关系型数据库:
主要用来描述实体与实体之间的关系,
实实在在存在的事物:男生与女生 学生和班级 员工和部门
E-R关系图:要求必须得会画
实体:方框
属性:椭圆
关系:菱形
4.MYSQL数据库服务器
MYSQL数据库:数据库管理软件
服务器:就是一台电脑,这台安装相关的服务器软件,这些软件会监听不同的端口号,根据用户访问的端口号,提供不同的服务
5.MYSQL的安装和卸载
卸载:
打开控制面板,删除软件
删除mysql安装目录的所有文件C:\Program File\MySQL
删除mysql数据存放文件:C:\ProgramData\MySQL
安装:
运行安装程序:在启动配置教程之前,一路下一步,没有下一步的话就直接finish
第一次finish之后启动服务器配置教程
第一个incluce mysql bin directory to windows path
第二个:端口号不要去修改,字符集要选UTF-8,密码不要忘记了
附件(重置root密码):
方法一:
在my.ini的[mysqld]字段加入:
skip-grant-tables
重启mysql服务,这时的mysql不需要密码即可登录数据库
然后进入mysqlmysql>use mysql; mysql>更新 update user set password=password(‘新密码‘) WHERE User=‘root‘;mysql>flush privileges; 运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。
方法二:
不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码
停止mysql服务
打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables
后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。
按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行
的话可以结束掉对应进程来关闭。
启动mysql服务
6.MYSQL的SQL语句
SQL:Structure Query Language结构化查询语言
DDL:数据定义语言:定义数据库;数据表他们的结构:create(创建) drop(删除)alter(修改)
DML:数据操纵语言:主要是用来操作数据 insert(插入) delete(删除)update(修改)
DCL:数据控制语言:定义访问权限,取消访问权限,安全设置 grant
DQL:数据查询语言:select(查询) from字句 where字句
7.数据库的CRUD的操作
首先要登录数据库服务器:mysql -u用户名 -p密码
创建数据库:
create database 数据库的名字:create database day06;
创建数据库数据库的时候,指定字符集:
create database 数据库的名字 character set utf8;
eg:create database day06_1 character set utf8;
create database 数据库的名字 character set 字符集 collate 校对规则;
eg:create database day_02 character set utf8 collate utf8_bin;
查看数据库:、
查看所有数据库:
show databases;
information_schema
performance_schema
mysql(这三个数据库不要动)
查看数据库定义的语句:
show create database 数据库名字
eg:show create database day06;
eg:show create database day06_2;
修改数据库的操作:
修改数据库的字符集:
alter database 数据库的名字 character set 字符集
alter database day06_1 character set gbk;
删除数据库:
drop database 数据库名字;
drop database day06_02;
drop database test;
其他数据库操作命令:
切换数据库(选中数据库):
use 数据库名字;
use day06;
查看一下当前正在使用的数据库:
select database();
8.表的CRUD操作
创建表:
create database 数据库名字
create table 表名(
列名 列的类型(长度) 约束,
列名2 列的类型(长度) 约束
);
列的类型:
java sql
int int
char/String char/varchar
char:固定长度
char(3): 一 一空格空格
varchar(3): 一 一
长度代表的是字符的个数。另外提一下:utf8下汉字是3个字节
double double
float float
boolean boolean
date date:YYYY-MM-DD
time:hh-mm-ss
datetime:YYYY-MM-DD hh:mm:ss 默认值 是null
timestamp:YYYY-MM-DD hh:mm:ss 默认使用当前时间
text:主要是用来存放文本
blob:存放的是二进制
列的约束:
主键约束:primary key
唯一约束:unique
非空约束:not null
创建表:
1.分析实体:学生
2.学生ID
3.姓名
4.性别
5.年龄
create table student(
sid int primary key,
sname varchar(31),
sex int,
age int
);
查看表:
查看所有的表:show tables;
查看表的定义:show create table student;
查看表的结构:desc student;
修改表:
添加列(add):alter table 表名 add 列名 列的类型 列的约束
alter table student add chengji int not null;
修改列(modify):alter table student modify sex varchar(2);
修改列名(change):alter table student change sex gender varchar(2);
删除列(drop):alter table student drop chengji;
修改表名(rename):rename table student to heima;
修改表的字符集:alter table heima character set gbk;
删除表:
drop table heima;
9.Sql完成对表中数据的CRUD的操作
插入数据:insert into 表名(列名1,列名2,列名3) valus(值1,值2,值3);
eg:insert into student(sid,sname,sex,age)values(1,’张三‘,1,23);
简单写法(如果插入的是全列名的数据,表后面的列明可以省略):insert into student values(2,’张三‘,1,23);
注意:如果是插入部分列的话,列明不能省略
insert into student(sid,sname) values(3,’lisi‘);
nsert into student values(3,’lisi‘);//这种写法是错误的
批量插入:
insert into student values
(4,’张三‘,1,23),
(5,’张三‘,1,23),
(6,’张三‘,1,23),
(7,’张三‘,1,23),
(8,’张三‘,1,23);
单条插入和批量插入的效率:
插三条数据
查看表中数据:select*from student;
删除记录:delete from 表名 [where 条件]
delete from student where sid=10;
delete from student;如果没有指定条件会将表中数据一条一条全部删掉
更新表记录:
update 表名 set 列名=列的值,列名2=列的值2 [where 条件]
将sid为5的名字改为李四
如果参数是字符串,日期要加单引号
update student set sname=’李四‘ where sid=5;
update student set sname=’李四‘ ,set=0;(会将表中所有数据都修改)
查询记录:
select [distinct] [*] [列名,列名2] from 表名 [where 条件]
distinct:去除重复数据
select:选择显示那些列的内容
--商品分类:手机数码,鞋靴箱包
1.分类的ID
2.分类名称
3.分类描述
create table category(
cid int primary key auto_increment,
cname varchar(10),
cdesc varchar(31)
);
insert into category values(null,’手机数码‘,‘电子厂品,黑马生产’);
insert into category values(null,’鞋靴箱包‘,’江南皮革厂,倾情打造‘);
insert into category values(null,’香烟酒水’,‘黄鹤楼,茅台,二锅头’);
insert into category values(null,‘酸奶饼干’,‘哇哈哈,蒙牛酸酸乳’);
insert into category values(null,‘馋嘴零食’,‘瓜子花生,八宝粥,辣条’);
select*from category;//表中所有数据
select cname,desc fromcategory;//查看表中指定列的数据
--所有商品
1.商品ID
2.商品名称
3.商品价格
4.生产日期
5.商品分类ID
商品和商品分类:所属关系
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
insert into product values(null,‘小米mix4’,998,null,1);
insert into product values(null,‘锤子’,2888,null,1);
insert into product values(null,‘阿迪王’,99,null,2);
insert into product values(null,‘老村长’,88,null,3);
insert into product values(null,‘劲酒’,35,null,3);
insert into product values(null,‘小熊饼干’,1,null,4);
insert into product values(null,‘卫龙辣条’,1,null,5);
insert into product values(null,‘旺旺大饼’,1,null,5);
--简单查询:
--查询所有的商品:select*from product;
--查询商品名称和商品价格:select pname,price from product;
--别名查询,as的关键字,as关键字是可以省略的
--表别名:select p.pname,p.price from product p;(主要是用在多表查询);
select p.pname,p.price from product as p;
--列别名:select pname as 商品名称,price as 商品价格 from product;
select pname as 商品名称,price as 商品价格 from product ;
省略as关键字
select pname 商品名称,price 商品价格 from product ;
--去掉重复的值
--查询商品所有的价格
select price from product;
select distinct price from product;
--select运算查询:仅仅在查询结果上做了运算,数据没变 + - * /
select *,price*1.5 from product;
select *,price*1.5 as 折后价 from product;
select *,price*0.8 from product;
--条件查询[where关键字]
指定条件,确定要操作的记录
--查询商品价格>60元的所有商品信息
select*from product where price>60;
--where 后的条件写法
--关系运算符:> >= < <= = != <>
<>:不等于(标准SQL语法)
!=:不等于(非标准SQL语法)
--查询商品的价格不等于88的所有商品
select*from product where price<>88;
select*from product where price!=88;
--查询商品的价格在10到100之间
select*from product where 10<price and price<100;
between..and..
select*from product where price between 10 and 100;
--逻辑运算:and , or, not
--查询商品价格小于100或者商品价格大于900
select *from product where price<100 or price>900;
--like:模糊查询
_:代表的是一个字符
%:代表的是多个字符
--查询出名字中带有饼的所有商品 %饼%
select *from product where pname like ‘%饼%‘;
--查询第二个名字是熊的所有商品 ’-熊%‘
select*from product where pname like ’_熊%‘;
--in在某个范围中获得值
--查询出商品分类ID在1,4,5里面的所有商品
select *from product where cno in(1,4,5);
--排序查询:order by 关键字
asc:ascend升序(默认的排序方式)
desc:descend降序
--0.查询所有商品,按照价格进行排序
select*from product order by price;
--1.查询所有的商品,按价格进行降序排序(asc-升序 desc-降序);
select *from product order by price desc;
--2,查询名称有 小 的商品,按价格升序排序
1.查询名称有 小· 的商品;
select*from product where pname like ’‘%小%;
2.进行排序得出结果
select*from product where pname like ’%小%‘ order by price asc;
--聚合函数:
sum():求和
avg():求平均值
count():统计数量
max():最大值
min():最小值
--1.获得所有商品价格总和:
select sum(price) from product;
--2.获得所有商品的平均价格:
select avg(price) from product;
--3.获得所有商品的个数;
select count(*) from product;
--注意:where条件后面不能接聚合函数
--查出商品价格大于平均价格的所有商品
查出所有商品;select*from product;
大于
平均价格
--子查询
select*from product where price >(select avg(price)from product);
--分组:group by
--1.根据cno字段分组,分组后统计商品的个数
select cno,count(*) from product group by cno;
--2.根据cno分组,分组统计每组商品的平均价格,并且商品价格>60
select cno,avg(price) from product group by cno having avg(price)>60;;
--having关键字 可以接聚合函数的 出现分组之后
--where关键字 它是不可以接聚合函数的,出现在分组之前
--编写顺序
--S..F..W..G..H..O
select...from...where...group by..having..order by
--执行顺序
F..W..G..H..S..O
from...where...group...having...select...order by
标签:price 不可 写法 rename 登录 切换数据库 1.5 数据库管理 blob
原文地址:https://www.cnblogs.com/jsnote/p/10654440.html