美文网首页
MySQL基础

MySQL基础

作者: 憨猜猜 | 来源:发表于2019-02-25 20:25 被阅读0次

    一、DDL - 主要提供数据库和表的创建、删除和修改

    0.删除数据库:drop database 数据库名;
    例如:
    drop database school;  -- 直接删除指定数据库
    drop database if exists school;  -- 如果指定的数据库存在就删除数据库
    
    1.创建数据库:create database  数据库名;
    例如:
    create database school; - 直接创建数据库
    create database if not exists school; - 当指定数据库不存在的时候才会创建数据库
    
    create database if not exists school default charset utf8; 
    创建数据库的时候设置字符集编码方式为utf8,让数据库支持中文格式
    
    2.使用数据库:use 数据库名;
    use school;
    
    3.新建表:create table 表名(字段名1 类型1,字段2 类型2 、、、、);
    注意:a.表名一般需要加前缀't'或者'tb'
         b.字段用来确定表中要存储那些数据,字段名随便命名不能使用关键字命名
         c.数据类型必须是MySQL支持的数据类型
    常用数据类型:int整数,char(size)定常字符串,varchar(size)不定长字符串,text字符串,bit布尔,date日期
    注意:一个字段可以添加多个约束,多个约束之间用空格隔开
    auto_increment 只针对主键有效,并且主键的整形
    添加表例子:
    create table t_student
    (
    stuid int not null auto_increment,
    stuame varchar(10) not null,
    gender bit default 1,
    birth date,
    primary key(stuid) 
    //设置stuid为当前表的主键,设置一个字段为主键,其实间接的约束了这个字段的值是唯一的
    );
    
    4.删除表:drop table if exists 表名; --删除后表不存在
    drop table if exists t_student;
    
    清空表中的记录:truncate table 表名;  -删除后表还在
    truncate table t_student; - 清空表中的内容
    
    5.修改表:
    1.添加字段:alter table 表名 add column 字段名 字段类型 约束;
    alter table t_student add column score float(5,2) default 0;
    2.删除字段:alter table 表名 drop column 字段名;
    alter table t_student drop column dender;
    
    

    二、DML(数据操作语言) - 主要针对数据中数据的增、删、改、查

    1.增(添加数据/记录)
    1.1插入数据/记录:insert into 表名 values(值1 ,值2 、、、、) - 依次给指定的表的字段赋值
    insert into t_student values(100 , '张三',0.'2019-2-25');
    1.2插入数据/记录:insert into 表名 (字段1,字段2、、、) values(值1,值2、、、、) -以指定的顺序给指定的字段赋值
    insert into t_student (stuname,birth) values(' 憨猜猜','1998-7-11');
    
    insert into t_student(stuname,birth) values
    ('憨猜猜','1998-7-13'),
    ('小何',date(now())),
    ('王大锤','2011-11-11')
    值的问题:SQL中是数字对应的值直接写,字符串需要使用引号引起来,bit的值只有0或者1;时间可以满足时间格式字符串也可以通过时间函数获取的值
    时间函数:now()-当前时间 year(now())-当前年 month(now())-当前月、、、  date(now()) - 当前日期
    
    2.删(删除数据/记录)
    delete from 表名;  - 删除指定表中的记录
    delete from t_student;
    
    delete from 表名 where 条件语句; - 删除满足条件的记录
    SQL中的条件语句: =  判断是否相等,<>(不等于,和python中的!=功能一样),<,>,<=,>=
    delete from t_student where stuid=100; - 删除t_student表中stuid等于100的值
    
    3.改(修改数据/记录)
    update 表名 set 字段=新值; - 将指定表中所有行的指定列/字段的值赋值成新值
    update t_student set birth='1998-1-11';
    
    update 表名 set 字段1=新值,字段2=新值、、、 where 条件语句; - 将表中满足条件的行中指定的字段的值赋值成新值
    update t_student set gender = 1 where stuname='王大锤';
    
    通配符%:表示任意个数的任意字符(包括0个)
    update t_student set birth='1998-7-13' where stuname like '小%';
    找到表中开头带有小的名字,然后改变birth的值,'%小%'只要名字带小就满足条件
    
    通配符_:表示任意字符
    update t_student set birth='1998-7-13' where stuname like '小_';
    修改stuname只有两个字符,并且第一个字符是小的字段,修改birth
    注意:通配符只针对字符串有效
    
    4.查(获取数据)
    4.1直接查询
    select * from 表名; - 获取指定表中所有的行和所有的列(所有的数据)
    select * from t_student;
    
    select 字段名1,字段名2...... from 表名; - 获取指定表中所有行指定的列
    select stuname,stuid  from t_student;
    
    select * from 表名 where 条件; - 获取指定表中所有满足条件的行的所有列的数据
    select * from t_student where stuname like '%小%';
    select * from t_student where stuid<103;
    
    4.2列重命名
    select 字段1 as 新字段1 , 字段2 as 新字段2 ....from 表名;
    注意:这里的as可以省略
    select stuid as '学号',stuname,genber as '性别' from t_student;
    
    4.3对查询结果重新赋值(一般针对布尔数据)
    select if (字段名,新值1,新值2) from 表名;
    查询指定字段,并且判断对应的值是0还是1,如果是1结果就是值1,是0就是值2
    MySQL写法
    select stuname,if(gender,'男','女') as '性别' from t_student;
    通用写法:select case 字段 when 值 then 新值2 end from 表名;
    select case gender when '男' then '女' end as '性别' from t_student;
    
    4.4对列进行合并
    select concat(字段1,字段2、、、) from 表名;
    select concat(stuname,':',stuid) as 'name_id'from t_student;
    注意:数字和字符串数据可以合并,bit类型的数据不可以合并
    
    4.5模糊查询 - 查询的时候通过like条件来指定查询对象
    SQL中支持逻辑运算and(逻辑与运算)和or(逻辑或运算),not(逻辑非运算)
    select * from t_student where stuname like '%猜%'  or not stuid<108;
    
    4.6排序(先按照之前任何语法进行查询在排序)
    select * from 表名 order by 字段; - 对查询结果按照指定字段的值进行升序排序
    select * from t_student  order by stuname; - 按姓名升序排序
    select * from t_student order by stuid asc;  - 按学号进行升序排序
    select * from t_student order by stuid desc; - 按学号进行降序排序
    
    排序的时候可以在order by 后面添加多个字段,进行联排,排序的时候前面的字段优先级要高一些
    select * from t_student order by gender asc,stuid desc;
    先按照性别进行升序排序,再按学号进行降序排序
    
    4.7限制
    select * from 表名 limit N; - 获取查询结果的前N条数据
    select * from  t_student limit 2;
    
    select * from 表名 limit M offset N; - 对查询结果跳过N个数据,取M数据
    select * from t_student limit 3 offset 4;  - 跳过4个数据,取3个数据
    
    

    相关文章

      网友评论

          本文标题:MySQL基础

          本文链接:https://www.haomeiwen.com/subject/eyngyqtx.html