mysql的使用
1. 什么是数据库?
数据库 (Database) 是按照数据结构来组织、存储和管理数据的仓库
2.目前有哪些常见数据库?
Oracle、mysql、SQL Server、DB2、Redis、MongoDB、Solr、Hbase、Hive
3.什么是关系型数据库管理系统?
系型数据库只是一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database Management System,简称DBMS)的软件来管理数据库中数据。管理关系型数据库的软件称为关系型数据库管理系统(Relational Database Management System,简称RDBMS)。数据库应用程序通过RDBMS与关系型数据库进行交互。
mysql就是一个典型的关系型数据库管理系统。
redis是非关系型的内存数据库,所有数据放在内存中,是key—value存储系统。
4.结构化查询语言SQL
SQL:结构化查询语句,是一种特殊的编程语言,用来存储以及查询更新和管理数据库系统。
DDL:数据定义语言,用来定义数据库对象(库、表、列),负责数据结构定义
DML:数据操作语言,用来定义数据库记录(数据),数据增删改的操作
DCL:数据控制语言,用来定义访问权限和安全级别
5.七大约束条件
主键(primary key):标识事物和建立关系的方式。主键约束自带唯一性和非空;主键有且只能有一个。
外键 (foreign key) : 从表表中,与主键对应建立主外键关系的约束字段。外键必须使用Innodb引擎
自增长 (auto_increment): 不用手动插入数据,系统会自动分配值,而且默认数字+1.
唯一 (unique): 保证行不重复。
非空 (not null): 该行中,所设字段数据不能为空。
默认值 (default):在该列中,如果没有给值,系统按设置填入固定值。在设置时使用default 值.
检查 (enum(),set())(mysql中默认没有检查约束),将字段设定一个取值范围。
注意点:
(1)主键的创建方式:#在字段后面添加primary key;#在所有字段后,通过primary key(字段)添加。
(2)外键的创建方式:在所有字段后添加 foreign key(字段) references 表(字段)
(3)主键和外键的关系:主键保证了数据的唯一性,外键保证了数据的完整性。
主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。 身份证号 是唯一能确定你这个人的,其他都可能有重复,所以, 身份证号 是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
(4)自增长必须是整型数字,如果插入比现有数据更大的数据,以后自增长从最大数据开始+1.(无论是否已删除最大值)
(5)enum 和set的用法:常用于选择,enum(a,b) 二者只能选一个
set(a,b) 可以为空,可以选一个或多个。使用enum或者set,字段后不要设置数据类型。
6.常用数据类型
整形: int
浮点型:float
字符串:char: 定长 char(10) 1111111111 xxxxxx1000
varchar: 不定长 varchar(5) abc abcd abcde
字节码:blob
日期时间: Year date timestamp datetime
7.常用命令和语法
show databases : 显示所有已创建的数据库名称
use 数据库名; 使用某个数据库
show tables; 显示出当前数据库中所有的表
show variables:;查看所有的变量
show create table; 表名 显示表创建语句
DDL:
创建数据库:create database 库名;
创建数据库:create database if not exists 库名 ;
删除数据库: DROP DATABASE 数据库名;
创建表:Create table 表名(
字段1 数据类型 约束,
字段2 数据类型 约束,
…,
字段n 数据类型 约束)[character set utf8];
删除表:DROP TABLE 表名;
修改:alter–增加列–alter table 表名 add 列名 数据类型 约束;
alter–删除列–ALTER TABLE employee DROP eage;
alter–添加主键–alter table 表名 add constraint 别名 primary key(字段);
alter–添加外键–alter table 表名 add constraint 别名 foreign key(字段) references 表名(字段);
alter–删除主键–alter table 表名 drop primary key;
alter–删除外键–alter table 表名 drop foreign key 外键名称
alter–修改名字-- #alter table 表名 rename 新表名;#rename table 表名 to 新表名
alter–添加修改、删除约束和修改数据类型:modify–alter table 表名 modify 字段 数据类型 约束
alter–修改字段名称和数据类型:change–alter table 表名 change 字段名 新段名 数据类型 约束;
alter–修改字符集–alter table 表名 character set 字符集
DML:
增: insert into–插入一行数据-- insert into 表名[(字段列表)] values(值);
insert into–插入多行数据-- insert into 表名 values(),(),();
删除:delete–删除全部数据–delete from 表名
delete–按条件删除–delete from 表名 where 字段=值
改:update … set --数据修改–update 表名 set 字段名=值[where 字段=值]
重置表:truncate-- truncate table 表名;
DQL:SELECT
查询所有字段:select * from 表
select 字段1,字段2,…,字段n from 表;
查询指定字段:select 字段 from 表 [where 条件]
去重复:DISTINCT–SELECT DISTINCT 字段 FROM 表;
别名 : AS (可以不写) : 将字段在查询显示的结果中换名字。–
select 字段 as 别名 from 表
条件查询–单条件 :
使用比较运算符–select 字段 from 表 where 字段 = 值
条件查询–多条件 :
select 字段 from 表 where 字段=值 and 字段=值;
范围查找–使用比较运算符和逻辑运算符:
select 字段 from 表 where 字符>=值 and 字段<=值
范围查找–使用between and:
select 字段 from 表 where 字符 between 值1 and 值2
范围查找–离散范围 IN(NOT IN) : 取值范围不连续。 (注意in 和=的区别,当in()里面只有一个值时,in和=是一样的。但是当in()括号里有多个值时,里面的值是一个”或“的关系,即任取里面的一个值都可以成立)
分页-- limit----limit a,b ----->#a表示起始索引,从0开始计算,默认为0。b表示取多少条数据;
排序–order by----order by 字段 asc或者desc; ------>#sc默认升序 desc 降序
模糊查询–like----like “字符%”; ------>#%:指任意个数的任意字符
----like ‘字符_’; ------>#_ : 一位任意字符
8.聚合函数
常用聚合函数:count():统计满足条件的数据条数(行数)
sum(): 统计字段中所有数字的总和。
avg(): 统计字段中平均值
min(): 找到字段中最小值
max(): 找到字段中的最大值
注意: 在使用聚合函数且没有分组情况下,不能在select后面添加查询字段。(即where)
分组----->使用group by 字段,将数据按字段分类规整,可以使用聚合函数的方式来统计分组后的数据条数、求和、最大、最小或者平均。
having:过滤分组后select查询的结果。一般使用聚合函数为判断条件
查询语句的执行顺序:from – where ---- group by— select ----having---- order by — limit
9.子查询
定义:将一个查询的结果作为另一个查询的条件或者表的查询。
1.嵌套查询:将嵌套查询中的查询结果作为外部查询条件时,里面查询字段必须与外面查询条件是主、外键关系。
举例:SELECT Sname FROM student WHERE Sno in(SELECT Sno FROM score WHERE Cno=3105 AND Degree>80
(也可以用=,但建议在使用嵌套查询时,多使用in而不使用=)
2.ANY/ALL: 两个查询语句的比较。可以使用比较运算符。
ANY: 如果使用大于,结果是比后面子句中数据最小的大。如果是小于,结果比后面子句中最大的小。
ALL:如果使用大于,结果只能取比后面子句数据最大的大,如果小于,比最小的小。
3.组合,也叫联合查询,union ,union all 它是纵向拼接多张表的查询结果。查询结果只跟字段有关(字段数必须相同)
union: 具有去重复功能。
union all : 不去重复
( 另外一种写法:select * from table1,table2 where table1.id=table2.sid,将几张表拼接起来)
4.连接:使用join关键字 ,将多张表拼接为一张大表,所有字段都可以从虚拟的大表中筛选出。
内连接:inner join(join)
外连接: 左外连接 (left join): 以左边表为基准表,右边连接的表 中,如果数据更多。则只显示匹配的内容。如果内容更少,则补Null.
右外连接 (right join): 与左外连接相反。
全连接(full join )-- mysql 中不支持全连接。
10.远程授权
语法:
grant all privileges on . to ‘用户名’@‘%’ identiŨed by ‘登录密码’ with grant option;