当前位置:Gxlcms > 数据库问题 > mysql数据库sql语句

mysql数据库sql语句

时间:2021-07-01 10:21:17 帮助过:22人阅读

//针对于数据库和表,creat drop alter select DCL:数据控制语言 //grant...if DML:数据操纵语言 //操作表中数据,insert delete update DQL:数据查询语言 //查询:select 1.数据库的创建/删除/查/切换 a)Create database 数据库名称 //创建数据库 b)Drop database 数据库名称 //删除数据库 c)Show databases //查看所有数据库 d)Use 数据库名称 //切换数据库 2.数据表的操作 创建/删除/修改/show 1 Creat table 表名(字段名1 类型 约束, 字段名2 类型 约束。。。) //创建表格 i.类型: Java中的类型 MySQL中的类型 byte/short/int/long tinyint/smallint/int/bigint float float double double boolean bit char/String char和varchar类型 //char 表示固定长度的字符串,varchar表示可变长度的字符串 定义时需指定长度。 Date date/time/datetime/timestamp //datetime 与datestamp均表示日期时间,区别datetime默认null,datestamp默认当前系统时间 file blob/text ii.约束: primary key //主键约束 not null //非空约束 unique //唯一约束 2 show tables //查看所有表 desc 表名 //查看某个表结构 3 Drop table 表名 //删除 4 修改表: alter table 表名 add 列名 字段类型(长度) [约束] //添加列 alter table 表名 drop 列名 //删除列 alter table 表名 change 旧列名 新列名 字段类型(长度) [约束] //修改列名 alter table 表名 modify 列名 字段类型(长度) [约束] //修改字段类型/长度/约束 alter table 表名 rename to 新表名 //修改表名 rename table 表名 to 新表名 alter table 表名 chatacter set 新字符集 [collate字符集校验规则] //修改字符集 3.表记录操作 1 添加数据 Insert into 表名(列1,列2,列3) values(值1,值2,值3) //添加部分数据 insert into 表名 values(值1,值2,值3 。。。) //添加数据 2 修改数据 update 表名 set 列1=值1,列2=值2,...[where 条件];//省略where条件则修改整列值 3 删除数据 delete from 表名 [where 条件] //删除满足条件的记录 delete from 表名 //删除所有记录,一行一行删 truncate table //删除表,将表删除,然后创建一张和之前表结构相同的新表trancate table 4 基本查询 select * from 表名 where 条件 //按一定条件查询记录 select * from 表名 where name like "李%"; //模糊匹配 "%"代表0个或者多个占位符 "_"表示一个占位符,还可以not like 。。。 select * from 表名 where name in (a,b,c...) //在指定范围内查找记录,也可以使用between...and... 实现,前面可以加not select * from 表名 where english >86 AND english <100; //查找英语成绩在80-100之间的记录,and ->与,or->或,not->否定 select * from 表名 where name is null //用is null 判断是否是空,is not bull 5 聚合函数: sum(字段名) //求和,下面类似 avg() //求平均值 count(*) //统计个数 min() //求最小值 max() //求最大值 ifnull(字段名,值) //任何值和null相加均为null,用ifnull,如果该字段是null 那么用给定的值代替,不为null则返回原来的值 拓展: length(刘a) -->4 //计算字段值的长度,不属于聚合函数,一个中文占3个字符 charlength(刘a) -->2 //字符长度 6 分组函数 group by 字段名 [having 条件] 总结 selectfrom 表名 where 条件 group by 字段名 hanving 条件 order by asc/desc; having :当条件有聚合函数或者分组之后还需筛选,那么使用having过滤,其他情况用where where : 是对原始表中数据进行过滤,having是对查询结果进行过滤 执行顺序:from...where...group by...select...having...order by 分页查询 select * from table limit 3,5; //其中3表示从第四条记录开始,5表示查询5条数据
MySQL多表&事务
1.数据库的密码重置,备份和还原
    1 密码重置:跳过权限开启服务:mysqld –skip-grant-tables-->重新开启cmd,登录mysql-->use mysql-->update user set password=password(‘123’) where user=’root’;-->结束mysqld.exe,重新开启服务
    2 数据库还原:方式1:create database db3;-->退出数据库:\q 回车-->mysql -uroot -p db3 < c:/db3.sql
                    方式2:create database db3;-->source c:/db3.sql;
2.表与表之间的关系的建立
    1 一对多:在多的一方添加外键指向一的一方的主键
        添加外键:
            sql语句实现:foreign key (did) references dept(did)    //在创建表是添加语句:
                        constraint abc foreign key (did) references dept(did)  //abc 为之地指定的约束名,后续可通过名字删除外键
                        alter table employee add constraint abc foreign key (did) references dept(did) //在创建表之后添加外键
            工具实现:
    2 多对多:创建一张中间表,在中间表中至少有2个字段分别设置外键指向多对多双方的主键;
        
    3 一对一:假设其中一的一方为多的一方,在多的一方添加外键指向一的一方的主键,并且给外键再设置一个唯一约束
    
3.多表查询
    1 连接查询
        交叉连接:-->cross join
            select * from 表1 cross join 表2;    //查询到两个表的笛卡儿积
            select * from 表1,表2;                //省略了cross join
            
        内连接-->inner join 
            显示内连接    
                select * from 表1 inner join 表2 on 关联条件        //也可用where连接条件
            隐式内连接    
                select * from 表1,表2 where 关联条件; //较为常用
            
        外连接-->outer join 
            左外连接:
                select * from 表1 left outer join 表2 on 连接条件;
            右外连接:
                select * from 表1 right outer join 表2 on 连接条件; //outer均可省略
            
    2 子查询
        使用场景:一个查询语句的条件需要依赖另一个查询语句的结果就叫子查询,也就是说sql语句可以嵌套使用。
        分类
            带in的子查询:在给定的结果内查询
            带exists 子查询:如果exists后面的查询结果存在,执行前面的sql语句
            带any子查询:只要符合any后面查询语句的任何一个结果就行   //放在关系表达式中,表示任意
            带all的子查询:要符合all后面查询语句中的所有结果才行。    //表示所有
            
4.事务的概述-->指的是一组逻辑操作,要么同时成功要么同时失败。start transaction  commit   rollback
    使用事务:
        开启事务:start transaction
        提交事务:commit;
        回滚事务:rollback;
        
    四大特性:
        原子性:组成事务的最小单元是不可分割的,要么同时成功要么同时失败。  //同时成功,同时失败
        一致性:执行事务前后,数据的完整性是一致的;(也就是案例中总钱数是一样的)  //数据完整性
        隔离性:在数据库中,各个事务之间应该是独立的,不应该受其他事务的影响。 //独立
        持久性:事务一旦结束,数据就会序列化到数据库中。    
        
    事务的隔离级别:
        read uncommitted:脏读,不可重复读,虚读都有可能发生
        read committed    :避免脏读。但是不可重复读和虚读是有可能发生
        repeatable-read    :避免脏读和不可重复读,但是虚读有可能发生。
        serializable:避免脏读,不可重复读,虚读。
        从上到下级别越来越高,但是效率越来越低。

    脏读:一个事务读到了另一个事务未提交的数据。
    不可重复读:一个事务读到了另一个事务已经提交的update数据
    虚读/幻读:一个事务读到了另一个事务已经提交的insert数据

            
            
            
            

 

mysql数据库sql语句

标签:模糊匹配   ant   truncate   action   事务的概述   base   modify   记录操作   col   

人气教程排行