-
数据库
-
1.创建库 create database 库名 character utf8/gbk
2.删除库 drop 库名
3.使用库 use 库名
4.查看所有库 show databases
5查看指定库详情 show create 库名
表
-
1.创建表 create table 表名(字段1,字段2…)charset utf8/gbk
2.删除表 drop table 表名
3.插入指定字段的值 update 表名(字段1,字段2)values(值1,值2),如果值与字段类型全部匹配,则不用写字段名.
4.查看表详情 show create 表名
5.修改表名 alter table 旧表名 to 新表名
6,修改字段名和类型 alter table 表名 change 原名 新名 新类型
7.插入字段名 alter table 表名 add 字段名 类型,first/afterXXX
8.删除字段名 alter table 表名 drop 字段名
9.查看字段
与数据相关
-
1.插入数据 insert into 表名 (字段1,字段2…)values(值1,值2)
2.修改数据 update 表名 set xxx=xxx,xxx=xxx where条件
3.删除数据 delete from 表名 where 条件
4.查询数据 select * from 表名
数据类型
-
1.整型 int(n) bigint n表示显示的长度
2.浮点数 double
3.日期 date(年月日) time(时分秒) datatime(年月日时分秒1970.) timestamp(表示当前时间,当插入数据为null时为触发)
4.字符串 char(五) varchar(6535超出255用后面那个) text
主键约束 primary key
-
1.什么是约束,约束就是创建表时,给字段添加的限制条件
2.主键表示唯一性,且不能重复
3.主键加自增 primary key auto_increment
导入sql文件
- 1.linux系统 source /文件路径 window 关键字
-
1.is null () is not null
2.distinct(去重)
3,and 和 or 相当于java里面的 &&和||
4.between(x and y)在x和y之间 not between(x and y)在它们之外
5.in(x y z)取它们其中一个
6.order by (排序的字段) (排序)asc默认升序,desc降序
7.group by(字段名)(分组) 假设两个字段,你要保证字段1字段2,想成一个字段去进行分组
8.模糊查询 字段名 like %0-无数且任何字符 _表示一个字符,%%null查询不到
聚合函数
-
`1.平均值 avg(n)
2.求和 sum(n)
3.最大值 max(n)
4.最小值min(n)
5.计数count(*)包括null 如果加入字段则不包括null
6.limit(x,y) x代表请求的条数,y代表请求的条数
运算符
1.+ - * / % < > = != <> =< >=
having
-
1.where和having的执行级别不同
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。
还有一种来进行分辨什么时候用having和where,1如果是给自己表里存在的字段做筛选那么就用where,如果是给不存在的字段(就是表里直接看不到的字段,比如count(*)这个字段看不到,需要聚合函数来查)这种一般用having,having作用于group 后面
下面有两张表来展示结果集
beauty
boys表
如果为一个表起了别名,那么它在后面用的就是它的别名,写原名不好使
select user.id from user u
-
嵌套查询,子查询
- 1.查出来的内容给另一个查询语句使用 等值查询,和内连接查询
- 1.等值查询 select * from a,b where a.id=b.id
-
2.内连接查询 select * from a join b on a.id=b.id where XXX
这两个查询结果一样,后者更好,因为可以用where进行筛选
前者也可以,加上and就行
非等值连接 select * from a,b where a.id between b.se and b.ee
外连接
-
1.外连接分为左外,或右外连接
2.如果查询两张表的交集就用内连接.
3.查询一张表的全部数据根另一张表的交集数据,就用外连接.
交叉连接就是笛卡尔查询,两张表数据相乘,
全外连接,mysql不支持,起始就是把你两张表,连接到,或不连接到的都查出来,没有连接字段的用null来进行表示
关联关系
: 1.一对一,通常设置从表为外键(一张表可以分为两张表,这样在查询的时候,就不必要查询那些不经常用的数据,把它分离出来就是从表),指向主表的主键
: 2.一对多,把多的那张表设置为外键,指向少的那张表的主键
3.多对多 新建一张表来存储它们之间的联系
约束
1.一种限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性
-
not null(非空约束)
- 用于保证该字段的值不能为null,比如姓名,学号. default(默认)
- 1,用于保证该字段有默认值 比如 性别 primary(主键)
-
1,用于保证该字段唯一性,且非空,比如学号,员工姓名等。
2,主键只能允许一个,但是可以多个字段组合为一个主键,记住这也是一个主键,只是原来的判断一个字段重复变为现在判断两个字段重复而已.
(unique唯一约束)
- 1,唯一约束可以为null,但不能重复 check(检查约束!Mysql不支持)
- 1满足条件的才添加,比如性别 man or girl,年龄 foreign key(外键约束)
- 1,限制两个表的关系,用于保证,必须保证该字段来自主表的关联列的值.
-
2,在从表中添加外键约束,用于引用主表中某列的值
foreign key(当前表的列外键) references 另一张表的名(另一张表名的主键)
3,外键引用的值,必须是key 或者 unique(唯一)
添加约束的时机
-
1.创建表时
2.修改表时
约束的添加分类
- 列级约束 六大约束语法支持,但外键约束没有效果
- 表级约束 除了非空,和默认其余都支持