MySQL知识点

1.创建表
create table 表名(
id int unsigned primary key auto_increment
)

2.删除表
drop table 表名 这个的话,如果存在则删除,不存在就会报错
drop table if exists 表名

3.增加数据
insert into table 表名 value(),()
insert into table(id,age) values()

  1. 修改数据
    update 表名 set age = 18

5.删除数据
delete from 表名

6.数据表中添加一个字段
alter table 表名 add 字段 类型

7.数据表删除一个字段
alter table 表名 drop 字段名

8.distinct 去重,必须放在开头

  1. like ‘孙%’
    id in(北京,上海)
    between 12 and 20
    not age between 20 and 25
    is null 不能用等于
    is not null
    null 不等于空字符串

9.5 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

10.可以将中文进行排序
select * from students
order by convert(name using gbk)
convert 转换
using 使用

11.聚合函数,count,sum,max,min,avg

12.group by name,age 把name,age都一样的分为同一组

13.having 必须用在(group by 字段) 后面

14.where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选

15.select * from students limit 1,3 从第二行(索引为1)开始,共三行
limit 7等价于 limit 0,7
90-2650+140+1040-150-150

16.方式一 :select * from 表一,表二 where 表一.列=表二.列
方式二(又称内连接):select * from 表一 inner join 表二 on 表一.列=表二.列 inner可以省略
内连接不会产生笛卡尔积,就不会产生临时表,可以省内存,性能高

17.自关联:
select * from areas as 省 ,areas as 市

18.子查询:select * from students
where age > (select avg(age) from students)
标量子查询:子查询返回的结果是一个值,一行一列 =
列子查询:一列多行 in
行子查询: 一行多列 select * from students where (sex,age)
= (select sex,age form students where sex=‘男’) order by age desc limit 1
表级子查询:多行多列
select * from scores
inner join
– 把查询出来的结果当作数据源使用
(select * from courses where name in(‘数据库’,‘系统测试’))
19. in, =any, =some 作用是一样的
where age > all(select …) 比里面所有都大

  1. 保留两位小数:select round(avg(age),2) from students

21.可以把表的数据直接插入一个表中:
insert into goods_cates(cate_name) select distinct cate form goods
也可以在创建表的同时直接插入数据:create table …(id…,age…)select …
查询出来的列必须对应表中的字段名,如果找不到,会新建一个字段

22.命令行操作数据库
mysql -u root -p / mysql -uroot -p密码
密码:root
show databases;
use 数据库名;
select …
如果乱码 就修改 -》set charset gbk;
select database(); 查看当前数据库
create database test charset=‘utf8’; 创建数据库
drop database test;删除数据库
show tables;
desc 表名;查看表结构 (查看表的字段及他的类型约束)

23.select concat(123,‘abc) 连接起来 结果 123abc
select length(‘abc’) 结果 3,如果是中文,一个中文长度是3,select * form students where length(name)=3
select left(str,len)从左边截取len个字符,
select right (str,len)从右边截取len个字符,
select substirng(str,pos,len)从pos开始取len个字符
select ltrim(str) 返回删除了左空格的字符串str
select rtrim(str) 返回删除了右空格的字符串str
ltrim(rtrim(str))去两边空格
select lower(str) 大写变小写
select upper (str)小写变大写
select round(n,k) 把数n变成小数点后有k为小数,采用四舍五入
select pow(2,3)2的三次方
select pi() 求圆周率
select rand() 随机数0到1.0的浮点数
select * from students ORDER by RAND() limit 1 随机从表中抽一条记录
select current_date()当前日期
select current_time()当前时间
select now()当前日期时间
select date_format(now(),’%Y’) 把当前时间格式化 ymdhis 分别代表年月日时分秒,大写H代表24进制,小写代表12进制
select
case 1
when 1 then ‘one’
when 2 then ‘two’
else ‘three’
end
as result

24.自定义函数
create function 函数名称(参数列表) returns 返回类型
begin
sql语句
end

25.delimiter 符号
意思是在命令行里面把这个符号设置成两条查询语句的间隔符

26.存储过程
create procedure 存储名称
begin
select …
end

27.call 存储名称 : 打开存储的内容
存储过程和函数都是一次编译,就会被缓存起来
目的减少网络交互,减少网络访问流量

28.当有一些查询语句以后需要使用的时候,可以把语句存入视图,下次直接使用视图
视图
create view 名称 as
select …
就是把select语句存入视图中,然后select * from 名称 就会执行select查询的结果
视图另一个好处,对于一些重要的数据,可以用视图把它真正的字段隐藏起来

29.事务的4个特性(ACID):

  1. 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。

  2. 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。(实例:转账,两个账户余额相加,值不变。)

  3. 隔离性(isolation):一个事务的执行不能被其他事务所影响。

  4. 持久性(durability):一个事务一旦提交,事物的操作便永久性的保存在DB中。即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
    事务:# 开启事务
    begin;
    或:
    start transaction;

    回滚

    注:回滚后,事务结束
    rollback;
    # 提交
    注:提交后,事务结束
    commit;

    begin;
    

    select。。。
    commit;
    rollback;

  1. 开启运行时间监测 set profiling=1;
    查看执行时间 show profiling;

31.查看索引:show index from 表名; 索引相当于建立了一个目录,所以快,原理是使用二叉树,索引是有大量数据的时候才建立的,没有大量数据反而会浪费时间
创建表时创建索引: create table 名称(
id int primary key,
name varchar(10)unique,
age int,
index in(age)); 有三个索引,id,name,age,主键也算一个索引
对于已经存在的表添加索引
create index 索引名称 on 表名(字段名称(长度))
删除索引:drop index 索引名称 on 表名;
缺点:能提高查询速度,但是会降低更新表的速度

  1. 外键
    alter table 从表名 add constraint 外键名称 foreign key (从表字段) references 主表名 (主表字段)
    从表就是被约束的,不能超过主表的约束范围
    缺点:很少使用,极大地降低更新的效率,因为每次更新都要查一下主表是不是有那个内容,没有就不能添加
    删除外键:alter table 表名 drop foreign key 外键名称
    show create table stu 可以查看到外键

33.修改密码
知道密码时 update user set password = password(新密码) where password = ‘用户名’
flush privileges 刷新权限 新密码才能用

34.忘记root密码怎么办
找到配置文件,mysqld(不是mysql),在它的下一个添加skip-grant-tables(跳过权限检查),然后重启mysql就能免密登录,
然后可以设置密码再把skip-grand-tables删了

35.查看引擎:show engine

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值