数据库存储方式:关系性存储和NO SQL(N-not O-only)
关系性存储:二维法,具有搜索快的优点,但是结构不能太复杂
92标准:
99标准:
2016标准:
NO SQL(N-not O-only):使用key-value键值对存储
数据库操作:
显示当前服务器中有多少个数据库:show databases;
创建数据库:create database 数据库名称 实例: create database student;
进入(使用)某个数据库:use 库名; 实例:use student;
查看数据库中有哪些表:show tables;
删除数据库:drop database 库名 实例:drop database student;
表操作:
创建表(注意表名后跟的是小括号):create table 表名(字段1 类型1,字段2 类型2...)
创建表1-不指定字段长度,整数类型int
实例:create table wx1(mid int primary key); int 默认字段长度11
创建表2-指定字段长度,指定主键:create table 表名(字段1 类型1,字段2 类型2...)
实例:create table wx1(mid int(8) primary key);也可以直接指定字段长度,例如8
创建表3-有多个字段,含整数类型int和字符串类型varchar,注意字符串类型一般指定为偶数长度
实例:create table wx1(mid int(8) primary key,mname varchar(20).msg varchar(500));
创建表4-有多个字段,含整数类型int和字符串类型varchar,时间字段(时间字段最常用的类型:date 格式"yyyy-mm-dd")实例:create table wx31(mid int(8) primary key ,mname varchar(32),msg varchar(32),time date);
创建表5-主键自动增长 使用关键字auto_increment,写在primary key后面
实例:create table wx1(mid int(8) primary key auto_increment,mname varchar(32),msg varchar(32),time date);
查看表结构:desc 表名; 实例:desc wx1;
删除表:drop table 表名;实例:drop table wx1;
插入记录(数据),注意:当字符串类型和时间类型的值需要用单引号('')括起来!!!
insert into 表名 (字段1,字段2,...)values(字段1的值,字段2的值,...);
实例:insert into wx1(mid,mname,msg)values(1,'z3','hello')---主键没有自动增长
insert into wx1(mname,msg,mtimes)values('z3','hello','2018-04-17)---主键自动增长时,排除主键,插入数据
结构化s查询q语言l:sql crud-增删改查
查看所有记录:select * from 表名;(select后面的*表示所有列) 实例:select * from wx1;
如果想指定显示固定某几列,select后面就不能用*,而用列名,列名之间用逗号(,)分开
实例:select mid,msg from wx1;
如果想选择某几行数据,要用where。where要放在from的后面。同时要有=,<,>等等条件
实例:select * from wx1 where mid=1;mid为int类型,不需要单引号。
不同版本的mysql要求不一样,有可能也需要写成select * from wx1 where mid='1';
select * from wx3 where mname='zs'; mname是字符串类型,需要单引号括起来
where条件中常用的两个关键字:and 和 or
and表示左右两边的条件必须同时满足
实例:找出姓名为zs且主键是1的数据 select * from wx1 where mname='zs' and mid='1';
or左右两边满足一个条件就行(查询引擎发现该条记录满足左边,即添加到查询结果中)
实例:找出姓名为zs或者主键是1的数据 select * from wx1 where mname='zs' or mid='1';
练习题:找出mid大于2的所有记录 select * from wx1 where mid>2;
where 还常用于修改记录和删除记录(数据)
修改数据 :update 表名 set 字段1名=新值,字段2名=新值 where 唯一性字段(一般是主键)=旧值
实例;update wx3 set mname='w5',mtimes='2018-01-16' where mid=3;
删除数据:delete from 表名 where 主键=值; 实例:delete from wx3 where mid=1;
主键创建方式:列级约束和表级约束
列级约束:主键关键字在第一个字段上,称为列级约束。只约束一个列。
列级约束实例:create table wx2(mid int(8) primary key,mname varchar(20),msg varchar(500));
create table wx1(mid int not null,mname varchar(32));
表级约束实例:create table wx1(mid int ,mname varchar(32),primary key(mid));
最后的primary key就是表级约束,小括号中的mid就是给mid指定为主键。表级约束primary key(只能写在最后面)
排序:正序asc和倒序desc
排序关键字order by,写在from 和where的后面
正序asc:select * from torder order by orderPrice asc;
倒序desc:select * from torder order by orderPrice desc;
联系题:创建一个名叫shop的数据库,库中有三个表,
第一个表叫user,内容uid主键,uname名字,pwd密码,authz权限
第二个表叫工资表sal,内容sid主键,uname名字,sal工资,dept部门
第三个表叫订单表torder(当为order时,存在关键字重复,建表失败),内容oid主键,orderPrice价格,orderDate时间,customer客户
请创建这三个表,并给这些字段合理的类型。在(order)订单中插入六条数据)
答:create database shop;
create table user(uid int primary key auto_increment,uname varchar(32),pwd varchar(32),authz varchar(32));
create table sal(sid int primary key auto_increment,uname varchar(32) not null,sal int,dept varchar(32));
create table torder(oid int primary key auto_increment,orderPrice int,orderDate date,customer varchar(32));
insert into torder(orderPrice,orderDate,customer)values(100,'2018-04-01','a1');
-----------------------------以下待后续补充---------------------------------------
重要的5个组函数:
avg()取平均值
sum()取总和
max()取最大值
min()取最小值
count()取个数
多表操作:
select * from table1;
变形:
select user.uname,user.pwd from user;
多个表中一起查询:
select * from 表1,表2;
select * from sal,user;
找密码是root的人挣多少钱?(存在笛卡尔积的问题)
select user.pwd,sal.sal from user,sal;
-----------------------------待后续补充---------------------------------------
小窍门:
1、运行sql语句,如果显示Query OK ---命令运行成功
2、mysql只用小括号( ),不用<>
3、mysql不区分大小写,但是表中的数据一定要区分大小写(主要是和java联系起来使用要注意)
4、输入错误,误输入" 或者 ' 后,导致一直退不出错误模式,解决方法
mysql> "
">
解决方法:输入",然后输入;
mysql> '
'>
解决方法:输入',然后输入;
总结:大于号(>)前面是什么号,输入,再使用;即可退出错误模式。
5、mysql 默认端口3306
6、在mysql命令行界面,右键-选择标记,选择需要复制粘贴的文字,按回车键,即可在记事本上进行粘贴操作
7、数据库命名(数据库名称需要小写、有意义、是名词)例如:正确:student 错误:hello,s1...
8、安装mysql后,系统自带的两个库information_schema和mysql不能进行删除,否则mysql服务起不来
9、遵循开闭原则:对扩展开放,对修改关闭
10、遵循范式(5):第一条:表中记录要有唯一性,主键不参与业务逻辑,主键不能重复也不能为空